Lansarea DBMS încorporată de înaltă performanță libmdbx 0.10.4 și libfpta 0.3.9

Bibliotecile libmdbx 0.10.4 (MDBX) au fost lansate odată cu implementarea unei baze de date cheie-valoare încorporate compacte de înaltă performanță și a bibliotecii asociate libfpta 0.3.9 (FPTA), care implementează o reprezentare tabelară a datelor cu indici secundari și compoziți. pe deasupra MDBX. Ambele biblioteci sunt distribuite sub licențe aprobate de OSI. Toate sistemele de operare și arhitecturile actuale sunt acceptate, precum și Elbrus 2000 rusesc.

Din punct de vedere istoric, libmdbx este o reelaborare profundă a SGBD-ului LMDB și este superior strămoșului său în ceea ce privește fiabilitatea, setul de caracteristici și performanța. În comparație cu LMDB, libmdbx pune mult accent pe calitatea codului, stabilitatea API, testarea și verificările automate. Este furnizat un utilitar pentru verificarea integrității structurii bazei de date cu unele capacități de recuperare.

Din punct de vedere tehnologic, libmdbx oferă ACID, serializare puternică a schimbărilor și citiri neblocante cu scalare liniară pe nucleele CPU. Sunt acceptate compactarea automată, gestionarea automată a dimensiunii bazei de date și estimarea interogării intervalului. Din 2016, proiectele au fost finanțate de Positive Technologies și din 2017 sunt utilizate în produsele sale.

libmdbx oferă un API C++, precum și legături de limbaje acceptate de entuziaști pentru Rust, Haskell, Python, NodeJS, Ruby, Go și Nim. Pentru libfpta, numai descrierea API este disponibilă public sub forma unui fișier antet C/C++.

Inovații majore, îmbunătățiri și corecții adăugate de la știrile anterioare din 9 mai:

  • Permite versiuni reproductibile.
  • S-a remediat o eroare din cauza căreia, în circumstanțe foarte rare, ar putea apărea o buclă/înghețare în timpul unei comiteri de tranzacție. Problema a fost identificată de specialiștii Positive Tecnologies în timpul testării interne a propriilor produse.
  • Testele au fost îmbunătățite și scenariile de testare au fost extinse pentru a verifica toate stările neizomorfe accesibile ale arborelui paginii și conținutului GC din baza de date.
  • În API-ul C++, a fost remediat un „noexcept” suplimentar, au fost adăugate supraîncărcări suplimentare pentru metoda „cursor::erase()”, implementarea buffer-urilor a fost scutită de utilizarea „std::string” pentru a asigura alinierea (relevant pentru CLANG libstdc++).
  • A fost eliminată o regresie a algoritmului de vărsare a paginilor murdare (ejectarea selectivă a paginilor de baze de date modificate) care s-a manifestat printr-o eroare MDBX_PROBLEM neașteptată la modificarea datelor în tranzacții uriașe.
  • A fost efectuat un test de etapă cu adăugarea unui număr de verificări pentru a asigura stabilitatea în cazul deteriorării intenționate a bazei de date.
  • S-au remediat avertismentele minore Probleme UndefinedBehaviorSanitizer și Coverity Scan.
  • S-a rezolvat verificarea indicatorului intern învechit și nemai utilizat „P_DIRTY” în paginile imbricate din imaginile bazei de date create de versiuni mai vechi ale bibliotecii.
  • În scripturile CMake, căutarea componentelor compilatorului necesare pentru LTO (optimizarea timpului de legătură) a fost îmbunătățită.
  • Numărul maxim de cititori simultani a fost crescut la 32767.
  • Performanță îmbunătățită la utilizarea Valgrind și AddressSanitizer.
  • Pe Windows, utilizarea recursivă a blocării SRW atunci când se lucrează în modul MDBX_NOTLS (fără a folosi stocarea locală a firelor) a fost eliminată, generarea bootid-ului a fost remediată dacă ora sistemului s-a schimbat, detectarea WSL1 și WSL2 a fost îmbunătățită și capacitatea de a deschide o bază de date pe Plan 9 montată prin DrvFS a fost adăugată.
  • În total, au fost făcute peste 160 de modificări la 57 de fișiere, au fost adăugate ~5000 de linii, ~2500 au fost șterse.

Aș dori să mulțumesc în special echipei de proiect Erigon (ecosistemul Ethereum) pentru asistența acordată în testarea în scenarii de utilizare extremă. Este semnificativ faptul că în cinci luni de la lansarea libmdbx v0.10.0, cu un volum al bazei de date de 1-2 TB în fiecare instalare Erigon (utilizată pe 7% din nodurile Ethereum), au fost primite doar trei rapoarte de corupție a bazei de date, toate care a apărut din motive externe, și nu erori software: în două cazuri cauza a fost defecțiunile RAM, în al treilea o eroare la resetarea datelor într-o anumită configurație a subsistemului de stocare folosind BTRFS.

Sursa: opennet.ru

Adauga un comentariu