Izdaja visoko zmogljivega vdelanega DBMS libmdbx 0.10.4 in libfpta 0.3.9

Knjižnice libmdbx 0.10.4 (MDBX) so bile izdane z implementacijo visoko zmogljive kompaktne vdelane baze podatkov ključ-vrednost in povezane knjižnice libfpta 0.3.9 (FPTA), ki izvaja tabelarično predstavitev podatkov s sekundarnimi in sestavljenimi indeksi na vrhu MDBX. Obe knjižnici se distribuirata pod odobrenimi licencami OSI. Podprti so vsi trenutni operacijski sistemi in arhitekture ter ruski Elbrus 2000.

Zgodovinsko gledano je libmdbx globoka predelava LMDB DBMS in je boljši od svojega prednika v zanesljivosti, naboru funkcij in zmogljivosti. V primerjavi z LMDB libmdbx daje velik poudarek kakovosti kode, stabilnosti API-ja, testiranju in samodejnim preverjanjem. Priložen je pripomoček za preverjanje celovitosti strukture baze podatkov z nekaterimi zmož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 projekte financira Positive Technologies, od leta 2017 pa jih 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. Za libfpta je javno dostopen samo opis API-ja v obliki datoteke glave C/C++.

Glavne novosti, izboljšave in popravki, dodani od prejšnje novice 9. maja:

  • Omogoča ponovljive gradnje.
  • Odpravljena je napaka, zaradi katere je v zelo redkih okoliščinah lahko med izvršitvijo transakcije prišlo do zanke/zamrznitve. Težavo so ugotovili strokovnjaki Positive Tecnologies med internim testiranjem lastnih izdelkov.
  • Preizkusi so bili izboljšani in testni scenariji so bili razširjeni, da preverijo vsa dosegljiva neizomorfna stanja drevesa strani in vsebine GC v bazi podatkov.
  • V API-ju C++ je bil popravljen dodaten »noexcept«, dodane so bile dodatne preobremenitve za metodo »cursor::erase()«, implementaciji vmesnih pomnilnikov je bila prihranjena uporaba »std::string« za zagotavljanje poravnave (ustrezno za CLANG libstdc++).
  • Regresija v algoritmu razlitja umazanih strani (selektivni izmet spremenjenih strani baze podatkov), ki se je kazala z redko nepričakovano napako MDBX_PROBLEM pri spreminjanju podatkov v velikih transakcijah, je bila odpravljena.
  • Izveden je bil fazni test z dodatkom številnih pregledov za zagotovitev stabilnosti v primeru namerne poškodbe baze podatkov.
  • Odpravljena manjša opozorila UndefinedBehaviorSanitizer in težave s pregledovanjem prikritosti.
  • Popravljeno preverjanje zastarele in neuporabljene notranje zastavice »P_DIRTY« na ugnezdenih straneh znotraj slik zbirke podatkov, ki so jih ustvarile starejše različice knjižnice.
  • V skriptih CMake je bilo izboljšano iskanje komponent prevajalnika, potrebnih za LTO (optimizacija časa povezave).
  • Največje število hkratnih bralcev je bilo povečano na 32767.
  • Izboljšana zmogljivost pri uporabi Valgrind in AddressSanitizer.
  • V sistemu Windows je bila odpravljena rekurzivna uporaba zaklepanja SRW pri delu v načinu MDBX_NOTLS (brez uporabe lokalnega pomnilnika niti), generiranje bootida je bilo popravljeno, če se je sistemski čas spremenil, zaznavanje WSL1 in WSL2 je bilo izboljšano ter možnost odpri bazo podatkov na Plan 9, nameščeno prek DrvFS, je bilo dodano.
  • Skupno je bilo v 160 datotekah narejenih več kot 57 sprememb, dodanih je bilo ~5000 vrstic, ~2500 izbrisanih.

Posebej bi se rad zahvalil ekipi projekta Erigon (ekosistem Ethereum) za njihovo pomoč pri testiranju v scenarijih ekstremne uporabe. Pomembno je, da so bila v petih mesecih od izdaje libmdbx v0.10.0 z obsegom baze podatkov 1-2 TB v vsaki namestitvi Erigon (uporablja se na 7 % vozlišč Ethereum) prejeta samo tri poročila o poškodbi baze podatkov, vse ki je nastal zaradi zunanjih vzrokov in ne programskih napak: v dveh primerih so bile vzrok okvare RAM-a, v tretjem napaka pri ponastavitvi podatkov v določeni konfiguraciji pomnilniškega podsistema s pomočjo BTRFS.

Vir: opennet.ru

Dodaj komentar