LevelDB は、 GoogleフェローのJeffrey DeanとSanjay Ghemawatによって書かれたオープンソースのディスク上のキーバリューストアです。[ 2 ] [ 3 ] Bigtableに触発されたLevelDB のソースコードは、New BSD ライセンスの下で GitHub でホストされており、さまざまなUnixベースのシステム、macOS、Windows、およびAndroidに移植されています。[ 5 ]
LevelDBは、キーと値を任意のバイト配列に格納し、データはキーに基づいてソートされます。バッチ書き込み、順方向および逆方向のイテレーション、そしてGoogleのSnappy圧縮ライブラリによるデータ圧縮をサポートしています。
LevelDBはSQLデータベースではありません。他のNoSQLやdbmストアと同様に、リレーショナルデータモデルを持たず、SQLクエリをサポートしていません。また、インデックスもサポートしていません。LevelDBはサーバーやコマンドラインインターフェースを提供していないため、アプリケーションはライブラリとして利用します。
MariaDB 10.0には、ユーザーがMariaDBからLevelDBテーブルをクエリできるストレージエンジンが付属しています。[ 6 ]
LevelDB は、Google のBigtableデータベース システムの概念に基づいています。Bigtable システムのテーブル実装は 2004 年頃から開発が開始され、LevelDB のコードとは異なる Google の内部コード ベースに基づいています。そのコード ベースは、それ自体がオープンソース化されていない多数の Google コード ライブラリに依存しているため、そのコードを直接オープンソース化することは困難でした。Jeff Dean と Sanjay Ghemawat は、依存関係が最小限でオープンソース化に適しており、IndexedDB実装のために Chrome で使用するのにも適した Bigtable タブレット スタックに似たシステムを作成したいと考えていました。彼らは、Bigtable タブレット スタックと同じ一般的な設計で、コードを一切共有せずに、2011 年初頭から LevelDB を書き始めました。[ 7 ]
LevelDB はGoogle ChromeのIndexedDBのバックエンド データベースとして使用され、 Riakでサポートされているバックエンドの 1 つです。[ 8 ]さらに、Bitcoin Coreと go-ethereum はLevelDB データベースを使用してブロックチェーンメタデータを保存します。 [ 9 ] Minecraft Bedrock Edition は、チャンクとエンティティ データ ストレージに修正版を使用します。[ 10 ] Autodesk AutoCAD 2016 も LevelDB を使用します。
Google は、さまざまなシナリオでLevelDB のパフォーマンスをSQLiteおよびKyoto Cabinetと比較したベンチマークを提供しています。 [ 11 ] LevelDB は、書き込み操作とシーケンシャル順序の読み取り操作で SQLite と Kyoto Cabinet の両方を上回ります。LevelDB はバッチ書き込みでも優れていますが、大きな値を扱う場合は SQLite より遅くなります。現在公開されているベンチマークは、結果の以前のバージョンで SQLite の設定ミスが指摘された後に更新されました。[ 12 ]更新されたベンチマーク[ 13 ]では、LevelDB がBerkeley DBも上回っていることが示されていますが、これらのテストでは、OpenLDAP LightningDBが読み取り操作と一部の書き込みタイプ (たとえば、バッチ書き込みと同期書き込み、上記のリンクを参照) ではるかに高速 (一部のシナリオでは約 10 倍) であり、テストの残りの部分ではほぼ同等であることも示されています。
上記のベンチマークはすべて2011年から2014年のものであり、例えばSQLiteが大幅に効率化されてからは、歴史的な意義しか持たないかもしれない。[ 14 ]
LevelDBにはデータベース破損バグの歴史があります。[ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] 2014年の調査では、チェックサムのないファイルシステムでは、クラッシュや停電後にデータベースが破損する可能性があることがわかりました。[ 21 ]