Vydání vysoce výkonné vestavěné DBMS libmdbx 0.10.4 a libfpta 0.3.9

Byly vydány knihovny libmdbx 0.10.4 (MDBX) s implementací vysoce výkonné kompaktní embedded databáze klíč-hodnota a související knihovny libfpta 0.3.9 (FPTA), která nad MDBX implementuje tabulkové zobrazení dat s sekundárními a složenými indexy. Obě knihovny jsou distribuovány pod licencemi schválenými OSI. Podporovány jsou všechny aktuální operační systémy a architektury, včetně ruského Elbrus 2000.

Historicky je libmdbx hlubokou revizí databázového systému LMDB a převyšuje svého předchůdce v spolehlivosti, možnostech a výkonu. Ve srovnání s LMDB klade libmdbx velký důraz na kvalitu kódu, stabilní práci API, testování a automatické kontroly. Součástí dodávky je nástroj pro kontrolu integrity struktury databáze s některými možnostmi obnovení.

Technologicky libmdbx nabízí ACID, přísnou serializaci změn a nezablokované čtení s lineárním škálováním ve více jádrech CPU. Podporována je automatická kompaktní, automatické řízení velikosti databáze a odhad objemu výběrových dotazů podle rozsahů (range query estimation). Od roku 2016 je projekt financován společností Positive Technologies a od roku 2017 je používán v jejích produktech.

Pro libmdbx je k dispozici C++ API a také jsou podporovány vazby k jazykům Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, které vytvořili nadšenci. Pro libfpta je veřejně dostupný pouze popis API ve formě hlavičkového souboru C/C++.

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

  • Byla zajištěna možnost reprodukovatelných sestavení.
  • Byla odstraněna chyba, kvůli které mohlo při velmi vzácných okolnostech během potvrzování transakce docházet k zacyklení/závěsu. Problém byl odhalen specialisty společnosti Positive Technologies při interním testování vlastních produktů.
  • Byly vylepšeny testy a rozšířeny testovací scénáře pro kontrolu všech dosažitelných neizomorfních stavů stromu stránek a obsahu GC uvnitř databáze.
  • V C++ API byla opravena nadbytečná „noexcept“, přidány další přetížení pro metodu „cursor::erase()“, implementace bufferů byla zbavena použití „std::string“ pro zajištění zarovnání (platí pro CLANG libstdc++).
  • Odstraněn regres v algoritmu spillage nečitelných stránek (vybíravé vyřazení změněných stránek DB) projevující se vzácnou nečekanou chybou MDBX_PROBLEM při změně dat ve velkých transakcích.
  • Byla provedena kontrola fázování s přidáním řady kontrol pro zajištění stability při úmyslném poškození DB.
  • Byla odstraněna drobná upozornění UndefinedBehaviorSanitizer a problémy Coverity Scan.
  • Opraveno ověření zastaralé a již nepoužívané vnitřní vlajky „P_DIRTY“ na vnořených stránkách uvnitř obrazů DB vytvořených starými verzemi knihovny.
  • Ve skriptech CMake byla zdokonalena hledání komponentů překladače potřebných pro LTO (optimalizace v čase připojení).
  • Maximální počet současných čtenářů byl zvýšen na 32767.
  • Zrychlena práce při použití Valgrind a AddressSanitizer.
  • Na Windows bylo odstraněno rekurzivní použití SRW-lock při práci v režimu MDBX_NOTLS (bez použití místního úložiště vláken), opravena generace bootid v případě změny systémového času, zdokonaleno detekování WSL1 a WSL2, přidána možnost otevření DB na Plan 9 připojené pomocí DrvFS.
  • Celkem bylo provedeno více než 160 změn ve 57 souborech, přidáno ~5000 řádků, odstraněno ~2500.

Zvláštní poděkování patří týmu projektu Erigon (ekosystém Ethereum) za pomoc při testování v extrémních scénářích použití. Zajímavé je, že za pět měsíců od vydání libmdbx v0.10.0, při objemu DB 1-2 TB v každé instalaci Erigon (používá se na 7 % uzlů Ethereum), bylo obdrženo pouze tři hlášení o poškození DB, všechny způsobilé vnějšími příčinami, nikoli chybami SW: v dvou případech byly příčinou problémy RAM, v třetím chyba vymazání dat ve specifické konfiguraci úložné subsystému s využitím BTRFS.

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