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

Biblioteka libmdbx je značajno prerađeni potomak LMDB - izuzetno visokoučinkovite, kompaktne ugrađene baze podataka klase ključ-vrijednost.
Trenutna verzija v0.5 je tehnička verzija koja označava završetak bilo kakvih dorada i prelazak na fazu javnog finalnog testiranja i stabilizacije, s naknadnim oblikovanjem prvog punog izdanja biblioteke.

LMDB je dovoljno poznata transakciona ugrađena DBMS klase "ključ-vrijednost" koja se temelji na B+ stablu bez prednostne evidencije, koja omogućava velikom broju višestrukih procesa da konkurentno i izuzetno efikasno rade s lokalno dijeljenom (ne mrežnom) bazom podataka. S druge strane, MDBX je brži i pouzdaniji od LMDB, dok libmdbx zadržava sve ključne mogućnosti svog predaka, kao što su ACID i neblokirajuće čitanje s linearnim skaliranjem kroz CPU jezgre, a također dodaje nekoliko novih.

Opis razlika i poboljšanja libmdbx u odnosu na LMDB zaslužuje posebnu temu (planira se objaviti na "Habre" i "Medium"). Ovdje je prikladno spomenuti najvažnije i najočitije:

  • 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 prema rasponima (range query estimation).
  • Podrška za ključeve dvostruko veće veličine i veličinu stranice DB koju korisnik bira.

Objavljen kandidatski izdanak libmdbx rezultat je odluke (vidi dalje) o odvojenju projekata MDBX i MithrilDB u kolovozu 2019. U libmdbx-u je odlučeno ukloniti (racionalni) maksimum tehničkog duga i stabilizirati biblioteku. U stvari, u tom smjeru učinjeno je 2-3 puta više nego što je prvotno procijenjeno i planirano:

  • Implementirana je podrška za Mac OS i platforme "drugog nivoa": FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Podrška za AIX i HP-UX može biti dodana po potrebi.
  • Provedena je sanacija koda pomoću Undefined Behavior Sanitizer i Address Sanitizer, uklonjena su sva upozorenja pri gradnji s -Wpedantic, sva upozorenja Coverity Static Analyzer itd.
  • Ažuriranje opisivanja API.
  • Amalgamacija izvorne koda radi lakšeg ugrađivanja.
  • 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/old stranica i proširene informacije o transakcijama.
  • Opcija MDBX_ACCEDE za povezivanje s već otvorenom Bazom podataka u kompatibilnom režimu.
  • Korištenje OFD zaključavanja 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 ne-lokalnih datotečnih sustava (NFS, Samba itd.) za sprečavanje oštećenja baze podataka pri pogrešnoj upotrebi.
  • Proširen skup testova.

Razvoj «sljedeće» verzije libmdbx bit će nastavljen u okviru posebnog projekta MithrilDB, 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 OSI licencom Apache 2.0, a ne OpenLDAP Foundation).
  • Podjela omogućava izbjegavanje potencijalne zbrke, donosi veću jasnoću i osigurava neovisnost putanja razvoja projekata.

MithrilDB, kao i MDBX, također se temelji na B+ stablu 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 pohranu baze podataka na različitim medijima: HDD, SSD i nevoljivoj memoriji.
  • optimalne strategije za "vrijedne" i "malo vrijedne", za "vruće", "tople" i "hladne" podatke.
  • korištenje Merkle stabla za nadzor integriteta baze podataka.
  • opcionalna upotreba WAL i značajno viša produktivnost u scenarijima s intenzivnim zapisivanjem i jamstvima integriteta podataka.
  • lenjivno dostizanje pohrane podataka na diskovima.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster