Verëffentlechung vun High-Performance embedded DBMS libmdbx 0.11.3

D'libmdbx 0.11.3 (MDBX) Bibliothéik gouf mat der Ëmsetzung vun enger héich performant kompakt embedded Schlësselwäert Datebank verëffentlecht. De libmdbx Code ass ënner der OpenLDAP Public License lizenzéiert. All aktuell Betribssystemer an Architekturen ginn ënnerstëtzt, wéi och de russesche Elbrus 2000. Um Enn vum 2021 gëtt libmdbx als Späichere Backend an den zwee schnellsten Ethereum Clienten benotzt - Erigon an den neien "Shark", deen, laut verfügbare Informatiounen, ass den héchste Leeschtung Ethereum Client.

Historesch ass libmdbx eng déif Ëmaarbechtung vun der LMDB DBMS an ass besser wéi säi Virfueren 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-Ufro-Estimatioun ginn ënnerstëtzt. Zënter 2016 gëtt de Projet vu Positive Technologies finanzéiert a gouf 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.

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

  • D'C ++ API gëtt als prett fir ze benotzen ugesinn.
  • D'Aktualiséierung vu GC Daten beim Engagement vun enormen Transaktioune gouf wesentlech beschleunegt, wat besonnesch wichteg ass wann Dir libmdbx am Ethereum-Ökosystem benotzt.
  • Déi intern Ënnerschrëft vum Datebankformat gouf geännert fir automatesch Aktualiséierung z'ënnerstëtzen, wat fir d'Benotzer komplett transparent ass. Dëst erlaabt Iech falsch-positiv Messagen iwwer d'Datebankkorruptioun ze eliminéieren wann al Versioune vun der Bibliothéik benotzt gi fir Transaktiounen ze liesen, déi vun aktuellen Versiounen opgeholl goufen.
  • Fonctiounen dobäigesat mdbx_env_get_syncbytes (), mdbx_env_get_syncperiod () an mdbx_env_get_syncbytes (). Zousätzlech Ënnerstëtzung fir d'MDBX_SET_UPPERBOUND Operatioun.
  • All Warnungen beim Bauen mat all ënnerstëtzte Compiler an C ++ 11/14/17/20 Modi goufen éliminéiert. Kompatibilitéit mat legacy Compilers ass gesuergt: clang ab 3.9, gcc ab 4.8, inklusiv Assemblée mat cdevtoolset-9 fir CentOS / RHEL 7.
  • Fixéiert d'Méiglechkeet vun engem Meta-Säitkonflikt nodeems se manuell op eng spezifesch Meta-Säit ëmgewandelt goufen mam mdbx_chk Utility.
  • Fixéiert onerwaart MDBX_PROBLEM Feeler, deen zréckkoum wann Dir legacy Meta Säiten iwwerschreift.
  • Fixéiert zréckginn MDBX_NOTFOUND am Fall vun engem inexakte Match beim Veraarbechtung vun enger MDBX_GET_BOTH Ufro.
  • Fixéiert e Kompiléierungsfehler op Linux an der Verontreiung vu Headerdateien mat Beschreiwunge vun Interfaces mam Kernel.
  • E Konflikt tëscht dem MDBX_SHRINK_ALLOWED internen Fändel an der MDBX_ACCEDE Optioun fixéiert.
  • Verschidde onnéideg behaapt Kontrollen goufen eliminéiert.
  • Fix onerwaart Retour vun MDBX_RESULT_TRUE aus mdbx_env_set_option () Funktioun.
  • Am Ganzen goufen méi wéi 90 Ännerungen op 25 Dateien gemaach, ~1300 Zeilen goufen derbäigesat, ~600 goufen geläscht.

Source: opennet.ru

Setzt e Commentaire