Lëshimi i DBMS libmdbx 0.11.7. Transferimi i zhvillimit në GitFlic pas bllokimit në GitHub

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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster