libmdbx 0.11.3 (MDBX) ライブラリがリリースされ、高性能でコンパクトな組み込みキー値データベースが実装されました。 libmdbx コードは OpenLDAP パブリック ライセンスに基づいて配布されます。現在のすべてのオペレーティング システムとアーキテクチャに加え、ロシアの Elbrus 2000 もサポートされています。2021 年末現在、libmdbx は、最も高速な XNUMX つの Ethereum クライアントである Erigon と新しい「Shark」のストレージ バックエンドとして使用されています。入手可能な情報によると、Shark は最もパフォーマンスの高い Ethereum クライアントです。
歴史的に、libmdbx は LMDB DBMS を徹底的に作り直したものであり、信頼性、機能セット、パフォーマンスの点で先祖よりも優れています。 LMDB と比較して、libmdbx はコード品質、API の安定性、テスト、および自動チェックに重点を置いています。 いくつかの回復機能を備えたデータベース構造の整合性をチェックするためのユーティリティが提供されています。
技術的には、libmdbx は、ACID、変更の強力なシリアル化、および CPU コア全体にわたる線形スケーリングによる非ブロッキング読み取りを提供します。自動圧縮、自動データベース サイズ管理、範囲クエリの推定がサポートされています。このプロジェクトは2016年以来、Positive Technologiesによって資金提供されており、2017年から同社の製品に使用されています。
libmdbx は、C++ API に加えて、愛好家がサポートする Rust、Haskell、Python、NodeJS、Ruby、Go、Nim の言語バインディングを提供します。
11 月 XNUMX 日の前回のニュース以降に追加された主な革新、改善、修正:
- C++ API はすぐに使用できるとみなされます。
- 大規模なトランザクションをコミットする際の GC データの更新が大幅に高速化されました。これは、イーサリアム エコシステムで libmdbx を使用する場合に特に重要です。
- データベース形式の内部署名が変更され、ユーザーにとって完全に透過的な自動更新がサポートされるようになりました。これにより、古いバージョンのライブラリを使用して現在のバージョンでコミットされたトランザクションを読み取るときに、データベース破損に関する誤検知メッセージが排除されます。
- 関数 mdbx_env_get_syncbytes()、mdbx_env_get_syncperiod()、および mdbx_env_get_syncbytes() を追加しました。 MDBX_SET_UPPERBOUND 操作のサポートが追加されました。
- C++ 11/14/17/20 モードでサポートされているすべてのコンパイラを使用してビルドする場合、すべての警告が解消されました。レガシーコンパイラとの互換性も確保されています。clang 3.9 以降、gcc 4.8 以降、cdevtoolset-9 を使用したビルドもサポートされています。 CentOS/RHEL 7。
- mdbx_chk ユーティリティを使用して特定のメタ ページに手動で切り替えた後にメタ ページが競合する可能性が修正されました。
- 従来のメタページを上書きするときに予期しない MDBX_PROBLEM エラーが返される問題を修正しました。
- MDBX_GET_BOTH リクエストの処理時に不完全一致の場合に MDBX_NOTFOUND を返す問題を修正しました。
- コンパイルエラーを修正しました Linux カーネルとのインターフェースを記述するヘッダーファイルが存在しない場合。
- MDBX_SHRINK_ALLOWED 内部フラグと MDBX_ACCEDE オプションの間の競合を修正しました。
- いくつかの不必要なアサート チェックが削除されました。
- mdbx_env_set_option() 関数から予期しない MDBX_RESULT_TRUE が返される問題を修正しました。
- 合計 90 を超える変更が 25 のファイルに加えられ、約 1300 行が追加され、約 600 行が削除されました。
出所: オープンネット.ru
