Uitgave van krachtige ingebedde DBMS libmdbx 0.11.3

De libmdbx 0.11.3 (MDBX)-bibliotheek is uitgebracht met de implementatie van een krachtige, compacte, ingebedde sleutelwaardedatabase. De libmdbx-code valt onder de OpenLDAP Public License. Alle huidige besturingssystemen en architecturen worden ondersteund, evenals het Russische Elbrus 2000. Eind 2021 wordt libmdbx gebruikt als opslagbackend in de twee snelste Ethereum-clients - Erigon en de nieuwe "Shark", die volgens beschikbare informatie, is de krachtigste Ethereum-client.

Historisch gezien is limbdbx een diepgaande herwerking van het LMDB DBMS en is het superieur aan zijn voorloper wat betreft betrouwbaarheid, functieset en prestaties. Vergeleken met LMDB legt licmdbx veel nadruk op codekwaliteit, API-stabiliteit, testen en geautomatiseerde controles. Er wordt een hulpprogramma meegeleverd voor het controleren van de integriteit van de databasestructuur met enkele herstelmogelijkheden.

Technologisch gezien biedt limbdbx ACID, sterke serialisatie van wijzigingen en niet-blokkerende leesbewerkingen met lineaire schaling over CPU-kernen. Automatische compactificatie, automatisch beheer van de databasegrootte en schatting van bereikquery's worden ondersteund. Sinds 2016 wordt het project gefinancierd door Positive Technologies en sinds 2017 in zijn producten gebruikt.

libmdbx biedt een C++ API, evenals door liefhebbers ondersteunde taalbindingen voor Rust, Haskell, Python, NodeJS, Ruby, Go en Nim.

Belangrijke innovaties, verbeteringen en correcties toegevoegd sinds het vorige nieuws op 11 oktober:

  • De C++ API wordt als gereed voor gebruik beschouwd.
  • Het bijwerken van GC-gegevens bij het uitvoeren van grote transacties is aanzienlijk versneld, wat vooral belangrijk is bij het gebruik van licmdbx in het Ethereum-ecosysteem.
  • De interne handtekening van het databaseformaat is gewijzigd om automatische updates te ondersteunen, wat volledig transparant is voor gebruikers. Hierdoor kunt u vals-positieve berichten over databasecorruptie elimineren wanneer verouderde versies van de bibliotheek worden gebruikt om transacties te lezen die door de huidige versies zijn vastgelegd.
  • Functies mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() en mdbx_env_get_syncbytes() toegevoegd. Ondersteuning toegevoegd voor de MDBX_SET_UPPERBOUND-bewerking.
  • Alle waarschuwingen bij het bouwen met alle ondersteunde compilers in de C++ 11/14/17/20-modi zijn geëlimineerd. Compatibiliteit met oudere compilers is verzekerd: clang vanaf 3.9, gcc vanaf 4.8, inclusief assemblage met behulp van cdevtoolset-9 voor CentOS/RHEL 7.
  • De mogelijkheid van een metapaginaconflict opgelost na het handmatig overschakelen naar een specifieke metapagina met behulp van het mdbx_chk-hulpprogramma.
  • Probleem opgelost dat er een onverwachte MDBX_PROBLEM-fout werd geretourneerd bij het overschrijven van oudere metapagina's.
  • Probleem opgelost dat MDBX_NOTFOUND retourneert in het geval van een onnauwkeurige overeenkomst bij het verwerken van een MDBX_GET_BOTH-verzoek.
  • Een compilatiefout op Linux opgelost bij afwezigheid van headerbestanden met beschrijvingen van interfaces met de kernel.
  • Er is een conflict opgelost tussen de interne vlag MDBX_SHRINK_ALLOWED en de optie MDBX_ACCEDE.
  • Verschillende onnodige beweringscontroles zijn geëlimineerd.
  • Onverwachte terugkeer van MDBX_RESULT_TRUE van de functie mdbx_env_set_option() opgelost.
  • In totaal zijn er meer dan 90 wijzigingen aangebracht in 25 bestanden, zijn er ongeveer 1300 regels toegevoegd en zijn er ongeveer 600 verwijderd.

Bron: opennet.ru

Voeg een reactie