Vydání vysoce výkonného vestavěného DBMS libmdbx 0.11.3

Knihovna libmdbx 0.11.3 (MDBX) byla vydána s implementací vysoce výkonné kompaktní vestavěné databáze klíč-hodnota. Kód libmdbx je licencován pod OpenLDAP Public License. Podporovány jsou všechny současné operační systémy a architektury, stejně jako ruský Elbrus 2000. Na konci roku 2021 se libmdbx používá jako backend úložiště ve dvou nejrychlejších klientech Ethereum – Erigon a nový „Shark“, který podle dostupných informace, je nejvýkonnějším klientem Ethereum.

Historicky je libmdbx hlubokým přepracováním LMDB DBMS a překonává jeho předchůdce, pokud jde o spolehlivost, sadu funkcí a výkon. Ve srovnání s LMDB klade libmdbx velký důraz na kvalitu kódu, stabilitu API, testování a automatické kontroly. S některými možnostmi obnovy je dodáván obslužný program pro kontrolu integrity struktury databáze.

Z technologického hlediska nabízí libmdbx ACID, silnou serializaci změn a neblokující čtení s lineárním škálováním napříč jádry CPU. Je podporována automatická kompaktifikace, automatická správa velikosti databáze a odhad dotazů na rozsah. Od roku 2016 je projekt financován společností Positive Technologies a ve svých produktech je používán od roku 2017.

libmdbx nabízí C++ API a také nadšence podporované jazykové vazby pro Rust, Haskell, Python, NodeJS, Ruby, Go a Nim.

Hlavní novinky, vylepšení a opravy přidané od předchozí zprávy z 11. října:

  • C++ API je považováno za připravené k použití.
  • Aktualizace dat GC při provádění obrovských transakcí byla výrazně zrychlena, což je zvláště důležité při použití libmdbx v ekosystému Ethereum.
  • Interní podpis formátu databáze byl změněn tak, aby podporoval automatickou aktualizaci, která je pro uživatele zcela transparentní. To vám umožňuje eliminovat falešně pozitivní zprávy o poškození databáze, když se ke čtení transakcí zaznamenaných aktuálními verzemi používají zastaralé verze knihovny.
  • Přidány funkce mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() a mdbx_env_get_syncbytes(). Přidána podpora pro operaci MDBX_SET_UPPERBOUND.
  • Všechna varování při sestavování se všemi podporovanými kompilátory v režimech C++ 11/14/17/20 byla odstraněna. Je zajištěna kompatibilita se staršími kompilátory: clang od 3.9, gcc od 4.8, včetně sestavení pomocí cdevtoolset-9 pro CentOS/RHEL 7.
  • Opravena možnost konfliktu meta stránky po ručním přepnutí na konkrétní meta stránku pomocí utility mdbx_chk.
  • Opravena neočekávaná chyba MDBX_PROBLEM vracená při přepisování starších metastránek.
  • Opraveno vracení MDBX_NOTFOUND v případě nepřesné shody při zpracování požadavku MDBX_GET_BOTH.
  • Opravena chyba kompilace v Linuxu v absenci hlavičkových souborů s popisy rozhraní s jádrem.
  • Opraven konflikt mezi interním příznakem MDBX_SHRINK_ALLOWED a možností MDBX_ACCEDE.
  • Bylo odstraněno několik zbytečných kontrol.
  • Opraven neočekávaný návrat MDBX_RESULT_TRUE z funkce mdbx_env_set_option().
  • Celkem bylo provedeno více než 90 změn v 25 souborech, bylo přidáno ~1300 řádků, ~600 bylo odstraněno.

Zdroj: opennet.ru

Přidat komentář