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.
  • Ažuriranje API opisi.
  • Spajanje (amalgamacija) izvornog koda radi lakšeg ugrađivanja.
  • CMake podrška.
  • Podrška za ugniježđene transakcije.
  • Korištenje bootid-a za određivanje da li se OS ponovo pokrenuo (zaustavljanje prljave baze podataka).
  • Prebrojavanje ažuriranih/starih stranica i proširenih informacija o transakcijama od kraja do kraja.
  • Opcija MDBX_ACCEDE za povezivanje na već otvorenu bazu podataka u kompatibilnom načinu rada.
  • Koristite OFD blokiranje kada je dostupno.
  • Vruća rezerva u cijevi.
  • 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.

izvor: opennet.ru

Dodajte komentar