Biblioteka libmdbx 0.11.3 (MDBX) objavljena je s implementacijom kompaktne ugrađene baze podataka ključ-vrijednost visokih performansi. Kod libmdbx licenciran je pod javnom licencom OpenLDAP. Podržani su svi trenutni operativni sustavi i arhitekture, kao i ruski Elbrus 2000. Krajem 2021. libmdbx se koristi kao backend za pohranu u dva najbrža Ethereum klijenta - Erigon i novi “Shark”, koji, prema dostupnim informacije, je Ethereum klijent s najvišim performansama.
Povijesno gledano, libmdbx je dubok redizajn LMDB DBMS-a i nadmašuje svog prethodnika u smislu pouzdanosti, skupa značajki i performansi. U usporedbi s LMDB-om, libmdbx stavlja veliki naglasak na kvalitetu koda, stabilnost API-ja, testiranje i automatizirane provjere. Pomoćni program za provjeru integriteta strukture baze podataka isporučuje se s nekim opcijama oporavka.
Tehnološki gledano, libmdbx nudi ACID, snažnu serijalizaciju promjena i čitanje bez blokiranja s linearnim skaliranjem preko CPU jezgri. Podržani su automatsko sažimanje, automatsko upravljanje veličinom baze podataka i procjena upita raspona. Od 2016. godine projekt financira Positive Technologies i koristi se u svojim proizvodima od 2017. godine.
libmdbx nudi C++ API, kao i jezična povezivanja podržana od strane entuzijasta za Rust, Haskell, Python, NodeJS, Ruby, Go i Nim.
Glavne inovacije, poboljšanja i ispravci dodani od prethodne vijesti 11. listopada:
- 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 ekosustavu.
- Interni potpis formata baze podataka je promijenjen kako bi podržao automatsko ažuriranje, što je potpuno transparentno za korisnike. To vam omogućuje da eliminirate lažno pozitivne poruke o oštećenju baze podataka kada se zastarjele verzije biblioteke koriste za čitanje transakcija koje su zabilježile trenutne verzije.
- Dodane su funkcije mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() i mdbx_env_get_syncbytes(). Dodana podrška za operaciju MDBX_SET_UPPERBOUND.
- Uklonjena su sva upozorenja prilikom izrade sa svim podržanim kompajlerima u C++ 11/14/17/20 modovima. Osigurana je kompatibilnost s naslijeđenim kompajlerima: clang počevši od 3.9, gcc počevši od 4.8, uključujući sklapanje pomoću cdevtoolset-9 za CentOS/RHEL 7.
- Ispravljena je 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 pogreška MDBX_PROBLEM koja se vraćala prilikom prepisivanja naslijeđenih meta stranica.
- Popravljeno vraćanje MDBX_NOTFOUND u slučaju netočnog podudaranja prilikom obrade MDBX_GET_BOTH zahtjeva.
- Ispravljena je pogreška kompilacije na Linuxu u nedostatku datoteka zaglavlja s opisima sučelja s jezgrom.
- Riješen je sukob između interne oznake MDBX_SHRINK_ALLOWED i opcije MDBX_ACCEDE.
- Uklonjeno je nekoliko nepotrebnih provjera tvrdnji.
- Popravljen neočekivani povratak MDBX_RESULT_TRUE iz funkcije mdbx_env_set_option().
- Ukupno je napravljeno više od 90 izmjena u 25 datoteka, dodano je ~1300 redaka, ~600 je izbrisano.
Izvor: opennet.ru