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

sledはRustで書かれた組み込みデータベースで、作者によってベータ版ソフトウェアと説明されています。そのAPIはスレッドセーフなBTreeMap<[u8], [u8]>に似ており、基本的な挿入、取得、範囲、削除、比較-and-スワップ操作はRust開発者にとって馴染み深いものです。 READMEに記載されている主な機能には、複数のキースペースにわたる複数キーのアトミックな読み書きのためのシリアライズ可能なACIDトランザクション、完全にアトミックな単一キー操作、ゼロコピー読み取り、書き込みバッチ、キープレフィックスへの変更の購読、複数のキースペース、マージ演算子、前方および逆方向の範囲イテレータ、そしてクラッシュセーフな単調増加IDジェネレータが含まれます。オプションのzstd圧縮は、デフォルトで無効になっているビルドフィーチャーの背後で利用可能です。 実装は、ロックフリーログ上のロックフリーページキャッシュ上のロックフリーツリーとして説明され、フラッシュ最適化されたログ構造化ストレージ設計を採用しています。共有プレフィックスを持つ長いキーのストレージコストを削減するために、プレフィックスエンコーディングやサフィックストランケーションなどのbツリー技術を使用しています。READMEは、LSMツリーのような書き込みパフォーマンスと従来のB+ツリーのような読み取りパフォーマンスを主張し、永続性はデフォルトで500msごとのfsyncで、flush_every_msまたは手動のflush/flush_async呼び出しで設定可能であると述べています。 注目すべき注意点:トランザクションは楽観的であるため、トランザクションクロージャは冪等でない限り外部状態やIOを避けるべきです。sledは複数のオープンインスタンスをサポートしていないため、プロセスの存続期間中は開いたままにする必要があります。数値キーは正しい辞書順序のためにビッグエンディアンで保存する必要があります。また、ディスク上のフォーマットは1.0.0の前に変更される予定であり、手動の移行が必要です。READMEはまた、信頼性が主要な制約である場合はSQLiteが好ましく、ストレージの価格性能が重要な場合はRocksDB、まれに書き込むマルチプロセスワークロードにはLMDBが適していると述べています。サポートされる最小のRustバージョンは1.62です。