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

Dostupno za testiranje drugog kandidata za izdanje biblioteke libmdbx 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 distribuira se pod licencom OpenLDAP Public License.

Biblioteka MDBX je znatno revidirana grana od LMDB — transakcijske ugrađene DBMS klase „ključ-vrijednost“ koja se temelji na B+ stablu bez prednostne evidencije, 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 ACID 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 opisivanja API.
  • 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 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 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 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 Public License).
  • 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 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 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

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