Libmdbx 0.11.3 (MDBX) u lancerua me njĂ« implementim tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave tĂ« integruar me performancĂ« tĂ« lartĂ« dhe formĂ« kompakte, e cila punon nĂ« mĂ«nyrĂ«n e çelĂ«sit-vlerĂ«s. Kodi libmdbx shpĂ«rndahet nĂ«n licencĂ«n OpenLDAP Public License. MbĂ«shtetet nga tĂ« gjitha sistemet operative dhe arkitekturave aktuale, pĂ«rfshirĂ« edhe Elbrusin 2000 tĂ« RusisĂ«. NĂ« fund tĂ« vitit 2021, libmdbx pĂ«rdoret si backend pĂ«r ruajtje nĂ« dy klientĂ«t mĂ« tĂ« shpejtĂ« tĂ« Ethereum â Erigon dhe 'Akula', e cila, sipas informacioneve tĂ« disponueshme, Ă«shtĂ« klienti mĂ« i shpejtĂ« i Ethereum.
Historikisht, libmdbx është një ripunim i thellë i SGBD LMDB dhe e tejkalon paraardhësin e saj në besueshmërinë, setin e mundësive dhe performancën. Krahasuar me LMDB, libmdbx i kushton një vëmendje të madhe cilësisë së kodit, stabilitetit të API-t, testeve dhe kontrollit automatik. Ofrohet një utilitar për verifikimin e integritetit të strukturës së DB me disa mundësi rikuperimi.
Libmdbx ofron ACID, një serilizim të rreptë të ndryshimeve dhe lexim pa bllokim me shkallëzim linear sipas bërthamave të CPU-it. Mbështetet kompaktifikimi automatik, menaxhimi automatik i madhësisë së DB, dhe vlerësimi i volumit të mostrave sipas intervaleve (range query estimation). Që nga viti 2016, projekti financohet nga kompania 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, përmirësimet dhe rregullimet kryesore, të shtuar pas njoftimit të mëparshëm më 11 tetor:
- API C++ konsiderohet i gatshëm për përdorim.
- Përditësimi i të dhënave GC është ndjeshëm i përshpejtuar gjatë bllokimit të transaksioneve të mëdha, çka ë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 përditësimin automatik, i cili është plotësisht transparent për përdoruesit. Kjo mundëson përjashtimin e mesazheve të rreme për dëmtimin e DB, kur versione të vjetra të bibliotekës përdoren për të lexuar transaksionet e bllokuara nga versionet aktuale.
- Shtohen funksionet mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() dhe mdbx_env_get_syncbytes(). Shtohet mbështetje për operacionin MDBX_SET_UPPERBOUND.
- Të gjitha paralajmërimet gjatë ndërtimit janë eliminuar për të gjithë kompjuterët e mbështetur në modet C++ 11/14/17/20. Siguruar përputhshmëria me kompjuterë të vjetër: clang duke filluar nga 3.9, gcc duke filluar nga 4.8, duke përfshirë ndërtimin përmes sdevtoolset-9 për CentOS/RHEL 7.
- Eliminohet mundësia e konfliktit të meta-faqeve pas kalimit manual në një meta-faqe të caktuar me ndihmën e utilitarit mdbx_chk.
- Rregullohet kthimi i një gabimi të papritur MDBX_PROBLEM gjatë ripërshkrimit të meta-faqeve të vjetra.
- Korrigjohet kthimi MDBX_NOTFOUND në rast të përputhjes të pasaktë gjatë përpunimit të kërkesës MDBX_GET_BOTH.
- Saktohet një gabim ndërtimi në Linux kur mungojnë skedarët ndihmës me përshkrime të ndërfaqeve të bërthamës.
- Rregullohet konfliktin midis flamurit të brendshëm MDBX_SHRINK_ALLOWED dhe opsionit MDBX_ACCEDE.
- Eliminohen disa kontrollesh assert të panevojshme.
- Korrigjohet kthimi i befasishëm MDBX_RESULT_TRUE nga funksioni mdbx_env_set_option().
- Në total janë bërë mbi 90 ndryshime në 25 skedarë, janë shtuar ~1300 rreshta, janë fshirë ~600.
Burimi: opennet.ru
