Verëffentlechung vun High-Performance embedded DBMS libmdbx 0.10.4 a libfpta 0.3.9

D'libmdbx 0.10.4 (MDBX) Bibliothéik gouf verëffentlecht mat der Ëmsetzung vun enger héich performant kompakt embedded Schlësselwäert Datebank, an der assoziéierter libfpta 0.3.9 (FPTA) Bibliothéik, déi eng tabulär Representatioun vun Daten mat sekundären a kompositen Indexen implementéiert. uewen op MDBX. Béid Bibliothéike ginn ënner OSI guttgeheescht Lizenzen verdeelt. All aktuell Betribssystemer an Architekturen ginn ënnerstëtzt, wéi och de russesche Elbrus 2000.

Historesch ass libmdbx eng déif Ëmaarbechtung vun der LMDB DBMS an ass superior wéi säi Vorfahren an Zouverlässegkeet, Feature-Set a Performance. Am Verglach mat LMDB leet libmdbx vill Wäert op Codequalitéit, API Stabilitéit, Testen an automatiséiert Kontrollen. En Utility fir d'Integritéit vun der Datebankstruktur mat e puer Erhuelungsfäegkeeten ze kontrolléieren gëtt geliwwert.

Technologie-schlau, libmdbx bitt ACID, staark Changement Serialiséierung, an net-blockéierend Liesungen mat linearer Skaléierung iwwer CPU Cores. Auto-Kompaktifikatioun, automatesch Datebankgréisstverwaltung, a Range Query Estimatioun ginn ënnerstëtzt. Zënter 2016 gi Projete vu Positive Technologies finanzéiert an zënter 2017 a senge Produkter benotzt.

libmdbx bitt eng C ++ API, souwéi begeeschterten-ënnerstëtzte Sproochebindunge fir Rust, Haskell, Python, NodeJS, Ruby, Go, an Nim. Fir libfpta ass nëmmen d'API Beschreiwung ëffentlech verfügbar a Form vun enger C/C++ Header Datei.

Grouss Innovatiounen, Verbesserungen a Korrekturen bäigefüügt zënter der viregter Neiegkeet den 9. Mee:

  • Erlaabt reproduzéierbar Builds.
  • E Feeler fixéiert wéinst deem, a ganz seltenen Ëmstänn, eng Loop / Afréiere kéint während enger Transaktiounsverpflichtung optrieden. De Problem gouf vu Positive Technologies Spezialisten identifizéiert wärend intern Tester vun hiren eegene Produkter.
  • Tester goufen verbessert an Test Szenarie goufen erweidert all erreeche net-isomorphic Staaten vun der Säit Bam an GC Inhalt bannent der Datebank ze kontrolléieren.
  • An der C++ API ass en extra "noexcept" fixéiert ginn, zousätzlech Iwwerlaaschtunge goufen fir d'"Cursor :: erase ()" Method bäigefüügt, d'Ëmsetzung vu Puffer gouf d'Benotzung vun "std :: string" verschount fir d'Ausrichtung ze garantéieren (relevant fir CLANG libstdc ++).
  • Eng Regressioun am dreckeg Säit Spilling Algorithmus (selektiv Ausstouss vu geännerten Datebanksäiten), déi duerch e rare onerwaarte Feeler MDBX_PROBLEM manifestéiert gouf beim Änneren vun Daten a grousse Transaktiounen gouf eliminéiert.
  • E Phasing-Test gouf duerchgefouert mat der Zousatz vun enger Zuel vu Kontrollen fir Stabilitéit am Fall vun bewosst Schued un der Datebank ze garantéieren.
  • Fixéiert kleng Warnungen UndefinedBehaviorSanitizer a Coverity Scan Themen.
  • Fixéiert d'iwwerpréift vun der aler an net méi benotzter interner Fändel "P_DIRTY" op nestet Säiten bannent Datebankbiller erstallt vun eelere Versioune vun der Bibliothéik.
  • An CMake Scripten ass d'Sich no Compiler Komponenten erfuerderlech fir LTO (Link-Zäit Optimisatioun) verbessert ginn.
  • Déi maximal Unzuel u gläichzäiteg Lieser ass op 32767 eropgaang.
  • Verbesserte Leeschtung wann Dir Valgrind an AddressSanitizer benotzt.
  • Op Windows ass d'rekursive Notzung vum SRW-Sperre beim Schaffen am MDBX_NOTLS Modus (ouni Thread lokal Späichere benotzt) eliminéiert, Bootid Generatioun gouf fixéiert wann d'Systemzäit geännert huet, WSL1 a WSL2 Detektioun gouf verbessert, an d'Fäegkeet fir oppen eng Datebank op Plan 9 montéiert via DrvFS gouf dobäi.
  • Am Ganzen goufen méi wéi 160 Ännerungen op 57 Dateien gemaach, ~5000 Zeilen goufen derbäigesat, ~2500 goufen geläscht.

Ech wëll besonnesch dem Erigon Projektteam (Ethereum-Ökosystem) Merci soen fir hir Hëllef beim Testen an extremen Benotzungsszenarien. Et ass bedeitend datt a fënnef Méint zënter der Verëffentlechung vu libmdbx v0.10.0, mat engem Datebankvolumen vun 1-2 TB an all Erigon Installatioun (benotzt op 7% vun Ethereum Wirbelen), nëmmen dräi Berichter iwwer d'Datebankkorruptioun kritt goufen, all vun déi aus externe Grënn geschitt ass, an net Softwarefehler: an zwee Fäll war d'Ursaach RAM-Feeler, an der drëtter e Feeler beim Reset vun Daten an enger spezifescher Konfiguratioun vum Späichersubsystem mat BTRFS.

Source: opennet.ru

Setzt e Commentaire