Vydání vysoce výkonné embedded DB libmdbx 0.11.3

Byla uvolněna knihovna libmdbx 0.11.3 (MDBX) s implementací vysoce výkonné kompaktní vestavěné databáze typu klíč-hodnota. Kód libmdbx je distribuován pod licencí OpenLDAP Public License. Podporovány jsou všechny aktuální operační systémy a architektury, včetně ruského Elbrus 2000. Na konci roku 2021 se libmdbx používá jako backend úložiště ve dvou nejrychlejších klientech Ethereum — Erigon a nová „Šelma“, která podle dostupných informací je nejvýkonnějším klientem Ethereum.

Historicky je libmdbx hlubokým přerozdělením databázového systému LMDB a překonává svého předchůdce v oblasti spolehlivosti, funkcionality a výkonu. Na rozdíl od LMDB věnuje libmdbx velkou pozornost kvalitě kódu, stabilnímu API, testování a automatickým kontrolám. Dodává se nástroj pro kontrolu integrity struktury databáze s některými možnostmi obnovy.

Technologicky libmdbx nabízí ACID, striktní serializaci změn a neblokující čtení s lineárním škálováním podle jader CPU. Podporována je automatická kompakce, automatické řízení velikosti DB, odhad objemu výběrů podle rozsahů (range query estimation). Od roku 2016 je projekt financován společností Positive Technologies a od roku 2017 se používá v jejích produktech.

Pro libmdbx je nabízena C++ API, stejně jako podporované vazby od nadšenců pro jazyky Rust, Haskell, Python, NodeJS, Ruby, Go, Nim.

Hlavní novinky, úpravy a opravy přidané po předchozí zprávě z 11. října:

  • C++ API je považováno za připravené k použití.
  • Výrazně bylo zrychleno aktualizování dat GC při zajištění obrovských transakcí, což je zvláště aktuální při použití libmdbx v ekosystému Ethereum.
  • Byla změněna vnitřní signatura formátu DB s podporou automatické aktualizace, která je zcela průhledná pro uživatele. To umožňuje vyloučit falešně pozitivní zprávy o poškození DB, když zastaralé verze knihovny jsou používány k přečtení transakcí, které byly zajištěny aktuálními verzemi.
  • Byly přidány funkce mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() a mdbx_env_get_syncbytes(). Přidána podpora operace MDBX_SET_UPPERBOUND.
  • Byly odstraněny všechny varování při sestavení všemi podporovanými kompilátory v režimech C++ 11/14/17/20. Zajištěna byla kompatibilita se zastaralými kompilátory: clang od verze 3.9, gcc od verze 4.8, včetně sestavení pomocí sdevtoolset-9 pro CentOS/RHEL 7.
  • Byla odstraněna možnost konfliktu meta-stránek po ručním přepnutí na určitou meta-stránku pomocí nástroje mdbx_chk.
  • Byl opraven návrat neočekávané chyby MDBX_PROBLEM při přepisování zastaralých meta-stránek.
  • Opraveno vracení MDBX_NOTFOUND v případě nepřesného shody při zpracování požadavku MDBX_GET_BOTH.
  • Odstraněna chyba kompilace na Linuxu při absenci hlavičkových souborů s popisy rozhraní s jádrem.
  • Opraven konflikt mezi vnitřní vlajkou MDBX_SHRINK_ALLOWED a volbou MDBX_ACCEDE.
  • Odstraněno několik nadbytečných assert kontrol.
  • Opraveno nečekané vracení MDBX_RESULT_TRUE z funkce mdbx_env_set_option().
  • Celkově bylo provedeno více než 90 změn ve 25 souborech, přidáno ~1300 řádků, odstraněno ~600.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster