ĂshtĂ« publikuar biblioteka libmdbx 0.11.3 (MDBX) me implementimin e njĂ« databaze tĂ« integruar dhe me performancĂ« tĂ« lartĂ« nĂ« klasĂ«n çelĂ«s-vlerĂ«. Kodi i libmdbx distribuohet nĂ«n licencĂ«n OpenLDAP Public License. TĂ« gjitha sistemet operative dhe arkitekturave aktuale mbĂ«shteten, si dhe Elbrusi rus 2000. NĂ« fund tĂ« vitit 2021, libmdbx pĂ«rdoret si backend ruajtjeje nĂ« dy nga klientĂ«t mĂ« tĂ« shpejtĂ« tĂ« Ethereum â Erigon dhe
Historikisht, libmdbx është një ripërpunim i thellë i DBMS LMDB dhe e tejkalon paraardhësin e saj në besueshmëri, gamën e mundësive dhe performancën. Krahasuar me LMDB, libmdbx vendos një vëmendje të madhe te cilësia e kodit, funksionimi i qëndrueshëm i API-së, testimi dhe kontrollet automatike. Ofron një utilitar për kontrollin e integritetit të strukturës së DB me disa mundësi rikuperimi.
Teknologjikisht, libmdbx ofron ACID, serializim të rreptë të ndryshimeve dhe lexim jo-bllokues me përshkallëzim lineare sipas bërthamave të CPU. Mbështetet autokompaktifikimi, menaxhimi automatik i përmasave të DB, dhe vlerësimi i sasisë së zgjedhjeve sipas intervaleve (vlerësimi i zgjedhjes sipas intervaleve). Që nga viti 2016, projekti financohet nga kompanitë Positive Technologies dhe që nga viti 2017 përdoret në produktet e saj.
Për libmdbx ofrohet një API C++, si dhe lidhje të mbështetura nga entuziastët për gjuhët Rust, Haskell, Python, NodeJS, Ruby, Go, dhe Nim.
Novitetet kryesore, përmirësimet dhe rregullimet e shtuar pas njoftimit të mëparshëm më 11 tetor:
- API C++ konsiderohet i gatshëm për përdorim.
- Rrjedhja e të dhënave GC është përshpejtuar ndjeshëm gjatë përpunimit të transaksioneve masive, gjë që është veçanërisht e rëndësishme kur përdoret libmdbx në ekosistemin Ethereum.
- Nënshkrimi i brendshëm i formatit të DB është ndryshuar me mbështetje për azhurnimin automatik, i cili është plotësisht transparent për përdoruesit. Kjo lejon përjashtimin e njoftimeve false për dëmtimin e DB-së, kur versionet e vjetra të bibliotekës përdoren për leximin e transaksioneve të përfunduara nga versionet aktuelle.
- JanĂ« shtuar funksionet mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod(), dhe mdbx_env_get_syncbytes(). ĂshtĂ« shtuar mbĂ«shtetje pĂ«r operacionin MDBX_SET_UPPERBOUND.
- TĂ« gjitha paralajmĂ«rimet gjatĂ« ndĂ«rtimit me tĂ« gjitha kompilerĂ«t e mbĂ«shtetur janĂ« eliminuar nĂ« modet C++ 11/14/17/20. ĂshtĂ« garantuar kompatibiliteti me kompilerĂ«t e vjetĂ«r: clang duke filluar nga 3.9, gcc duke filluar nga 4.8, pĂ«rfshirĂ« ndĂ«rtimin pĂ«rmes sdevtoolset-9 pĂ«r CentOS/RHEL 7.
- ĂshtĂ« eliminuar mundĂ«sia e konfliktit tĂ« meta-faqeve pas kalimit manual nĂ« njĂ« meta-faqe tĂ« caktuar duke pĂ«rdorur utilitarin mdbx_chk.
- Janë korrigjuar kthimet e gabimit të paparashikuar MDBX_PROBLEM gjatë ripërsëritjes së meta-faqeve të vjetra.
- Korrektuar kthimi MDBX_NOTFOUND në rast të një përputhjeje të papërshtatshme gjatë përpunimit të kërkesës MDBX_GET_BOTH.
- Rregulluar problemi i compilimit në Linux në mungesë të skedave të titujve që përshkruajnë ndërfaqet me kernelin.
- Korrektuar kolizionin midis flamurit të brendshëm MDBX_SHRINK_ALLOWED dhe opsionit MDBX_ACCEDE.
- Eliminuar disa kontrolle të tepërta assert.
- Korrektuar kthimin e papritur MDBX_RESULT_TRUE nga funksioni mdbx_env_set_option().
- Në total janë bërë më shumë se 90 ndryshime në 25 skedarë, janë shtuar ~1300 rreshta, janë fshirë ~600.
Burimi: opennet.ru
