LSM-Tree는 무작위 디스크 갱신을 줄이기 위해 메모리에서 쓰기를 흡수한 뒤, 가득 차면 SSTable로 내리고 백그라운드에서 다시 합칩니다.
새 레코드를 MemTable에 먼저 기록
메모리 쓰기라 매우 빠르고, 디스크 랜덤 I/O를 바로 만들지 않습니다.
MemTable이 차면 디스크에 SSTable로 순차 저장
기존 페이지를 제자리 수정하지 않고, 읽기 전용 파일을 하나 더 만듭니다.
쌓인 SSTable은 Compaction으로 병합
중복과 오래된 값을 정리해 공간 효율을 높이고 검색 범위를 줄입니다.
읽을 때는 이렇게 확인
MemTable → 최신 SSTable → 오래된 SSTable 순으로 찾기 때문에, 읽기는 B+Tree보다 더 많은 파일을 확인할 수 있습니다.
잘 맞는 워크로드
RocksDB, LevelDB, Cassandra, HBase처럼 쓰기 비중이 높고 로그·시계열 유입이 큰 시스템
둘 다 정렬된 검색 구조지만, B+Tree는 즉시 갱신 중심이고 LSM-Tree는 배치 정리 중심입니다.
한 줄 정리
읽기 지연을 최소화하려면 B+Tree, 쓰기 유입량을 오래 버텨야 하면 LSM-Tree가 더 잘 맞습니다.