高效能嵌入式DBMS libmdbx 0.11.3發布

libmdbx 0.11.3 (MDBX) 函式庫發布,實現了高效能緊湊型嵌入式鍵值資料庫。 libmdbx 程式碼已獲得 OpenLDAP 公共授權的許可。支援所有當前的作業系統和架構,以及俄羅斯 Elbrus 2000。到 2021 年底,libmdbx 將在兩個最快的以太坊客戶端 - 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 模式下使用所有支援的編譯器進行建置時的所有警告均已消除。確保與舊版編譯器的兼容性:從 3.9 開始使用 clang,從 4.8 開始使用 gcc,包括針對 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 行。

來源: opennet.ru

添加評論