Lansarea DBMS încorporată de înaltă performanță libmdbx 0.11.3

Biblioteca libmdbx 0.11.3 (MDBX) a fost lansată odată cu implementarea unei baze de date compacte, de înaltă performanță, cheie-valoare. Codul libmdbx este licențiat sub licența publică OpenLDAP. Sunt acceptate toate sistemele de operare și arhitecturile actuale, precum și Elbrus 2000 rusesc. La sfârșitul anului 2021, libmdbx este folosit ca backend de stocare în cei mai rapizi doi clienți Ethereum - Erigon și noul „Shark”, care, conform disponibilului informații, este clientul Ethereum cu cea mai înaltă performanță.

Din punct de vedere istoric, libmdbx este o reproiectare profundă a SGBD-ului LMDB și depășește precursorul 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-ului, testarea și verificările automate. Un utilitar pentru verificarea integrității structurii bazei de date este furnizat cu unele opțiuni 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, proiectul este finanțat de Positive Technologies și este utilizat în produsele sale din 2017.

libmdbx oferă un API C++, precum și legături de limbaje acceptate de entuziaști pentru Rust, Haskell, Python, NodeJS, Ruby, Go și Nim.

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

  • API-ul C++ este considerat gata de utilizare.
  • Actualizarea datelor GC atunci când se efectuează tranzacții uriașe a fost accelerată semnificativ, ceea ce este deosebit de important atunci când se utilizează libmdbx în ecosistemul Ethereum.
  • Semnătura internă a formatului bazei de date a fost schimbată pentru a suporta actualizarea automată, care este complet transparentă pentru utilizatori. Acest lucru vă permite să eliminați mesajele fals pozitive despre coruperea bazei de date atunci când versiunile învechite ale bibliotecii sunt folosite pentru a citi tranzacțiile înregistrate de versiunile curente.
  • S-au adăugat funcțiile mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() și mdbx_env_get_syncbytes(). S-a adăugat suport pentru operațiunea MDBX_SET_UPPERBOUND.
  • Toate avertismentele la construirea cu toate compilatoarele acceptate în modurile C++ 11/14/17/20 au fost eliminate. Compatibilitatea cu compilatoarele vechi este asigurată: clang începând de la 3.9, gcc începând de la 4.8, inclusiv asamblarea folosind cdevtoolset-9 pentru CentOS/RHEL 7.
  • S-a remediat posibilitatea unui conflict meta-pagină după trecerea manuală la o anumită meta-pagină folosind utilitarul mdbx_chk.
  • S-a remediat o eroare neașteptată MDBX_PROBLEM care era returnată la suprascrierea meta paginilor vechi.
  • S-a remediat returnarea MDBX_NOTFOUND în cazul unei potriviri inexacte la procesarea unei cereri MDBX_GET_BOTH.
  • S-a remediat o eroare de compilare pe Linux în absența fișierelor de antet cu descrieri ale interfețelor cu nucleul.
  • S-a remediat un conflict între indicatorul intern MDBX_SHRINK_ALLOWED și opțiunea MDBX_ACCEDE.
  • Au fost eliminate mai multe verificări inutile.
  • S-a remediat revenirea neașteptată a MDBX_RESULT_TRUE din funcția mdbx_env_set_option().
  • În total, au fost făcute peste 90 de modificări la 25 de fișiere, au fost adăugate ~1300 de linii, ~600 au fost șterse.

Sursa: opennet.ru

Adauga un comentariu