Vabastus libmdbx 0.11.3 (MDBX) raamatukogust, millel on kõrge jõudlusega kompaktsed integreeritud võtme-väärtuse andmebaasid. Libmdbx kood on tasuta allikaga OpenLDAP Public License litsentsi all. Toetatakse kõiki praegusi operatsioonisüsteeme ja arhitektuure, sealhulgas Venemaa Elbrus 2000. Aasta lõpu seisuga kasutatakse libmdbx kahes kõige kiiremades Ethereum'i klientides — Erigon ja uus „Hai“, mis saadud teabe kohaselt on kõige kõrgema jõudlusega Ethereum'i klient.
Ajalooliselt on libmdbx sügav ümbertöötamine LMDB andmebaasihaldurist ja ületab oma esivanemat usaldusväärsuse, funktsionaalsuse ja jõudluse poolest. Erinevalt LMDB-st, pööratakse libmdbx-is suurt tähelepanu koodi kvaliteedile, API stabiilsele toimimisele, testimisele ja automaatsetele kontrollidele. Koos tuleb kaasas andmebaasi struktuuri terviklikkuse kontrollimise utiliit, millel on mõned taastamisvõimalused.
Tehniliselt pakub libmdbx ACID-tugiteenuseid, ranget muudatuste serialiseerimist ja mitteblokeerivat lugemist, millel on lineaarne skaleeritavus CPU südamike järgi. Toetatakse automaatset kompaktimist, automaatset andmebaasi suuruse haldamist, vahemike (range) päringute hindamist. Alates 2016. aastast rahastab projekti Positive Technologies ja alates 2017. aastast kasutatakse seda nende toodetes.
Libmdbx pakub C++ API-d, samuti toetavad entusiastid sidemeid keeltega Rust, Haskell, Python, NodeJS, Ruby, Go, Nim.
Peamised uuendused, täiustused ja parandused, mis on lisatud pärast eelmisi uudiseid 11. oktoobril:
- C++ API on valmis kasutamiseks.
- Andmete GC värskendamine on oluliselt kiirem suurte tehingute kinnitamise korral, mis on eriti oluline libmdbx kasutamisel Ethereum'i ökosüsteemis.
- Andmebaasi formaadi sisemine allkiri on muudetud automaatse uuendamise toetamiseks, mis on kasutajatele täiesti läbipaistev. See välistab vale positiivsed nädalad andmebaasi kahjustamise kohta, kui vananenud raamatukogu versioonid kasutatakse hilisema kinnitatud tehingute lugemiseks.
- Lisatud funktsioonid mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() ja mdbx_env_get_syncbytes(). Lisatud tugi operatsioonile MDBX_SET_UPPERBOUND.
- Kõik hoiatused on eemaldatud kõigi toetatud kompilatsioonide jaoks, mis on kokku pandud C++ 11/14/17/20 režiimides. Tagatud on ühilduvus vananenud kompilaatoreid: clang versioonist 3.9, gcc versioonist 4.8, sealhulgas kogumine cdevtoolset-9 kaudu CentOS/RHEL 7 jaoks.
- Eemaldatud on meta-lehekülgede konflikt pärast käsi-vahetust kindla meta-lehekülje juurde utiliidi mdbx_chk abil.
- Parandatud ootamatud MDBX_PROBLEM vead vananenud meta-lehekülgede ülekirjutamisel.
- Parandatud MDBX_NOTFOUND tagastamine ebatäpsete vastete korral MDBX_GET_BOTH päringutöötluses.
- Eemaldatud on kompileerimisviga Linuxis, kui puuduvad pealkirjad, mis kirjeldavad liideseid tuumaga.
- Parandatud konflikt sisemise flaga MDBX_SHRINK_ALLOWED ja võimaluse MDBX_ACCEDE vahel.
- Eemaldatud on mitmed liigsed assert-kontrollid.
- Parandatud ootamatu MDBX_RESULT_TRUE tagastamine funktsioonist mdbx_env_set_option().
- Kokku on tehtud üle 90 muudatuse 25 failis, lisatud ~1300 rida, eemaldatud ~600.
Allikas: opennet.ru
