このプロジェクトについて

LevelDBは、GoogleでSanjay GhemawatとJeff Deanによって開発された組み込み型キーバリューストレージライブラリです。文字列キーから文字列値への順序付けられたマッピングを提供し、独立したサービスとして実行するのではなく、アプリケーションに直接リンクされることを意図しています。 READMEに記載されている主な機能は次のとおりです。 - キーと値は任意のバイト配列であり、データはキーでソートされて保存されます。 - 呼び出し元はカスタム比較関数を提供して、デフォルトのソート順を上書きできます。 - 主要な操作はPut(key,value)、Get(key)、Delete(key)です。 - 複数の変更を1つのアトミックバッチで適用できます。 - ユーザーはデータの一貫したビューを得るために一時的なスナップショットを作成できます。 - データの前方および後方反復がサポートされています。 - データはSnappyで自動的に圧縮され、Zstdもサポートされています。 - ファイルシステム操作などの外部アクティビティは仮想インターフェースを介して中継され、OSとのやり取りをカスタマイズできます。 プロジェクトが述べている重要な制限事項:SQLデータベースではなく、リレーショナルモデル、SQLクエリ、インデックスサポートはありません。同時にデータベースにアクセスできるのは単一のプロセス(マルチスレッドは可能)のみです。また、組み込みのクライアントサーバーサポートはないため、それを必要とするアプリケーションはライブラリの周りに独自のサーバーをラップする必要があります。 このリポジトリは非常に限られたメンテナンスしか行われていません。メンテナは、データ損失やメモリ破損などの重大なバグの修正と、内部でサポートされているLevelDBクライアントに絶対に必要な変更(通常は言語、標準ライブラリ、OSの更新による破損を修正するため)のみをレビューすると述べています。貢献は、テスト済みプラットフォーム(LinuxおよびmacOS向けPOSIX、またはWindows)を対象とし、安定したAPIを維持し、テストを含み、Google C++ Style Guideに従うことが期待されています。ビルド設定の変更は受け入れられる可能性が低いです。プルリクエストには、Google Contributor License Agreementへの署名と、mainへのsquash/rebaseが必要です。 ビルドはCMakeをそのまま使用します。POSIXでは、一般的なクイックスタートは、ビルドディレクトリを作成し、Releaseビルドタイプでcmakeを実行し、その後ビルドします。Windowsでは、CMakeはVisual Studio 2017のプロジェクト/ソリューションファイルを生成でき、64ビットターゲットのオプションがあり、ソリューションはコマンドラインまたはVisual Studio内でビルドできます。 READMEには、同梱のdb_benchプログラムによるパフォーマンスレポートが含まれており、16バイトのキーと100バイトの値を持つ100万エントリのデータベースを使用しています。書き込みベンチマーク(fillseq、fillsync、fillrandom、overwrite)と読み取りベンチマーク(readrandom、readseq、readreverse)が報告されており、結果はノイズが多く、バックグラウンドコンパクションが読み取りパフォーマンスを向上させることが記載されています。公開インターフェースはinclude/leveldb/*.hにあり、db.hが主要なエントリポイント、options.hがデータベースおよび操作ごとの動作、comparator.hがカスタム順序付け、iterator.hが反復、write_batch.hがアトミック更新、slice.hとstatus.hがヘルパー、env.hがOS抽象化、table.h/table_builder.hがほとんどのクライアントが直接使用しない低レベルモジュールです。ドキュメントはソースツリーのdoc/の下に同梱されています。