InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

Googleは、Key-ValueデータストアであるLevelDBをオープンソース化した

作者 Abel Avram , 翻訳者 尾崎 義尚 投稿日 2011年8月4日

セクション
運用/インフラ,
設計/アーキテクチャ,
デベロップメント
トピック
Google ,
オープンソース ,
Architecture ,
プログラミング

原文(投稿日:2011/07/29)へのリンク

Googleは、新しいBSDライセンス下でLevelDBをオープンソース化した。LevelDBは、置き換え可能なソートメカニズムによってソートされた任意のバイト配列で、キーと集約された値による埋め込み型のkey-valueデータベースである。データストアは非常にシンプルで、PutGetDeleteによる前方、後方への反復コマンドが許可されている。

データはSnappyを使って自動的に圧縮している。圧縮ライブラリは、GoogleのBigTable、MapReduce、RPC で使用されており、4月にオープンソース化されている。 LevelDBにはいくつかの制限がある。SQLクエリやインデックスをサポートしない、ひとつのプロセスでマルチスレッドをサポートしており、他のプロジェクトとその問題に対する利点である。

LevelDBは、バッチ書き込み操作に最適化されている。複数の変更はメモリ上で蓄積され、ソートされて、構成されたファイルサイズに達したときにディスクに書き込まれる。 結果として、シーケンシャルとランダム書き込み、シーケンシャル読み込みでよいパフォーマンスを発揮しており、Googleのパフォーマンスベンチマークによるといくつかのテストでは、SQLLiteと比較して2桁をたたき出している。 SQLiteは、ランダムリードではLevelDBよりも若干早く、大きな値の書き込みでは少なくても2倍高速である。 LevelDBはまた、同じようなkey-valueストアであるKyoto Cabinetよりもよいが、SQLiteとは比較にならない。 またRiakによるLevelDBとInnoDBとのいくつかの比較テストでは、GoogleのDBがInnoDBよりも優れており、いくつかのテストでは、近いパフォーマンスであった。

LevelDBは、C++で書かれており、少しの外部依存があるが、Windows、Mac OS X、Android、そしていくつかのUNIXへの移植に成功している。LevelDBは、IndexDB APIを実装した実験バージョンのChrome、ストレージノードレベルのRiakと、3Dマッピングソフトウェアの会社であるUpNextによって使われている。