MDBX ライブラリは、大幅に改訂されたフォークです。
MDBX と LMDB の最も重要な違いは次のとおりです。
- 基本的に、コードの品質、テスト、自動チェックにより多くの注意が払われます。
- パラメータのチェックからデータベース構造の内部監査まで、運用中の制御が大幅に強化されました。
- 自動圧縮と自動データベース サイズ管理。
- 32 ビットおよび 64 ビットのアセンブリ用の単一のデータベース形式。
- 範囲によるサンプル量の推定 (範囲クエリ推定)。
- パンケーキの XNUMX 倍の大きさのキーとユーザーが選択可能なデータベース ページ サイズのサポート。
libmdbx リリース候補は、MDBX プロジェクトと MithrilDB プロジェクトを分離するという 2019 年 2 月の決定の結果です。 同時に、libmdbx は (合理的な) 最大の技術的負債を排除し、ライブラリを安定化することを決定しました。 実際、当初の見積もりと計画よりも 3 ~ XNUMX 倍多くのことが指定された方向で行われています。
- macOS および第 XNUMX 層プラットフォームのサポートが実装されました: FreeBSD、Solaris、DragonFly BSD、OpenBSD、NetBSD。 必要に応じて、AIX および HP-UX のサポートを追加できます。
- コードは未定義動作サニタイザーとアドレス サニタイザーを使用してサニタイズされ、「-Wpedantic」でビルドするときのすべての警告、Coverity Static Analyzer のすべての警告などが削除されました。
- アップデート
APIの説明 . - 埋め込みを容易にするためにソース コードをマージ (融合) します。
- CMake のサポート。
- ネストされたトランザクションのサポート。
- bootid を使用して、OS が再起動したかどうか (ダーティ データベースの停止) を判断します。
- 更新された/古いページと拡張トランザクション情報のエンドツーエンドのカウント。
- 互換モードで既に開いているデータベースに接続するためのオプション MDBX_ACCEDE。
- 使用
OFDブロッキング 利用可能な場合。 - パイプ内のホットバックアップ。
- 特別に最適化された内部ソート アルゴリズム (「qsort()」よりも最大 2 ~ 3 倍高速、「std::sort()」よりも最大 30% 高速)。
- キーの最大長が長くなりました。
- 先読みの自動制御 (メモリ内のデータベース ファイル キャッシュ戦略)。
- より積極的かつ高速な自動圧縮。
- B+ ツリー ページをマージするためのより最適な戦略。
- 非ローカル ファイル システム (NFS、Samba など) を制御して、誤って使用された場合のデータベースの損傷を防ぎます。
- テストのセットが拡張されました。
libmdbx の「次の」バージョンの開発は別のプロジェクトとして継続されます。
- 完全に互換性がない: MithrilDB では、計画されているすべての機能を実装するには、異なる (互換性のない) データベース ファイル形式と、異なる (互換性のない) API が必要です。
- 新しいソース コード: MithrilDB ソース コードは LMDB から独立してライセンスされており、プロジェクト自体は別のライセンス (承認済み) の下で公開される予定です。
OSI Apache 2.0 ライセンスではなくOpenLDAPパブリックライセンス ). - 分離により潜在的な混乱が回避され、より確実性がもたらされ、プロジェクトの独立した道が確保されます。
MithrilDB も、MDBX と同様に、以下に基づいています。
- データベースを複数の異種メディア (HDD、SSD、不揮発性メモリ) に配置するためのサポート。
- 「貴重」と「低価値」、「ホット」、「ウォーム」、「コールド」データに対する最適な戦略。
- マークル ツリーを使用してデータベースの整合性を監視します。
- WAL をオプションで使用すると、データの整合性が保証され、書き込み集中型のシナリオでパフォーマンスが大幅に向上します。
- データをディスクにコミットする遅延キャッチアップ。
出所: オープンネット.ru