高機能組み込みDBMS libmdbx 0.11.3をリリース

libmdbx 0.11.3 (MDBX) ライブラリは、高性能でコンパクトな組み込みキー/値データベースの実装とともにリリースされました。 libmdbx コードは、OpenLDAP Public License に基づいてライセンスされています。現在のすべてのオペレーティング システムとアーキテクチャがサポートされており、ロシアの Elbrus 2000 もサポートされています。2021 年末時点で、libmdbx は XNUMX つの最速イーサリアム クライアントである Erigon と新しい「Shark」のストレージ バックエンドとして使用されています。情報は、最高パフォーマンスのイーサリアム クライアントです。

歴史的に、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 以降 (CentOS/RHEL 9 用の cdevtoolset-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

コメントを追加します