피드로 돌아가기
Dev.toDatabase
원문 읽기
LSM Tree 기반 Append-only 구조를 통한 고가용성 Write 최적화 설계
Cassandra Internals: LSM Tree, SSTables, and Compaction
AI 요약
Context
B-Tree 기반 엔진의 Page Split 및 Locking으로 인한 Write 지연과 성능 변동성 발생. 고부하 Write 환경에서 인덱스 업데이트 비용이 시스템 병목으로 작용하는 한계 직면.
Technical Solution
- Disk 수정 없이 모든 쓰기를 Append 방식으로 처리하는 LSM Tree 구조 채택
- Write Path 단순화를 위해 CommitLog 기록 후 Memtable에 순차 저장하는 메커니즘 구현
- Memtable 포화 시 Immutable SSTable로 Flush 하여 Disk I/O 효율 극대화
- Bloom Filter와 Partition Index를 활용한 SSTable 탐색 범위 축소로 Read 비용 최적화
- Compaction 프로세스를 통한 SSTable 병합 및 Tombstone 제거로 데이터 정합성 유지
- Application 레벨의 Denormalization을 통한 Access Pattern별 전용 테이블 설계로 Read 성능 확보
실천 포인트
- 초당 수백만 건의 Write가 발생하는 워크로드인 경우 B-Tree보다 LSM Tree 구조 검토 - Read 성능 최적화를 위해 Query 패턴별로 데이터를 중복 저장하는 Denormalization 전략 수립 - Write Amplification과 Read Complexity 간의 Trade-off 분석을 통한 적정 Compaction 주기 설정 - 데이터 유실 허용 범위에 따라 CommitLog Sync 모드(Periodic vs Batch) 선택