Lansarea bazei de date încorporate libmdbx 0.13.3

A fost publicată versiunea bibliotecii libmdbx 0.13.3 (MDBX), care implementază o bază de date încorporată compactă și de înaltă performanță de tip cheie-valoare. Codul libmdbx este distribuit sub licența Apache 2.0. Sunt acceptate toate sistemele de operare și arhitecturile actuale, inclusiv Elbrus 2000 din Rusia. Libmdbx oferă o API dezvoltată pentru C++, precum și legături suportate de entuziaști pentru limbajele Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Istoric, libmdbx este o reproiectare profundă a SGBD-ului LMDB și îl depășește pe acesta în ceea ce privește fiabilitatea, setul de funcționalități și performanță. Comparativ cu LMDB, libmdbx acordă o mare atenție calității codului, funcționării stabile a API-ului, testării și verificărilor automate. Este disponibil un utilitar pentru verificarea integrității structurii BD cu unele funcții de restaurare. Din punct de vedere tehnologic, libmdbx oferă ACID, serializarea strictă a modificărilor și citiri neblocate cu scalare liniară pe nuclee CPU. Este suportată auto-compacția, gestionarea automată a dimensiunii BD și estimarea volumului de interogări pe intervale (range query estimation).

Modificări principale:

  • Ramura 0.13.x a obținut statutul de stabilitate. A început dezvoltarea ramurii 0.14.x.
  • În API-ul C a fost adăugată funcția mdbx_cursor_count_ex(), care permite obținerea atât a numărului de valori multiple corespunzătoare cheii curente, cât și a informațiilor despre arborele încorporat care păstrează aceste valori.
  • În API-ul C++ a fost adăugat metoda mdbx::txn::make_broken(), similar cu mdbx_txn_break().
  • În utilitile mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat a fost implementat logarea erorilor, avertizărilor și mesajelor importante de la libmdbx.
  • Schimbarea comportamentului:
    • Când profilarea colectorului de gunoi este activată (compilarea cu opțiunea MDBX_ENABLE_PROFGC=ON), acum se calculează costurile timpului CPU pentru îmbinarea listelor de pagini, adică pentru funcția pnl_merge().
    • În utilitarul de testare, valoarea modului de date a fost redenumită din data.dups în data.multi.
    • A fost îmbunătățită controlul lungimii cheii în cadrul cursor_seek().
    • Dacă utilizatorul nu a specificat o valoare prin mdbx_env_set_option(MDBX_opt_txn_dp_limit), se efectuează ajustarea limitării paginilor murdare la începutul fiecărei tranzacții de scriere neînglobate, bazată pe volumul de RAM disponibil și dimensiunea BD.
    • În modul MDBX_NOSTICKYTHREADS, se permite commit/abort al tranzacțiilor încorporate din orice fir.
    • În timpul încercării de a lansa tranzacții încorporează în modul MDBX_WRITEMAP, se efectuează jurnalizarea și se returnează eroarea MDBX_INCOMPATIBLE.
    • În API-ul C++, constructorii/inițializatorii și metodele legate de formarea geometriei Bazei de Date utilizează în mod implicit doar valorile standard.
    • În interiorul mdbx_env_set_geometry(), au fost îmbunătățite heuristicile pentru adaptarea parametrilor geometriei Bazei de Date solicitați de utilizator „implicit”.
  • Corecții:
    • A fost eliminat regresul de deblocare a mutexului în cazul încercării de a închide din nou un descriptor dbi, inclusiv în cazul încercării de a închide explicit descriptorul după ștergerea tabelului asociat.
    • A fost eliminat regresul stării cursorului încorporat/dupsort după inserarea datelor în modul MDBX_APPEND.
    • Suport pentru obținerea boot_id în timp ce se lucrează în interiorul unui container LXC.
    • A fost corectată eroarea de gestionare incorectă a încercării de a lansa o tranzacție de citire încorporată. Acum, în astfel de situații, se returnează eroarea MDBX_EINVAL, deoarece încorporarea este acceptată doar pentru tranzacțiile de citire-scriere.
    • A fost eliminat regresul SIGSEGV la accesarea unei adrese nule în modul de doar citire fără utilizarea fișierului LCK, de exemplu, atunci când baza de date este plasată pe un suport accesibil doar în mod citire.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster