MDBX 函式庫是一個經過重大修改的分支
MDBX 和 LMDB 之間最重要的差異:
- 從根本上來說,更加關注程式碼品質、測試和自動檢查。
- 從檢查參數到資料庫結構的內部審計,操作過程中的控制能力顯著增強。
- 自動壓縮和自動資料庫大小管理。
- 適用於 32 位元和 64 位元組件的單一資料庫格式。
- 按範圍估計樣本量(範圍查詢估計)。
- 支援兩倍於煎餅大小的按鍵和使用者可選擇的資料庫頁面大小。
libmdbx 候選版本是 2019 年 2 月做出的分離 MDBX 和 MithrilDB 專案決定的結果。 同時,libmdbx 決定消除(合理的)最大技術債務並穩定庫。 事實上,在指定方向上所做的工作比最初估計和計劃的多了 3-XNUMX 倍:
- 已實現對 macOS 和第二層平台的支援:FreeBSD、Solaris、DragonFly BSD、OpenBSD、NetBSD。 可根據需要添加 AIX 和 HP-UX 支援。
- 程式碼已使用 Undefined Behaviour Sanitizer 和 Address Sanitizer 進行了清理,使用「-Wpedantic」建置時的所有警告、所有 Coverity 靜態分析器警告等均被消除。
- 更新
介面說明 . - 合併(合併)原始碼以便於嵌入。
- CMake 支援。
- 支持嵌套事務。
- 使用 bootid 確定作業系統是否已重新啟動(髒資料庫停止)。
- 更新/舊頁面和擴展交易資訊的端到端計數。
- 選項 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 和非揮發性記憶體。
- 針對「有價值」和「低價值」、「熱」、「暖」和「冷」數據的最佳策略。
- 使用 Merkle 樹監控資料庫完整性。
- 可選使用 WAL,在寫入密集型場景中顯著提高效能,並確保資料完整性。
- 惰性追趕將資料提交到磁碟。
來源: opennet.ru