Biblioteka libmdbx 0.11.3 (MDBX) objavljena je sa implementacijom kompaktne ugrađene baze podataka ključ/vrijednost visokih performansi. Libmdbx kod je licenciran pod OpenLDAP javnom licencom. Podržani su svi trenutni operativni sistemi i arhitekture, kao i ruski Elbrus 2000. Krajem 2021. godine, libmdbx će se koristiti kao pozadina za skladištenje u dva najbrža Ethereum klijenta - Erigon i novi “Shark”, koji, prema dostupnim informacije, je Ethereum klijent s najvišim performansama.
Istorijski gledano, libmdbx je duboki redizajn LMDB DBMS-a i nadmašuje svog prethodnika u smislu pouzdanosti, skupa karakteristika i performansi. U poređenju sa LMDB, libmdbx stavlja veliki naglasak na kvalitet koda, stabilnost API-ja, testiranje i automatizovane provere. Pomoćni program za provjeru integriteta strukture baze podataka se isporučuje s nekim opcijama oporavka.
Tehnološki gledano, libmdbx nudi ACID, snažnu serijalizaciju promjena i neblokirajuće čitanje s linearnim skaliranjem kroz CPU jezgre. Podržana je automatska kompaktifikacija, automatsko upravljanje veličinom baze podataka i procjena opsega upita. Od 2016. godine projekat je finansiran od strane Positive Technologies i koristi se u svojim proizvodima od 2017. godine.
libmdbx nudi C++ API, kao i jezičke veze koje podržavaju entuzijasti za Rust, Haskell, Python, NodeJS, Ruby, Go i Nim.
Glavne inovacije, poboljšanja i ispravke dodane od prethodne vijesti 11. oktobra:
- C++ API se smatra spremnim za upotrebu.
- Ažuriranje GC podataka prilikom izvršavanja velikih transakcija značajno je ubrzano, što je posebno važno kada se libmdbx koristi u Ethereum ekosistemu.
- Interni potpis formata baze podataka je promijenjen da podržava automatsko ažuriranje, koje je potpuno transparentno za korisnike. Ovo vam omogućava da eliminišete lažno pozitivne poruke o korupciji baze podataka kada se zastarele verzije biblioteke koriste za čitanje transakcija snimljenih trenutnim verzijama.
- Dodane funkcije mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() i mdbx_env_get_syncbytes(). Dodata podrška za operaciju MDBX_SET_UPPERBOUND.
- Sva upozorenja kada se gradi sa svim podržanim kompajlerima u C++ 11/14/17/20 modovima su eliminisana. Osigurana je kompatibilnost sa zastarjelim kompajlerima: clang počevši od 3.9, gcc počevši od 4.8, uključujući asembler pomoću cdevtoolset-9 za CentOS/RHEL 7.
- Ispravljena mogućnost sukoba meta stranica nakon ručnog prebacivanja na određenu meta stranicu pomoću uslužnog programa mdbx_chk.
- Ispravljena je neočekivana greška MDBX_PROBLEM koja se vraća prilikom prepisivanja naslijeđenih meta stranica.
- Popravljeno vraćanje MDBX_NOTFOUND u slučaju netačnog podudaranja prilikom obrade MDBX_GET_BOTH zahtjeva.
- Ispravljena je greška pri kompilaciji na Linuxu u odsustvu datoteka zaglavlja s opisima sučelja s kernelom.
- Popravljen je sukob između interne zastavice MDBX_SHRINK_ALLOWED i opcije MDBX_ACCEDE.
- Nekoliko nepotrebnih provjera tvrdnji je eliminirano.
- Ispravljen neočekivani povratak MDBX_RESULT_TRUE iz funkcije mdbx_env_set_option().
- Ukupno je napravljeno više od 90 izmjena u 25 datoteka, ~1300 linija je dodano, ~600 je obrisano.
izvor: opennet.ru