LevelDB
LevelDB는 구글의 Jeffrey Dean과 Sanjay Ghemawat이 만든 key/value DB입니다.
key/value DB는 많이 있습니다만 두 사람은 위 링크에서 알 수 있듯이 Google File System, MapReduce, BigTable 등을 만들었기에 좀 자세히 살펴보았습니다.
WebKit SVN에 들어간 LevelDB 코드를 보면 일단 공개한 목적은 구글 크롬 웹 브라우저에 쓰려는 것으로 보입니다.
구글 크롬은 쿠키와 역사 등을 저장하기 위해 현재 SQLite를 쓰고 있습니다. 그러나 이를 위해 SQL의 복잡함이 필요하지는 않습니다. 또한 구글 크롬은 아주 이른 버전부터 SQLite DB가 깨지는 문제를 겪어왔습니다. 이에 대한 더 자세한 내용은 구글 크롬 개발자 Brett Wilson이 쓴 Using SQLite in client applications을 참고하시기 바랍니다. 아마도 이런 문제에 대처하기 위해 LevelDB는 key/value 쌍을 디스크에 저장할 때 체크섬을 같이 저장하고 깨진 DB를 복구하는 기능을 제공합니다.
Hacker News 토론에서 LevelDB의 저자인 Sanjay Ghemawat은 다른 key/value DB와 LevelDB를 비교했습니다.
Basho 사의 Bitcask에 대해서는: 1) LevelDB는 키 순서 반복과 range query를 지원하고 2) 키가 많은 경우 Bitcask가 많은 메모리를 사용할 수 있으며 3) 반면 Bitcask는 검색당 최대 한 번의 disk seek만 일어난다는 것을 보장할 수 있지만 LevelDB는 좀 더 많은 disk seek가 필요할 수 있다고 합니다.
LevelDB is a persistent ordered map; Bitcask is a persistent hash table (no ordered iteration). Bitcask stores a fixed size record in memory for every key. So for databases with large number of keys, it may use too much memory for some applications. Bitcask can guarantee at most one disk seek per lookup. LevelDB may have to do a small handful of disk seeks.
FAL Labs 사의 TokyoCabinet에 대해서는: 1) 심각하게 고려했고 2) 네트워크 서버(TokyoTyrant)를 제공하기 때문에 LevelDB보다 더 나은 선택일 수 있지만 3) 자료 구조상의 차이로 빠른 random write를 제공하지 못하는데 random write가 필요했다고 합니다.
TokyoCabinet is something we seriously considered using instead of writing LevelDB. TokyoCabinet has great performance usually. I haven't done a careful head-to-head comparison, but it wouldn't surprise me if it was somewhat faster than LevelDB for many workloads. Plus TokyoCabinet is more mature, has matching server code etc. and may therefore be a better fit for many projects. However because of a fundamental difference in data structures (TokyoCabinet uses B-trees for ordered storage; LevelDB uses log structured merge trees), random write performance (which is important for our needs) is significantly better in LevelDB.
LevelDB는 BSD 라이선스의 오픈 소스 소프트웨어이며 구글 코드 호스팅에 SVN 저장소를 두고 구글 그룹에 있는 LevelDB 메일링 리스트에서 개발 토론이 진행되고 있습니다.
댓글
소개글 잘 봤습니다.
소개글 잘 봤습니다.
재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.
아이디의 아이디어 무한도전
http://blog.aaidee.com
귀태닷컴
http://www.gwitae.com
잠간 봤는데, single-process 에서만
잠간 봤는데, single-process 에서만 동작되는 듯 하네요. Single-Process, Thread-Safety.
Multi Process 를 찾고 있었는데 조금 아쉽네요. 그냥 gdbm 인가요 +_+;
목적을 찾아서... jiNoos
gdbm
네 그냥 많이 업된 gdbm입니다.
댓글 달기