Vydanie vysoko výkonného vstavaného DBMS libmdbx 0.11.3

Knižnica libmdbx 0.11.3 (MDBX) bola vydaná s implementáciou vysokovýkonnej kompaktnej vloženej databázy kľúč-hodnota. Kód libmdbx je licencovaný v rámci verejnej licencie OpenLDAP. Podporované sú všetky súčasné operačné systémy a architektúry, ako aj ruský Elbrus 2000. Koncom roka 2021 sa libmdbx používa ako backend úložiska v dvoch najrýchlejších klientoch Ethereum – Erigon a nový „Shark“, ktorý podľa dostupných informácie, je najvýkonnejším klientom Ethereum.

Historicky je libmdbx hlbokým prepracovaním LMDB DBMS a je lepší ako jeho predchodca v spoľahlivosti, sade funkcií a výkonu. V porovnaní s LMDB kladie libmdbx veľký dôraz na kvalitu kódu, stabilitu API, testovanie a automatické kontroly. Dodáva sa pomocný program na kontrolu integrity databázovej štruktúry s niektorými schopnosťami obnovy.

Z technologického hľadiska ponúka libmdbx ACID, silnú serializáciu zmien a neblokujúce čítanie s lineárnym škálovaním medzi jadrami CPU. Podporovaná je automatická kompaktifikácia, automatická správa veľkosti databázy a odhad dotazu na rozsah. Od roku 2016 je projekt financovaný spoločnosťou Positive Technologies a vo svojich produktoch sa používa od roku 2017.

libmdbx ponúka C++ API, ako aj nadšencom podporované jazykové väzby pre Rust, Haskell, Python, NodeJS, Ruby, Go a Nim.

Hlavné novinky, vylepšenia a opravy pridané od predchádzajúcej správy z 11. októbra:

  • C++ API sa považuje za pripravené na použitie.
  • Aktualizácia údajov GC pri vykonávaní obrovských transakcií bola výrazne zrýchlená, čo je obzvlášť dôležité pri používaní libmdbx v ekosystéme Ethereum.
  • Interný podpis formátu databázy bol zmenený tak, aby podporoval automatickú aktualizáciu, ktorá je pre používateľov úplne transparentná. To vám umožňuje eliminovať falošne pozitívne správy o poškodení databázy, keď sa na čítanie transakcií zaznamenaných aktuálnymi verziami používajú zastarané verzie knižnice.
  • Pridané funkcie mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() a mdbx_env_get_syncbytes(). Pridaná podpora pre operáciu MDBX_SET_UPPERBOUND.
  • Všetky upozornenia pri zostavovaní so všetkými podporovanými kompilátormi v režimoch C++ 11/14/17/20 boli odstránené. Je zabezpečená kompatibilita so staršími kompilátormi: clang od 3.9, gcc od 4.8, vrátane zostavy pomocou cdevtoolset-9 pre CentOS/RHEL 7.
  • Opravená možnosť konfliktu metastránok po manuálnom prepnutí na konkrétnu metastránku pomocou utility mdbx_chk.
  • Opravená neočakávaná chyba MDBX_PROBLEM, ktorá sa vracala pri prepisovaní starých metastránok.
  • Opravené vrátenie MDBX_NOTFOUND v prípade nepresnej zhody pri spracovaní požiadavky MDBX_GET_BOTH.
  • Opravená chyba kompilácie v Linuxe v neprítomnosti hlavičkových súborov s popisom rozhraní s jadrom.
  • Opravený konflikt medzi interným príznakom MDBX_SHRINK_ALLOWED a možnosťou MDBX_ACCEDE.
  • Bolo odstránených niekoľko zbytočných kontrol tvrdení.
  • Opravený neočakávaný návrat MDBX_RESULT_TRUE z funkcie mdbx_env_set_option().
  • Celkovo bolo vykonaných viac ako 90 zmien v 25 súboroch, bolo pridaných ~1300 riadkov, ~600 bolo odstránených.

Zdroj: opennet.ru

Pridať komentár