za testiranje drugog kandidata za izdanje biblioteke s implementacijom visokoučinkovite, kompaktne ugrađene baze podataka klasa ključ-vrijednost. Trenutna verzija (0.5) predstavlja tehničko izdanje, označava završetak svih dorada i prijelaz u fazu javnog konačnog testiranja i stabilizacije, uz kasnije formiranje prvog punog izdanja biblioteke. Kod libmdbx pod licencom OpenLDAP Public License.
Biblioteka MDBX je znatno revidirana grana od — transakcijske ugrađene DBMS klase „ključ-vrijednost“ koja se temelji na bez , koja omogućava višedretvenim procesima konkurentno i učinkovito korištenje lokalno dijeljene (ne mrežne) DB. S druge strane, MDBX je brži i pouzdaniji od LMDB-a, a pritom zadržava sve ključne mogućnosti svog prethodnika, kao što su i neblokirajuće čitanje s linearnim skaliranjem prema CPU jezgrama.
Najvažnije razlike MDBX-a u odnosu na LMDB:
- Osnovno veća pažnja posvećuje se kvaliteti koda, testiranju i automatskim provjerama.
- Značajno više kontrole tijekom rada, od provjere parametara, do interne revizije struktura baze podataka.
- Automatska kompakcija i automatsko upravljanje veličinom DB.
- Jedinstveni format DB za 32-bitne i 64-bitne izrade.
- Procjena volumena uzoraka po intervalima (procjena upita prema rasponu).
- Podrška za ključeve dvostruko veće veličine i veličinu stranice DB koju korisnik bira.
Objavljeni kandidat za izdanje libmdbx rezultat je odluke donesene u kolovozu 2019. o razdvajanju projekata MDBX i MithrilDB. U libmdbx odlučeno je da se eliminira (racionalna) maksimalna tehnička dugovanja i stabilizirati biblioteku. U tom smislu učinjeno je 2-3 puta više nego što je prvotno procijenjeno i planirano:
- Podrška za macOS i platforme „drugog razreda”: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Podrška za AIX i HP-UX može biti dodana po potrebi.
- Sanacija koda pomoću Undefined Behavior Sanitizer i Address Sanitizer, uklonjeni su svi upozorenja tijekom kompilacije s „-Wpedantic“, sva upozorenja Coverity Static Analyzer itd.
- Ažuriranje .
- Spajanje (amalgamacija) izvorne baze za olakšano ugrađivanje.
- Podrška za CMake.
- Podrška za ugniježdene transakcije.
- Korištenje bootid-a za utvrđivanje ponovnog pokretanja OS-a (prljavo zaustavljanje Baze podataka).
- Sveobuhvatno brojanje ažuriranih/starih stranica i proširene informacije o transakcijama.
- Opcija MDBX_ACCEDE za povezivanje s već otvorenom Bazom podataka u kompatibilnom režimu.
- Korištenje po njihovoj dostupnosti.
- Vruće sigurnosno kopiranje u pipe.
- Specijalizirani optimizirani algoritam unutarnjeg sortiranja (do 2-3 puta brži od «qsort()» i do 30% brži od «std::sort()»).
- Povećana maksimalna duljina ključa.
- Automatsko upravljanje read ahead (strategijom keširanja datoteke Baze podataka u memoriji).
- Agresivnija i brža auto-kompaktizacija.
- Optimalnija strategija spajanja stranica B+ stabla.
- Kontrola nelokalnih datotečnih sustava (NFS, Samba itd.) za sprečavanje oštećenja Baze podataka zbog pogrešne upotrebe.
- Proširen skup testova.
Razvoj «sljedeće» verzije libmdbx bit će nastavljen u okviru posebnog projekta , dok je pravac razvoja «trenutne» verzije MDBX usmjeren na zamrzavanje skupa mogućnosti i stabilizaciju. Ova odluka donesena je iz tri razloga:
- Potpuna nespojivost: za implementaciju svih planiranih mogućnosti u MithrilDB potrebni su drugi (nespojivi) formati datoteka Baze podataka i drugo (nespojivo) API.
- Novi izvorni kod: za izvorni kod MithrilDB osigurana je licencijska neovisnost od LMDB-a, a sam projekt planira se objaviti pod drugom licencom (odobrenom Licencom Apache 2.0, a ne ).
- Podjela omogućava izbjegavanje potencijalne zbrke, donosi veću jasnoću i osigurava neovisnost putanje razvoja projekata.
MithrilDB, kao i MDBX, također se temelji na i također će se odlikovati izuzetno visokom učinkovitošću, pri čemu će otkloniti niz principijelnih nedostataka MDBX-a i LMDB-a. Konkretno, bit će uklonjen problem «dugih čitanja», koji se manifestira kao «naduvavanje» Baze podataka zbog toga što obrada smeća zadržava duga čitajuća transakcije. Među novim mogućnostima MithrilDB-a valja istaknuti:
- Podrška za smještanje Baze podataka na nekoliko heterogenih nositelja: HDD, SSD i energetski neovisnu memoriju.
- Optimalne strategije za "vrijedne" i "malo vrijedne", za "vruće", "tople" i "hladne" podatke.
- Korištenje Merkle drveta za kontrolu integriteta DB-a.
- Opcionalna upotreba WAL-a i znatno veća produktivnost u scenarijima s intenzivnim zapisom i garancijama na integritet podataka.
- Lijenčavi podaci koji se kasnije spremaju na diskove.
Izvor: opennet.ru
