Lansarea bazei de date încorporate de înaltă performanță libmdbx 0.10.4 și libfpta 0.3.9

A avut loc lansarea bibliotecilor libmdbx 0.10.4 (MDBX) cu implementarea unei baze de date compactă, integrată de înaltă performanță, de tip cheie-valoare, și a bibliotecii asociate libfpta 0.3.9 (FPTA), care oferă o reprezentare tabulară a datelor peste MDBX, cu indecși secundari și compuși. Ambele biblioteci sunt distribuite sub licențe aprobate de OSI. Sunt suportate toate sistemele de operare și arhitecturile actuale, precum și procesorul rusesc Elbrus 2000.

Istoric, libmdbx reprezintă 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ța. Comparativ cu LMDB, libmdbx pune un accent deosebit pe calitatea codului, functionarea stabilă a API-ului, testare și verificări automate. Este inclus un utilitar de verificare a integrității structurii bazei de date, cu unele capabilități de recuperare.

Din punct de vedere tehnologic, libmdbx oferă ACID, serializare strictă a modificărilor și citire neblocat, cu scalare liniară pe nucleele CPU. Este suportată autocontracția, gestionarea automată a dimensiunii bazei de date, estimarea volumului de selecții pe intervale (range query estimation). Din 2016, proiectele sunt finanțate de compania Positive Technologies și din 2017 sunt utilizate în produsele acesteia.

Pentru libmdbx este oferit un API C++, precum și legături susținute de entuziaști pentru limbaje precum Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. Pentru libfpta este public disponibil doar descrierea API-ului sub formă de fișier de antet C/C++.

Principalele noutăți, îmbunătățiri și corecții adăugate după ultima știre din 9 mai:

  • A fost asigurată posibilitatea construirii reproducibile.
  • A fost remediată o eroare, din cauza căreia, în circumstanțe foarte rare, în timpul fixării tranzacției, se putea produce o buclă infinită/blocare. Problema a fost identificată de specialiștii de la Positive Technologies în timpul testării interne a propriilor produse.
  • Teste îmbunătățite și scenarii de testare extinse pentru a verifica toate stările neizomorfice posibile ale arborelui de pagini și conținutul GC din baza de date.
  • În API-ul C++ a fost corectat un „noexcept” redundant, au fost adăugate suprascrieri suplimentare pentru metoda „cursor::erase()”, iar implementarea bufferelor a fost eliberată de utilizarea „std::string” pentru a asigura alinierea (relevantă pentru CLANG libstdc++).
  • Regresul din algoritmul de spooling al paginilor murdare (eliminarea selectivă a paginilor modificate din baza de date) a fost corectat, manifestându-se printr-o eroare rară și neașteptată MDBX_PROBLEM în timpul modificării datelor în tranzacții mari.
  • A fost realizată o verificare prin fazare cu adăugarea unei serii de verificări pentru a asigura stabilitatea în cazul deteriorării intenționate a bazei de date.
  • Au fost eliminate avertizările minore UndefinedBehaviorSanitizer și problemele detectate de Coverity Scan.
  • A fost corectată verificarea unui flag intern învechit și deja neutilizat „P_DIRTY” în paginile încastrate din imaginile bazei de date create de versiunile mai vechi ale bibliotecii.
  • În scripturile CMake a fost îmbunătățită căutarea componentelor compilatorului necesare pentru LTO (optimizare la link).
  • Numărul maxim de cititori concurenți a fost crescut la 32767.
  • Performanța la utilizarea Valgrind și AddressSanitizer a fost accelerată.
  • Pe Windows a fost eliminată utilizarea recursivă a SRW-lock în modul MDBX_NOTLS (fără utilizarea stocării locale pe fir), a fost corectată generarea bootid în cazul modificării timpului de sistem, a fost îmbunătățită detectarea WSL1 și WSL2, și a fost adăugată posibilitatea de a deschide baza de date pe Plan 9 montată prin DrvFS.
  • În total, au fost efectuate peste 160 de modificări în 57 de fișiere, adăugându-se aproximativ 5000 de linii și eliminându-se aproximativ 2500.

Doresc să mulțumesc echipei proiectului Erigon (ecosistemul Ethereum) pentru ajutorul acordat în testarea în scenarii extreme de utilizare. Este demn de remarcat că, în cei cinci luni de la lansarea libmdbx v0.10.0, având o bază de date de 1-2 TB în fiecare instalare Erigon (utilizată pe 7% din nodurile Ethereum), au fost primite doar trei rapoarte de deteriorare a bazei de date, toate cauzate de motive externe, nu de erori de software: în două cazuri, problema a fost defecțiunea memoriei RAM, iar în cazul trei, o eroare de resetare a datelor într-o configurație specifică a subsistemului de stocare cu utilizarea BTRFS.

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