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