2016-08-03 8 views
1

LSM Tree는 많은 비 -sql 엔진에서 성공적으로 사용되었습니다. 데이터는 해싱 테이블과 같은 키별로 정렬되어 kv 저장소를 넘어 많은 잠재적 인 사용을 가능하게합니다. 예를 들어, 시계열 데이터베이스 (TSDB)는 레벨 DB를 엔진으로 사용하는 것이 적합 할 수 있습니다. 전통적인 RDBMS와 많은 테이블 시스템은 어떨까요? 데이터 엔진과 같은 LSM-tree도 잘 맞습니까?LevelDB와 같은 LSM 트리를 RDBMS의 스토리지 엔진으로 사용

답변

1

경우 일 수 있습니다. leveldb의 강점 (즉, 빠른 순차 읽기)을 이용하는 방식으로 색인을 설계한다면 잘 작동 할 것입니다.

실제로 leveldb (linqdb) 위에 작은 관계형 데이터베이스를 작성했습니다. 여기서 색인은 키 - 값으로 저장된 열의 값만 정렬됩니다. 내 연구 결과는 이러한 구조를 쿼리하는 것이 sqlite의 인덱싱 된 열 (약 40 % 느린)만큼 빠르지는 않지만 큰 차이로 성능이 뛰어나다는 것입니다.

물론 쿼리 속도에는 여러 가지 요소가 있습니다. LSM은 글쓰기에서 가장 빛나는 기본 데이터 구조입니다.

사실 here

+0

추가 정보를 원하시면, 우리는 테이블 시스템을 구축,하지만 읽거나 일괄 쓰기는 일반적인 사용 사례가 될 수있다 위해 노력하고 있습니다. 현재 우리는 메모리 내 해시 인덱스를 사용하고 있지만 범위 쿼리와 정렬 된 쿼리를 지원하지 않습니다. 나는 많은 양의 메모리와 그 키를 저장하지 않기 때문에 LSM을보고있다. –

+0

@bugs king LSM은 디스크 (merge sort로 작성된 데이터의 큰 덩어리)에 가장 잘 맞습니다. 따라서 메모리 인덱스가 – ren

+0

인 가장 좋은 점은 실제로는 lsm-tree 기반의 개발중인 mysql입니다. myrocks라고하지만 성능 및 대기 시간에 대한 통찰력에 대한 리소스가 부족합니다. –