Nakon pet godina razvoja, objavljen je drugi kandidat za izdanje libmdbx 1.0
Dostupno za testiranje drugog kandidata za izdanja biblioteke libmdbx sa implementacijom visoke performanse, kompaktne ugrađene baze podataka ključ/vrijednost. Trenutna verzija (0.5) je tehničko izdanje, označava završetak svih poboljšanja i prelazak na fazu javnog konačnog testiranja i stabilizacije, uz naknadno formiranje prvog potpunog izdanja biblioteke. libmdbx kod distribuira licenciran pod OpenLDAP javnom licencom.
MDBX biblioteka je značajno revidirana fork od LMDB — transakcioni ugrađeni DBMS klase „ključ-vrijednost“ zasnovan na stablo B+ bez proaktivno evidentiranje, koji omogućava višenitnim procesima da rade konkurentno i efikasno sa lokalno dijeljenom (ne mrežnom) bazom podataka. Zauzvrat, MDBX je brži i pouzdaniji od LMDB-a, a istovremeno zadržava sve ključne karakteristike svog pretka, kao npr. ACID i neblokirajuće čitanje sa linearnim skaliranjem preko CPU jezgara.
Najvažnije razlike između MDBX-a i LMDB-a:
U osnovi, više pažnje se poklanja kvalitetu koda, testiranju i automatskim provjerama.
Značajno veća kontrola tokom rada, od provjere parametara do interne revizije struktura baze podataka.
Automatsko zbijanje i automatsko upravljanje veličinom baze podataka.
Jedinstveni format baze podataka za 32-bitne i 64-bitne sklopove.
Procjena volumena uzoraka po rasponima (procjena upita raspona).
Podrška za ključeve dvostruko veće od palačinki i veličinu stranice baze podataka koju bira korisnik.
Kandidat za izdanje libmdbx rezultat je odluke donesene u avgustu 2019. da se odvoje projekti MDBX i MithrilDB. U isto vrijeme, libmdbx je odlučio eliminirati (racionalni) maksimalni tehnički dug i stabilizirati biblioteku. Naime, urađeno je 2-3 puta više u zacrtanom pravcu nego što je prvobitno procijenjeno i planirano:
Implementirana je podrška za macOS i platforme drugog nivoa: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX i HP-UX podrška se može dodati po potrebi.
Kôd je dezinficiran korištenjem Undefined Behavior Sanitizer-a i Address Sanitizer-a, sva upozorenja pri izgradnji sa “-Wpedantic”, sva upozorenja Coverity Static Analyzer, itd. su eliminisana.
Specijalizovani optimizovani interni algoritam za sortiranje (do 2-3 puta brži od “qsort()” i do 30% brži od “std::sort()”).
Maksimalna dužina ključa je povećana.
Automatska kontrola čitanja unaprijed (strategija keširanja datoteka baze podataka u memoriji).
Agresivnija i brža auto-kompaktacija.
Optimalnija strategija za spajanje stranica B+ stabla.
Kontrola ne-lokalnih sistema datoteka (NFS, Samba, itd.) kako bi se spriječilo oštećenje baze podataka ako se koristi pogrešno.
Proširen je set testova.
Razvoj "sljedeće" verzije libmdbx-a će se nastaviti kao poseban projekat MithrilDB, dok je razvojni vektor “trenutne” verzije MDBX-a usmjeren na zamrzavanje skupa funkcija i njegovu stabilizaciju. Ova odluka je doneta iz tri razloga:
Potpuno nekompatibilno: MithrilDB zahtijeva drugačiji (nekompatibilan) format datoteke baze podataka i drugačiji (nekompatibilan) API za implementaciju svih planiranih funkcija.
Novi izvorni kod: MithrilDB izvorni kod je licenciran neovisnim od LMDB-a, a planira se objavljivanje samog projekta pod drugom licencom (odobreno od strane ILI AKO Apache 2.0 licenca, ne OpenLDAP javna licenca).
Razdvajanjem se izbjegava potencijalna zabuna, unosi više sigurnosti i osigurava nezavisan put za projekte.
MithrilDB je, kao i MDBX, također zasnovan na stablo B+ i takođe će imati izuzetno visoke performanse, dok će eliminisati brojne fundamentalne nedostatke MDBX i LMDB. Konkretno, bit će eliminisan problem “dugog čitanja”, koji se manifestira kao “nabujanje” baze podataka zbog činjenice da je obrada smeća blokirana dugim transakcijama čitanja. Nove MithrilDB karakteristike uključuju:
Podrška za postavljanje baze podataka na nekoliko heterogenih medija: HDD, SSD i stalnu memoriju.
Optimalne strategije za "vrijedne" i "niske vrijednosti", za "vruće", "tople" i "hladne" podatke.
Korištenje Merkle stabla za praćenje integriteta baze podataka.
Opciona upotreba WAL-a i značajno poboljšane performanse u scenarijima sa intenzivnim pisanjem uz garancije integriteta podataka.
Lijeno nadoknađivanje urezivanja podataka na diskove.