Izdaja visoko zmogljivega vdelanega DBMS libmdbx 0.11.3

Knjižnica libmdbx 0.11.3 (MDBX) je bila izdana z implementacijo visoko zmogljive kompaktne vdelane baze podatkov ključ-vrednost. Koda libmdbx je licencirana pod javno licenco OpenLDAP. Podprti so vsi trenutni operacijski sistemi in arhitekture, pa tudi ruski Elbrus 2000. Konec leta 2021 se libmdbx uporablja kot zaledje za shranjevanje v dveh najhitrejših odjemalcih Ethereum - Erigon in novi “Shark”, ki glede na razpoložljiva informacije, je najzmogljivejši odjemalec Ethereum.

Zgodovinsko gledano je libmdbx globoka prenova LMDB DBMS in presega svojega prednika v smislu zanesljivosti, nabora funkcij in zmogljivosti. V primerjavi z LMDB daje libmdbx velik poudarek kakovosti kode, stabilnosti API-ja, testiranju in samodejnim preverjanjem. Pripomoček za preverjanje celovitosti strukture baze podatkov je opremljen z nekaterimi možnostmi obnovitve.

Tehnološko gledano libmdbx ponuja ACID, močno serializacijo sprememb in branje brez blokiranja z linearnim skaliranjem po jedrih CPE. Podprti so samodejna kompaktizacija, samodejno upravljanje velikosti podatkovne baze in ocena poizvedbe obsega. Od leta 2016 projekt financira Positive Technologies in ga od leta 2017 uporablja v svojih izdelkih.

libmdbx ponuja C++ API, kot tudi za navdušence podprte jezikovne vezave za Rust, Haskell, Python, NodeJS, Ruby, Go in Nim.

Glavne novosti, izboljšave in popravki, dodani od prejšnje novice 11. oktobra:

  • API C++ velja za pripravljenega za uporabo.
  • Posodobitev podatkov GC pri izvajanju ogromnih transakcij je bila znatno pospešena, kar je še posebej pomembno pri uporabi libmdbx v ekosistemu Ethereum.
  • Notranji podpis formata baze podatkov je bil spremenjen tako, da podpira samodejno posodabljanje, ki je za uporabnike popolnoma pregledno. To vam omogoča, da odpravite lažno pozitivna sporočila o poškodbi baze podatkov, ko se za branje transakcij, ki so jih zabeležile trenutne različice, uporabljajo zastarele različice knjižnice.
  • Dodane funkcije mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() in mdbx_env_get_syncbytes(). Dodana podpora za operacijo MDBX_SET_UPPERBOUND.
  • Vsa opozorila pri gradnji z vsemi podprtimi prevajalniki v načinih C++ 11/14/17/20 so bila odpravljena. Zagotovljena je združljivost s podedovanimi prevajalniki: clang od 3.9 naprej, gcc od 4.8 naprej, vključno z montažo z uporabo cdevtoolset-9 za CentOS/RHEL 7.
  • Odpravljena je možnost konflikta meta strani po ročnem preklopu na določeno meta stran s pomočjo pripomočka mdbx_chk.
  • Odpravljena nepričakovana napaka MDBX_PROBLEM, ki se vrne pri prepisovanju podedovanih meta strani.
  • Popravljeno vračanje MDBX_NOTFOUND v primeru nenatančnega ujemanja pri obdelavi zahteve MDBX_GET_BOTH.
  • Odpravljena napaka pri kompilaciji v Linuxu, ker ni bilo datotek glave z opisi vmesnikov z jedrom.
  • Odpravljen spor med notranjo zastavico MDBX_SHRINK_ALLOWED in možnostjo MDBX_ACCEDE.
  • Več nepotrebnih preverjanj trditev je bilo odpravljenih.
  • Popravljena nepričakovana vrnitev MDBX_RESULT_TRUE iz funkcije mdbx_env_set_option().
  • Skupno je bilo v 90 datotekah narejenih več kot 25 sprememb, dodanih je bilo ~1300 vrstic, ~600 izbrisanih.

Vir: opennet.ru

Dodaj komentar