Llançament del DBMS incrustat d'alt rendiment libmdbx 0.11.3

La biblioteca libmdbx 0.11.3 (MDBX) es va llançar amb la implementació d'una base de dades de valor-clau incrustada compacta d'alt rendiment. El codi libmdbx té llicència sota la llicència pública OpenLDAP. S'admeten tots els sistemes operatius i arquitectures actuals, així com el Russian Elbrus 2000. A finals de 2021, libmdbx s'utilitza com a backend d'emmagatzematge en els dos clients Ethereum més ràpids: Erigon i el nou "Shark", que, segons disponibles informació, és el client d'Ethereum de més alt rendiment.

Històricament, libmdbx és un redisseny profund del SGBD LMDB i supera el seu progenitor en termes de fiabilitat, conjunt de funcions i rendiment. En comparació amb LMDB, libmdbx posa molt èmfasi en la qualitat del codi, l'estabilitat de l'API, les proves i les comprovacions automatitzades. Es proporciona una utilitat per comprovar la integritat de l'estructura de la base de dades amb algunes opcions de recuperació.

Pel que fa a la tecnologia, libmdbx ofereix ACID, serialització de canvis forts i lectures sense bloqueig amb escala lineal als nuclis de la CPU. S'admeten la compactació automàtica, la gestió automàtica de la mida de la base de dades i l'estimació de consultes d'interval. Des del 2016, el projecte està finançat per Positive Technologies i s'utilitza en els seus productes des del 2017.

libmdbx ofereix una API C++, així com enllaços de llenguatge compatibles amb entusiastes per a Rust, Haskell, Python, NodeJS, Ruby, Go i Nim.

Principals innovacions, millores i correccions afegides des de la notícia anterior de l'11 d'octubre:

  • L'API de C++ es considera llesta per al seu ús.
  • L'actualització de les dades de GC quan es cometen grans transaccions s'ha accelerat significativament, cosa que és especialment important quan s'utilitza libmdbx a l'ecosistema Ethereum.
  • La signatura interna del format de la base de dades s'ha canviat per donar suport a l'actualització automàtica, que és totalment transparent per als usuaris. Això us permet eliminar els missatges falsos positius sobre la corrupció de la base de dades quan s'utilitzen versions obsoletes de la biblioteca per llegir transaccions registrades per les versions actuals.
  • S'han afegit les funcions mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() i mdbx_env_get_syncbytes(). S'ha afegit suport per a l'operació MDBX_SET_UPPERBOUND.
  • S'han eliminat tots els avisos quan es construeixin amb tots els compiladors compatibles amb els modes C++ 11/14/17/20. Es garanteix la compatibilitat amb compiladors heretats: clang a partir de 3.9, gcc a partir de 4.8, inclòs el muntatge amb cdevtoolset-9 per a CentOS/RHEL 7.
  • S'ha corregit la possibilitat d'un conflicte de meta pàgina després de canviar manualment a una meta pàgina específica mitjançant la utilitat mdbx_chk.
  • S'ha solucionat l'error MDBX_PROBLEM inesperat que es tornava en sobreescriure les meta pàgines heretades.
  • S'ha corregit el retorn de MDBX_NOTFOUND en cas de coincidència inexacta quan es processava una sol·licitud MDBX_GET_BOTH.
  • S'ha corregit un error de compilació a Linux en absència de fitxers de capçalera amb descripcions de les interfícies amb el nucli.
  • S'ha solucionat un conflicte entre la bandera interna MDBX_SHRINK_ALLOWED i l'opció MDBX_ACCEDE.
  • S'han eliminat diversos controls d'afirmació innecessaris.
  • S'ha solucionat el retorn inesperat de MDBX_RESULT_TRUE de la funció mdbx_env_set_option().
  • En total, s'han fet més de 90 canvis a 25 fitxers, s'han afegit ~1300 línies, 600 s'han eliminat.

Font: opennet.ru

Afegeix comentari