Drugi kandidat za izdanje za libmdbx v1.0 nakon pet godina razvoja.

knjižnica libmdbx je značajno redizajnirani potomak LMDB-a - izuzetno visoke performanse, kompaktna ugrađena baza podataka ključ-vrijednost.
Trenutna verzija v0.5 je tehničko izdanje, označava završetak svih poboljšanja i prijelaz u fazu javnog konačnog testiranja i stabilizacije, s naknadnim formiranjem prvog punog izdanja biblioteke.

LMDB je prilično dobro poznat transakcijski ugrađeni DBMS ključ-vrijednost temeljen na drvo B+ bez proaktivno bilježenje, koji omogućuje roju višenitnih procesa konkurentan i iznimno učinkovit rad s lokalno dijeljenom (ne mrežnom) bazom podataka. Zauzvrat, MDBX je brži i pouzdaniji od LMDB-a, dok libmdbx zadržava sve ključne značajke svog pretka, kao što je ACID i neblokirajuća čitanja s linearnim skaliranjem preko CPU jezgri, a također dodaje nekoliko novih.

Opis razlika i poboljšanja libmdbx-a u odnosu na LMDB zaslužuje poseban članak (planiran za objavu na Habré i Medium). Ovdje je prikladno spomenuti najvažnije i najzapaženije:

  • 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 veličine 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 (vidi dolje) o odvajanju projekata MDBX i MithrilDB u kolovozu 2019. 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 Mac OS i platforme drugog reda: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Po potrebi se može dodati podrška za AIX i HP-UX.
  • Očistio je kod pomoću sredstva za čišćenje nedefiniranog ponašanja i sredstva za čišćenje adresa, eliminirao sva upozorenja prilikom izgradnje s -Wpedantic, sva upozorenja Coverity Static Analyzera itd.
  • Ažuriraj API opisi.
  • Spajanje 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 licenca Apache 2.0I ne Zaklada OpenLDAP).
  • Odvajanjem se izbjegava potencijalna zabuna, pruža više sigurnosti i osigurava da projekti imaju neovisni put naprijed.

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.
  • opcijska upotreba WAL-a i značajno bolje performanse u scenarijima intenzivnog pisanja i jamstva integriteta podataka.
  • Lazy catch-up fiksacija podataka na diskovima.

Izvor: linux.org.ru

Dodajte komentar