Izdana je biblioteka libmdbx 0.11.3 (MDBX) koja omogućava visokoefikasnu kompaktno ugrađenu bazu podataka tipa ključ-vrednost. Kod libmdbx je distribuiran pod licencom OpenLDAP Public License. Podržani su svi aktuelni operativni sistemi i arhitekture, kao i ruski Elbrus 2000. Do kraja 2021. godine, libmdbx se koristi kao backend za skladištenje u dva najbrža klijenta za Ethereum — Erigon i novi 'Ajkula', za kojeg su dostupne informacije da je najefikasniji klijent za Ethereum.
Historijski, libmdbx je temeljita rekonstrukcija DBMS-a LMDB i nadilazi svog prethodnika u pouzdanosti, setu mogućnosti i performansama. U usporedbi s LMDB, libmdbx se posebno fokusira na kvalitetu koda, stabilnost rada API-a, testiranje i automatske provjere. Isporučuje se s alatkom za provjeru integriteta strukture Baze podataka s nekim mogućnostima oporavka.
Tehnički, libmdbx nudi ACID, strogu serijalizaciju promena i neblokirajuće čitanje sa linearnim skaliranjem po CPU jezgrima. Podržava automatsku kompaktifikaciju, automatsko upravljanje veličinom baze podataka, procenu obima uzoraka po opsegu (range query estimation). Od 2016. godine projekat se finansira od strane Positive Technologies i od 2017. godine se koristi u njihovim proizvodima.
Za libmdbx je ponuđen C++ API, kao i podržane veze koje su kreirali entuzijasti za jezike Rust, Haskell, Python, NodeJS, Ruby, Go, Nim.
Glavne novine, dorade i ispravke dodane nakon prethodne vesti od 11. oktobra:
- C++ API se smatra spremnim za upotrebu.
- Značajno je ubrzano ažuriranje podataka GC prilikom beleženja velikih transakcija, što je posebno važno kada se libmdbx koristi u ekosistemu Ethereum.
- Promenjena je unutrašnja potpisna struktura formata baze podataka uz podršku za automatsko ažuriranje, koje je potpuno transparentno za korisnike. To omogućava isključivanje lažno pozitivnih izvestaja o oštećenju baze podataka kada se zastarele verzije biblioteke koriste za čitanje transakcija zabeleženih aktuelnim verzijama.
- Dodane su funkcije mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() i mdbx_env_get_syncbytes(). Dodana je podrška za operaciju MDBX_SET_UPPERBOUND.
- Eliminisana su sva upozorenja prilikom izgradnje svim podržanim kompajlerima u režimima C++ 11/14/17/20. Obezbeđena je kompatibilnost sa zastarelim kompajlerima: clang od 3.9, gcc od 4.8, uključujući izgradnju putem devtoolset-9 za CentOS/RHEL 7.
- Uklonjena je mogućnost sukoba meta-stranica nakon ručnog prebacivanja na određenu meta-stranicu pomoću alata mdbx_chk.
- Ispravljena je neočekivana greška MDBX_PROBLEM prilikom ponovnog pisanja zastarelih meta-stranica.
- Ispravljen povrat MDBX_NOTFOUND u slučaju netočnog podudaranja prilikom obrade zahtjeva MDBX_GET_BOTH.
- Ispravljen je problem s kompajliranjem na Linuxu u slučaju nedostatka zaglavlja s opisima sučelja s jezgrom.
- Ispravljena je kolizija između unutarnje zastavice MDBX_SHRINK_ALLOWED i opcije MDBX_ACCEDE.
- Uklonjena su neka suvišna assert-provjeravanja.
- Ispravljen je neočekivani povrat MDBX_RESULT_TRUE iz funkcije mdbx_env_set_option().
- Ukupno je izvršeno više od 90 promjena u 25 datoteka, dodano je ~1300 linija, uklonjeno je ~600.
Izvor: opennet.ru
