Izdaja vgrajenega SGBD libmdbx 0.13.6

Objavljena je nova verzija biblioteke libmdbx 0.13.6 (MDBX), koja uključuje visoko performantnu, kompaktno ugrađenu bazu podataka klase ključ-vrednost. Kod libmdbx je dostupan pod Apache 2.0 licencom. Podržani su svi aktuelni operativni sistemi i arhitekture, uključujući ruski Elbrus 2000. Za libmdbx je predložen razvijen API za C++, kao i podržane veze za jezike Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala. Od projekata koji koriste libmdbx, mogu se istaći Isar, Erigon i Reth, kao i razvojni projekti kompanija StarkWare i Positive Technologies.

Istorijski, libmdbx je duboka prerada DBMS-a LMDB i nadmašuje svog predka po pouzdanosti, setu mogućnosti i performansama. U poređenju sa LMDB, u libmdbx-u je velika pažnja posvećena kvalitetu koda, stabilnom radu API-a, testiranju i automatskim provere. Uključena je alatka za proveru integriteta strukture baze podataka sa određenim mogućnostima oporavka. Tehnički, libmdbx pruža ACID, strogu serijalizaciju promena i neblokirajuće čitanje sa linearnim skaliranjem po CPU jezgrama. Podržava automatsko sabijanje, automatsko upravljanje veličinom baze podataka i procenu obima upita po rasponima (range query estimation).

Glavne spremembe:

  • Promena ponašanja: Kada nije moguće odvezati kursor od trenutne transakcije, funkcija mdbx_cursor_bind() sada vraća MDBX_EINVAL umesto MDBX_BAD_TXN.
  • Kako bi se izbegli potencijalni problemi, korišćenje copy_file_range() onemogućeno je na Linux kernelima 5.3 — 5.18.
  • Izbacivanje std::invalid_argument sada se vrši jasnom porukom MDBX_EINVAL.
  • Otklonjen je regres prilikom korišćenja cursora za DBI=0 (poznat kao GC/FreeDB) u čitaočim transakcijama.
  • Otklonjen je regres u obliku EAGAIN greške prilikom kopiranja DB na NFS i CIFS/SMB.
  • U razvoju API-a u funkciji kopiranja dodato je blokiranje datoteka putem fcntl() i flock(). Ipak, u zavisnosti od verzije lokalnog kernela, verzije udaljenog strežnika NFS i opcija montaže, to je moglo dovesti do povratka POSIX greške EAGAIN (11 na većini platformi, uključujući Linux).
  • Otklonjena je 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-provera na putu završetka ugniježdenih transakcija.
  • Onemogućena je mogućnost vraćanja neočekivane greške MDBX_BUSY iz mdbx_txn_lock(dont_wait=false).
  • Radi kompatibilnosti sa GCC 15.x u C23 režimu promenjen je redosled navođenja atributa funkcija.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster