1.0 年間の開発を経て、XNUMX 番目の libmdbx XNUMX リリース候補が公開されました

利用可能 ライブラリリリースの XNUMX 番目の候補をテストするため libmdbx 高性能でコンパクトな組み込みキー/値データベースを実装します。 現在のバージョン (0.5) は技術リリースであり、あらゆる改善が完了し、公開最終テストと安定化の段階への移行を示し、その後ライブラリの最初の完全リリースが形成されます。 libmdbxコード によって配布 OpenLDAPパブリックライセンスに基づいてライセンスされています。

MDBX ライブラリは、大幅に改訂されたフォークです。 LMDB — に基づく「キー/値」クラスのトランザクション組み込み DBMS 木B+ без プロアクティブなロギングこれにより、ローカル共有 (ネットワークではない) データベースを使用して、マルチスレッド プロセスが競合的かつ効率的に動作できるようになります。 一方、MDBX は LMDB よりも高速で信頼性が高く、同時にその祖先の主要な機能をすべて保持しています。 ACID CPU コア全体の線形スケーリングによるノンブロッキング読み取り。

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 の「次の」バージョンの開発は別のプロジェクトとして継続されます。 ミスリルDB一方、MDBX の「現在の」バージョンの開発ベクトルは、機能セットを凍結して安定化することを目的としています。 この決定は次の XNUMX つの理由から行われました。

  • 完全に互換性がない: MithrilDB では、計画されているすべての機能を実装するには、異なる (互換性のない) データベース ファイル形式と、異なる (互換性のない) API が必要です。
  • 新しいソース コード: MithrilDB ソース コードは LMDB から独立してライセンスされており、プロジェクト自体は別のライセンス (承認済み) の下で公開される予定です。 OSI Apache 2.0 ライセンスではなく OpenLDAPパブリックライセンス).
  • 分離により潜在的な混乱が回避され、より確実性がもたらされ、プロジェクトの独立した道が確保されます。

MithrilDB も、MDBX と同様に、以下に基づいています。 木B+ また、MDBX と LMDB の多くの根本的な欠点を解消しながら、非常に高いパフォーマンスも備えます。 特に、ガベージ処理が長時間読み取りトランザクションによってブロックされるという事実により、データベースの「膨張」として現れる「長時間読み取り」の問題が解消されます。 MithrilDB の新しい機能は次のとおりです。

  • データベースを複数の異種メディア (HDD、SSD、不揮発性メモリ) に配置するためのサポート。
  • 「貴重」と「低価値」、「ホット」、「ウォーム」、「コールド」データに対する最適な戦略。
  • マークル ツリーを使用してデータベースの整合性を監視します。
  • WAL をオプションで使用すると、データの整合性が保証され、書き込み集中型のシナリオでパフォーマンスが大幅に向上します。
  • データをディスクにコミットする遅延キャッチアップ。

出所: オープンネット.ru

コメントを追加します