U publikua biblioteka libmdbx 0.11.7 (MDBX) me implementimin e një baze të dhënash të integruar, kompakte dhe me performancë të lartë në klasën çelës-vlerë. Kodi libmdbx shpërndahet nën licencën OpenLDAP Public License. Mbështeten të gjitha sistemet operative dhe arkitekturat aktuale, si dhe Elbrusi rus 2000.
Të dukshme janë migrimi i projektit në shërbimin GitFlic pas përjashtimit nga GitHub më 15 prill 2022, pa asnjë paralajmërim ose shpjegim, duke e fshirë libmdbx bashkë me një mori projektesh të tjerë, duke bllokuar gjithashtu qasje për shumë zhvillues të lidhur me kompani që kanë rënë nën sanksionet e SHBA. Nga këndvështrimi i përdoruesve, të gjitha faqet, reposi dhe hardforkët e projektit papritur u shndërruan në një faqen "404", pa mundësi për ndonjë komunikim ose sqarim.
Fatkeqësisht, pothuajse të gjitha issues janë humbur, në të cilat kishte shumë pyetje me përgjigje të detajuara, si dhe diskutime të shumta. Humbja e kësaj informacioni është dëmimi objektiv i vetëm që administrata e GitHub arriti t'i shkaktojë projektit. Pjesërisht kopjet e diskutimeve mbeten të qasshme në arkivin archive.org.
Humbja e skenareve CI tĂ« ndĂ«rtuara dhe infrastrukturĂ«s (tĂ« disponueshme falas pĂ«r projektet OpenSource) e detyruan tĂ« angazhoheshim me rishikimin, unifikimin dhe eliminimin e njĂ« borxhi teknik tĂ« vogĂ«l. Tani CI Ă«shtĂ« rikthyer pothuajse nĂ« formatin e tij tĂ« kaluar, pĂ«rveç ndĂ«rtimit dhe testeve pĂ«r tĂ« gjitha variantet BSD dhe Solaris. ĂshtĂ« e veçantĂ« se pas veprimeve nga GitHub nuk erdhĂ«n ndonjĂ« shpjegim ose njoftim, pĂ«rveç njĂ« kujtimi pĂ«r nevojĂ«n e pagesĂ«s dhe pĂ«rpjekjeve pĂ«r tĂ« tĂ«rhequr para.
Që nga njoftimi i fundit mbi lëshimin e libmdbx v0.11.3, përveç rikthimit pas veprimeve të GitHub, duhen përmendur këto përmirësime dhe korrigjime:
- Shtuar përmirësimin e efektit/defektit të zbuluar të inkonkordancës në caches e bashkuar të faqeve dhe bufereve në bërthamën Linux. Në sistemet ku caches e faqeve dhe bufereve janë vërtet të bashkuara, bërthama nuk ka kuptim të shpenzojë memorie për dy kopje të dhënash gjatë shkrimit në një skedar që është tashmë i mapuar në memorie. Prandaj, të dhënat e shkruara bëhen të dukshme përmes mapimit në memorie deri në përfundimin e thirrjes së sistemit write(), edhe nëse të dhënat nuk janë ende shkruar në disk.
Së bashku, sjellja tjetër nuk është e arsyeshme, sepse me bashkimin e vonuar gjithsesi do të duhet të kapen bllokimet për listat e faqeve, të kopjohen të dhënat ose të rregullohet PTE. Prandaj, rregulli i heshtur i koherencës ka qenë i vlefshëm që nga viti 1989, kur në SRV4 u shfaq cache i unifikuar i tamponëve. Prandaj, zb discoveryt e dështimeve të çuditshme në skenarët e ngarkuar të funksionimit të libmdbx kërkoi punë të madhe. Fillimisht për riprodhimin e problemit, pastaj për verifikimin e hipotezave dhe kontrollimin e përmirësimeve.
Tani mund të themi me siguri se problemi është identifikuar saktësisht, është lokalizuar dhe është eliminuar me besueshmëri, pavarësisht të gjithë kompleksitetit dhe specifikës së skenarit të riprodhimit. Shtesë, funksionimi i mekanizmit të anashkalimit ishte konfirmuar nga një nga zhvilluesit e Erigon (Ethereum), në rastin e tij në një ndërtim debug, aktivizimi i mbrojtjes shfaqej si regres për shkak të një kontrolli të tepërt assert.
Duhet theksuar se në kontekstin e përdorimit të gjerë të libmdbx në projektet e punës, është thelbësore të sigurohet funksionimi i besueshëm, jo të zbulohet "nëse është gabim apo veçori" dhe nëse mund të mbështetesh në një koherencë të tillë, aq më shumë të mos kërkosh shkaqet e nekoherencës brenda bërthamës Linux. Prandaj, këtu bëhet fjalë për eliminimin e një problemi që mund të prekte përdoruesit.
- ĂshtĂ« eliminuar regresi qĂ« shkaktonte gabimin EXDEV (Link ndĂ«rmjet pajisjeve) gjatĂ« kopjimit nĂ« nxehtĂ« tĂ« DB pa kompaktim nĂ« njĂ« sistem skedarĂ«sh tjetĂ«r, si pĂ«rmes API-sĂ« ashtu edhe me ndihmĂ«n e utilitarit mdbx_copy.
- Kris Zyp implementoi mbështetje libmdbx në Deno. Kai Wetlesen përgatiti paketimin RPM për Fedora. David Bouyssié realizoi lidhjet për Scala.
- ĂshtĂ« rregulluar pĂ«rpunimi i vlerĂ«s sĂ« caktuar nga opsioni MDBX_opt_rp_augment_limit gjatĂ« pĂ«rpunimit tĂ« transaksioneve tĂ« mĂ«dha nĂ« DB tĂ« mĂ«dha. MĂ« parĂ«, pĂ«r shkak tĂ« njĂ« gabimi, mund tĂ« bĂ«heshin veprime tĂ« tepĂ«rta, gjĂ« qĂ« ndonjĂ«herĂ« ndikonte nĂ« performancĂ«n nĂ« implementimet Ethereum (Erigon/Akula/Silkworm) dhe projektet Binance Chain.
- Së bashku, janë korrigjuar një sërë ndëshkimesh, përfshirë në API-në C++. Janë eliminuar shumë probleme me ndërtimin në konfigurations të rralla dhe ekzotike. Lista e plotë e të gjitha përmirësimeve të rëndësishme është në dispozicion në ChangeLog.
- NĂ« total, janĂ« bĂ«rĂ« 185 ndryshime nĂ« 89 skedarĂ«, janĂ« shtuar â3300 rreshta, janĂ« fshirĂ« â4100. MĂ« shumĂ« janĂ« fshirĂ« kryesisht pĂ«r shkak tĂ« pastrimit nga skedarĂ«t teknologjikĂ« qĂ« nuk kanĂ« mĂ« kuptim tĂ« lidhur me GitHub dhe shĂ«rbimet e varura.
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, seri të rreptë të ndryshimeve dhe lexime pa bllokim me shkallëzim linear në bërthama CPU. Mbështetet kompaktifikuar 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 nga viti 2017 përdoret në produktet e saj.
Për libmdbx ofrohet një API e zhvilluar C++, si dhe lidhje të mbështetura nga entuziastët për gjuhë si Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.
Burimi: opennet.ru
