Пасля пяці гадоў распрацоўкі апублікаваны другі кандыдат у рэлізы libmdbx 1.0
даступны для тэсціравання другі кандыдат у рэлізы бібліятэкі libmdbx з рэалізацыяй высокапрадукцыйнай, кампактнай убудаванай базай дадзеных класа ключ-значэнне. Бягучая версія (0.5) з'яўляецца тэхнічным рэлізам, адзначае завяршэнне якіх-небудзь дапрацовак і пераход да фазы публічнага фінальнага тэсціравання і стабілізацыі, з наступным фарміраваннем першага паўнацэннага рэлізу бібліятэкі. Код libmdbx распаўсюджваецца пад ліцэнзіяй OpenLDAP Public License.
Бібліятэка MDBX з'яўляецца істотна перапрацаваным адгалінаваннем ад LMDB - транзакцыйнай ўбудаванай СКБД класа «ключ-значэнне» на аснове дрэва B+ без папераджальнай часопісізацыі, якая дазваляе шматструменным працэсам канкурэнтна і эфектыўна працаваць з лакальна-падзяляльнай (не сеткавай) БД. У сваю чаргу MDBX хутчэй і надзейней LMDB, і пры гэтым захоўвае ўсе ключавыя магчымасці свайго прабацькі, такія як ACID і неблакавальнае чытанне з лінейным маштабаваннем па ядрах CPU.
Найважнейшыя адрозненні MDBX, адносна LMDB:
Прынцыпова больш увагі надаецца якасці кода, тэсціраванню і аўтаматычным праверкам.
Істотна больш кантролю падчас працы, пачынальна ад праверкі параметраў, да ўнутранага аўдыту структур базы дадзеных.
Аўта-кампактыфікацыя і аўтаматычнае кіраванне памерам БД.
Адзіны фармат БД для 32-бітных і 64-бітных зборак.
Ацэнка аб'ёму выбарак па дыяпазонах (range query estimation).
Падтрымка ключоў удвая большай бліны і выбіраемы карыстачом памер старонкі БД.
Выпушчаны кандыдат у рэлізы libmdbx з'яўляецца вынікам прынятага ў жніўні 2019 года рашэння аб падзеле праектаў MDBX і MithrilDB. Пры гэтым у libmdbx было вырашана ўхіліць (рацыянальны) максімум тэхнічнага абавязку і стабілізаваць бібліятэку. Па факце ў абазначаным напрамку зроблена ў 2-3 разы больш, чым ацэньвалася і планавалася зыходна:
Рэалізаваная падтрымка macOS і платформаў "другога эшалона": FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Падтрымка AIX і HP-UX можа быць дададзена пры неабходнасці.
Праведзена санацыя кода пры дапамозе Undefined Behavior Sanitizer і Address Sanitizer, ухілены ўсе папярэджанні пры зборцы з "-Wpedantic", усе папярэджанні Coverity Static Analyzer і г.д.
Спецыялізаваны аптымізаваны алгарытм унутранага сартавання (да 2-3 раз хутчэй "qsort()" і да 30% хутчэй "std::sort()").
Павялічана максімальная даўжыня ключа.
Аўтаматычнае кіраванне read ahead (стратэгіяй кэшавання файла БД у памяці).
Больш агрэсіўная і хуткая аўта-кампактыфікацыя.
Больш аптымальная стратэгія зліцця старонак B+ дрэва.
Кантроль нелакальных файлавых сістэм (NFS, Samba і да т.п.) для прадухілення пашкоджанні БД пры няправільным выкарыстанні.
Пашыраны набор тэстаў.
Распрацоўка "наступнай" версіі libmdbx будзе працягнута ў рамках асобнага праекта MithrilDB, у той час як вектар распрацоўкі "бягучай" версіі MDBX накіраваны на замарозку набору магчымасцяў і стабілізацыю. Такое рашэнне прынятае па трох прычынах:
Поўная несумяшчальнасць: для рэалізацыі ўсіх запланаваных магчымасцяў у MithrilDB патрабуецца іншы (несумяшчальны) фармат файлаў БД і іншае (несумяшчальнае) API.
Новы зыходны код: для зыходнага кода MithrilDB забяспечана ліцэнзійная незалежнасць ад LMDB, а сам праект плануецца апублікаваць пад іншай ліцэнзіяй (ухваленай АБО ЯКСА ліцэнзіяй Apache 2.0, а не OpenLDAP Public License).
Падзел дазваляе пазбегнуць патэнцыйную блытаніну, унесці больш вызначанасці і забяспечыць незалежнасць шляху развіцця праектаў.
MithrilDB як і MDBX, таксама засноўваецца на дрэве B+ і таксама будзе адрозняцца лімітава высокай прадукцыйнасцю, пры гэтым ухіляючы шэраг прынцыповых недахопаў MDBX і LMDB. У прыватнасці, будзе ліквідаваная праблема "доўгіх чытанняў", якая праяўляецца як "распуханне" БД з-за таго, што перапрацоўка смецця блакуецца доўгім чытаюць транзакцыямі. Сярод новых магчымасцяў MithrilDB варта адзначыць:
Падтрымка размяшчэння БД на некалькіх разнастайных носьбітах: HDD, SSD і энерганезалежнай памяці.
Аптымальныя стратэгіі для "каштоўных" і "малацэнных", для "гарачых", "цёплых" і "халодных" дадзеных.
Выкарыстанне Merkle tree для кантролю цэласнасці БД.
Апцыянальнае выкарыстанне WAL і істотна больш высокая прадукцыйна ў сцэнарах з інтэнсіўным запісам і гарантыямі на цэласнасць дадзеных.
Гультаяватая даганяючая фіксацыя дадзеных на дысках.