Vydanie vysoko výkonného zabudovaného SÚDB libmdbx 0.10.4 a libfpta 0.3.9

Prezentácia knižníc libmdbx 0.10.4 (MDBX) so zavedením vysoko výkonnej kompaktnej vstavané databázy typu kľúč-hodnota a súvisiacej knižnice libfpta 0.3.9 (FPTA), ktorá implementuje tabulárne zobrazenie údajov s sekundárnymi a zloženými indexmi nad MDBX. Obe knižnice sú distribuované pod licenciami schválenými OSI. Podporované sú všetky aktuálne operačné systémy a architektúry, ako aj ruský Elbrus 2000.

Historicky je libmdbx hlbokou revíziou DBMS LMDB a prekračuje svojho predchodcu z hľadiska spoľahlivosti, rozsahu funkcií a výkonu. V porovnaní s LMDB dáva libmdbx veľký dôraz na kvalitu kódu, stabilné API, testovanie a automatizované kontroly. Dodáva sa s nástrojom na kontrolu integrity štruktúry databázy s niektorými schopnosťami obnovenia.

Technologicky libmdbx ponúka ACID, prísnu serializáciu zmien a neblokujúce čítanie s lineárnym škálovaním na CPU jadrá. Podporuje sa automatická kompakcia, automatické riadenie veľkosti databázy a odhad objemu dotazov podľa rozsahov (range query estimation). Od roku 2016 je projekt financovaný spoločnosťou Positive Technologies a od roku 2017 sa používa v jej produktoch.

Pre libmdbx sa ponúka C++ API, ako aj podporované nadšencami väzby na jazyky Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. Pre libfpta je verejne dostupný iba popis API vo forme hlavičkového súboru C/C++.

Hlavné novinky, vylepšenia a opravy pridané od poslednej správy zo 9. mája:

  • Zabezpečená možnosť reprodukovateľných zostavení.
  • Opravená chyba, kvôli ktorej sa pri veľmi zriedkavých okolnostiach počas potvrdenia transakcie mohlo vyskytnúť zaseknutie. Problém odhalili odborníci Positive Technologies pri internom testovaní vlastných produktov.
  • Vylepšené testy a rozšírené testovacie scenáre na kontrolu všetkých dosiahnuteľných neizomorfických stavov stromu strán a obsahu GC v databáze.
  • V C++ API opravené zbytočné „noexcept“, pridané dodatočné preťaženia pre metódu „cursor::erase()“, implementácia búferov zbavená používania „std::string“ na zabezpečenie zarovnania (aktuálne pre CLANG libstdc++).
  • Opraven regres v algoritme prepisovania špinavých strán (výberové vytesnenie zmenených stránok DB), ktoré sa prejavovalo zriedkavou neočakávanou chybou MDBX_PROBLEM pri zmene údajov vo veľkých transakciách.
  • Bol vykonaný test fázu s pridaním niekoľkých kontrol pre zabezpečenie stability pri zámernom poškodeniu DB.
  • Opravené menšie varovania UndefinedBehaviorSanitizer a problémy Coverity Scan.
  • Opravená kontrola zastaraného a už nepoužívaného vnútorného pr flagu „P_DIRTY“ vo vnorených stránkach v rámci obrazov DB vytvorených staršími verziami knižnice.
  • Vo skriptoch CMake bola vylepšená lokalizácia komponentov pre kompilátor potrebných na LTO (optimalizácia v čase prepojenia).
  • Maximálny počet súbežných čitateľov bol zvýšený na 32767.
  • Zrýchlená práca pri používaní Valgrindu a AddressSanitizeru.
  • Na Windows bolo odstránené rekurzívne používanie SRW-zamku pri práci v režime MDBX_NOTLS (bez použitia lokálneho úložiska threadu), opravená generácia bootid v prípade zmeny systémového času, vylepšené detekovanie WSL1 a WSL2, pridaná možnosť otvorenia DB na Plan 9 pripojenom prostredníctvom DrvFS.
  • Celkom bolo vykonaných viac ako 160 zmien v 57 súboroch, pridaných ~5000 riadkov, odstránených ~2500.

Osobitne by som chcel poďakovať tímu projektu Erigon (ekosystém Ethereum) za pomoc pri testovaní v extrémnych scenároch. Je pozoruhodné, že počas piatich mesiacov od vydania libmdbx v0.10.0, pri objeme DB 1-2 TB v každej inštalácii Erigon (používa sa na 7% uzlov Ethereum), boli prijaté iba tri hlásenia o poškodení DB, všetky sa vyskytli z vonkajších príčin, nie z chýb softvéru: v dvoch prípadoch boli príčinou problémy s RAM, v treťom chybné vynulovanie údajov v špecifickej konfigurácii úložného subsystému s využitím BTRFS.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster