Google BigTable 이나 Cassandra에서 사용하고 있는 Log-Structured Merge-Tree 라는 이름의 데이터 구조. 주로 RDBMS에서 사용 되고 있는 B+Tree와 비교해서 쓰기 성능이 우수하다는 특징을 가지고 있다.

 

 

HBase에서의 LSM-tree

HBase Log-Structured Merge-tree (LSM-tree)라는 기술을 사용하여 데이터를 읽고 쓴다.

LSM-tree Memtable, SS Table, Commit Log라는 3 개의 저장 공간을 사용한다.


Memtable는 메모리상의 영역으로 HBase 용어로 말하면 MemStore 이다.

SS Table은 디스크 공간으로 HBase 용어로 말하면 HFile 이다.

Commit Log는 디스크 공간으로 HBase 용어로 말하면 HLog 이다. WAL (Write Ahead Log 선행 미리 쓰기 로그)이다.


HBase에서 데이터를 쓰면 Memstore HLog에 기록된다.

Memstore이 일정량에 도달하면 HFile에 기록된다. HFile는 한 번 만들어지면 업데이트 되지 않는다. HFile은 여러 세대로도 만들 수 있다. 차이가 누적되는 이미지다. 이 부분은 Subversion 이나 Mercurial와 비슷하다. 여러 HFile을 모은 것을 컴팩션 이라고 한다.

 

 

MongoDB 3.0 에서의 LSM-tree

2 월에 출시 된 3.0는 스토리지 엔진을 선택할 수 있으며 새로운 스토리지 엔진으로 WiredTiger를 선택할 수 있다. 물론 기존의 엔진인 "MMAPv1"도 계속 사용할 수 있다.

 

WiredTiger의 장점

쓰기 성능 7-10 UP!

파일 크기가 최대 80% 압축!

다중 버전 동시성 제어 (MVCC)

다중 문서 트랜잭션

로그 구조 병합 트리(LSM 트리) 지원

저작자 표시
신고
by 흥배 2015.05.06 08:00
| 1 |