Objavljivanje ugrađene DBMS-a libmdbx 0.13.6

Objavljen je izdanak biblioteke libmdbx 0.13.6 (MDBX) s implementacijom visokoefikasne kompaktne ugrađene baze podataka klase ključ-vrijednost. Kod libmdbx distribuiran je pod Apache 2.0 licencom. Podržani su svi aktualni operacijski sustavi i arhitekture, uključujući ruski Elbrus 2000. Za libmdbx je dostupno razvijeno API za C++, kao i podržane vezice za jezike Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno i Scala. Među projektima koji koriste libmdbx možemo istaknuti Isar, Erigon i Reth, kao i razvojne projekte tvrtki StarkWare i Positive Technologies.

Povijesno, libmdbx je duboka prerada DBMS-a LMDB i nadmašuje svog predka po pouzdanosti, setu mogućnosti i performansama. U usporedbi s LMDB-om, libmdbx posvećuje veliku pažnju kvaliteti koda, stabilnom radu API-a, testiranju i automatskim provjerama. Uključena je i alat za provjeru cjelovitosti strukture baze podataka s određenim mogućnostima oporavka. Tehnološki, libmdbx nudi ACID, strogu serijalizaciju promjena i neblokirajuće čitanje s linearnim skaliranjem prema jezgrama CPU-a. Podržano je automatsko komprimiranje, automatsko upravljanje veličinom baze podataka i procjena volumena upita po rasponu (range query estimation).

Glavne promjene:

  • Promjena ponašanja: Kada nije moguće odvojiti pokazivač od njegove trenutne transakcije, funkcija mdbx_cursor_bind() sada vraća MDBX_EINVAL umjesto MDBX_BAD_TXN.
  • Kako bi se izbjegli potencijalni problemi, isključena je upotreba copy_file_range() na jezgrama Linux 5.3 — 5.18.
  • Sada se ispaljuje std::invalid_argument s jasnom porukom MDBX_EINVAL.
  • Uklonjen je regres prilikom korištenja pokazivača za DBI=0 (aka GC/FreeDB) u čitajućim transakcijama.
  • Uklonjen je regres u obliku greške EAGAIN prilikom kopiranja baze podataka na NFS i CIFS/SMB.
  • Prilikom dorade/razvoja API-a u funkciji kopiranja dodatno je uključeno preuzimanje datotečne blokade putem fcntl() i flock(). Međutim, ovisno o verziji lokalnog jezgra, verziji udaljenog poslužitelja NFS-a i opcijama montiranja, to je moglo dovesti do povratka POSIX greške EAGAIN (11 na većini platformi, uključujući Linux).
  • Ispravljena greška merge/rebase unutar mdbx_txn_release_all_cursors_ex(), što je moglo dovesti do kasnijih neočekivanih grešaka MDBX_EBADSIGN i curenja memorije.
  • Ispravljena je assert-provjera u putanji završetka ugniježdenih transakcija.
  • Uklonjena mogućnost povratka neočekivane greške MDBX_BUSY iz mdbx_txn_lock(dont_wait=false).
  • Za kompatibilnost s GCC 15.x u C23 modu promijenjen je redoslijed navođenja atributa funkcija.

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