Nakon pet godina razvoja, objavljen je drugi kandidat za izdanje libmdbx 1.0

Dostupno za testiranje drugog kandidata za knjižnična izdanja libmdbx uz implementaciju visokoučinkovite, kompaktne ugrađene baze podataka ključ-vrijednost. Trenutna verzija (0.5) je tehničko izdanje, označava završetak bilo kakvih poboljšanja i prijelaz u fazu javnog konačnog testiranja i stabilizacije, uz naknadno formiranje prvog punog izdanja biblioteke. libmdbx kod distribuira licenciran pod OpenLDAP Public License.

Knjižnica MDBX značajno je revidirano račvanje iz LMDB — transakcijski ugrađeni DBMS klase "ključ-vrijednost" na temelju drvo B+ bez proaktivno bilježenje, koji omogućuje procesima s više niti da rade konkurentno i učinkovito s lokalno dijeljenom (ne mrežnom) bazom podataka. Zauzvrat, MDBX je brži i pouzdaniji od LMDB-a, au isto vrijeme zadržava sve ključne značajke svog pretka, kao što su ACID i neblokirajuće čitanje s linearnim skaliranjem preko CPU jezgri.

Najvažnije razlike između MDBX i LMDB:

  • U osnovi, više pažnje se posvećuje kvaliteti koda, testiranju i automatskim provjerama.
  • Znatno više kontrole tijekom rada, od provjere parametara do interne revizije struktura baze podataka.
  • Auto-kompaktifikacija i automatsko upravljanje veličinom baze podataka.
  • Jedinstveni format baze podataka za 32-bitne i 64-bitne sklopove.
  • Procjena volumena uzorka po rasponima (procjena upita raspona).
  • Podrška za ključeve dvostruko veće od palačinki i veličinu stranice baze podataka koju može odabrati korisnik.

Kandidat za izdanje libmdbx rezultat je odluke donesene u kolovozu 2019. o odvajanju projekata MDBX i MithrilDB. U isto vrijeme, libmdbx je odlučio eliminirati (racionalni) maksimalni tehnički dug i stabilizirati knjižnicu. Naime, u zadanom smjeru učinjeno je 2-3 puta više nego što je u početku procijenjeno i planirano:

  • Implementirana je podrška za macOS i platforme drugog reda: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Po potrebi se može dodati podrška za AIX i HP-UX.
  • Kôd je dezinficiran korištenjem Undefined Behavior Sanitizer i Address Sanitizer, sva upozorenja prilikom izgradnje s "-Wpedantic", sva upozorenja Coverity Static Analyzera itd. su eliminirana.
  • Ažuriraj API opisi.
  • Spajanje (amalgamiranje) izvornog koda radi lakšeg ugrađivanja.
  • CMake podrška.
  • Podrška za ugniježđene transakcije.
  • Korištenje bootida za određivanje je li se OS ponovno pokrenuo (zaustavljanje prljave baze podataka).
  • Brojenje ažuriranih/starih stranica od početka do kraja i proširene informacije o transakcijama.
  • Opcija MDBX_ACCEDE za povezivanje s već otvorenom bazom podataka u kompatibilnom načinu rada.
  • Koristiti OFD blokada kada je dostupno.
  • Vruća sigurnosna kopija u cijevi.
  • Specijalizirani optimizirani interni algoritam sortiranja (do 2-3 puta brži od "qsort()" i do 30% brži od "std::sort()").
  • Maksimalna duljina ključa je povećana.
  • Automatska kontrola čitanja unaprijed (strategija predmemoriranja datoteke baze podataka u memoriji).
  • Agresivnija i brža autokompaktifikacija.
  • Optimalnija strategija za spajanje B+ stranica stabla.
  • Kontrola ne-lokalnih datotečnih sustava (NFS, Samba, itd.) kako bi se spriječilo oštećenje baze podataka ako se neispravno koristi.
  • Skup testova je proširen.

Razvoj "sljedeće" verzije libmdbx-a nastavit će se kao zaseban projekt MithrilDB, dok je razvojni vektor "trenutne" verzije MDBX-a usmjeren na zamrzavanje skupa značajki i njegovu stabilizaciju. Ova odluka je donesena iz tri razloga:

  • Potpuno nekompatibilno: MithrilDB zahtijeva drugačiji (nekompatibilan) format datoteke baze podataka i drugačiji (nekompatibilan) API za implementaciju svih planiranih značajki.
  • Novi izvorni kod: MithrilDB izvorni kod je licenciran neovisno o LMDB-u, a sam projekt planira se objaviti pod drugom licencom (odobrena od strane ILI AKO Apache 2.0 licenca, ne OpenLDAP javna licenca).
  • Odvajanjem se izbjegava potencijalna zabuna, unosi više sigurnosti i osigurava neovisan put za projekte.

MithrilDB, kao i MDBX, također se temelji na drvo B+ i također će imati izuzetno visoke performanse, dok će eliminirati niz temeljnih nedostataka MDBX i LMDB. Konkretno, problem "dugih čitanja", koji se manifestira kao "bubrenje" baze podataka zbog činjenice da je obrada smeća blokirana transakcijama dugog čitanja, bit će eliminiran. Nove značajke MithrilDB uključuju:

  • Podrška za postavljanje baze podataka na nekoliko heterogenih medija: HDD, SSD i trajna memorija.
  • Optimalne strategije za “vrijedne” i “niskovrijedne”, za “vruće”, “tople” i “hladne” podatke.
  • Korištenje Merkle stabla za praćenje integriteta baze podataka.
  • Izborna upotreba WAL-a i značajno poboljšane performanse u scenarijima intenzivnog pisanja s jamstvima integriteta podataka.
  • Lijeno nadoknađivanje predaje podataka na diskove.

Izvor: opennet.ru

Dodajte komentar