LevelDB

feanor의 이미지

LevelDB는 구글의 Jeffrey DeanSanjay 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가 필요할 수 있다고 합니다.

Quote:
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가 필요했다고 합니다.

Quote:
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 메일링 리스트에서 개발 토론이 진행되고 있습니다.

댓글

cleansugar의 이미지

소개글 잘 봤습니다.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

jinoos의 이미지

잠간 봤는데, single-process 에서만 동작되는 듯 하네요. Single-Process, Thread-Safety.
Multi Process 를 찾고 있었는데 조금 아쉽네요. 그냥 gdbm 인가요 +_+;

목적을 찾아서... jiNoos

feanor의 이미지

네 그냥 많이 업된 gdbm입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.