VĂ€lja anti libmdbx 0.11.7 (MDBX), mis rakendab kĂ”rge jĂ”udlusega kompaktset kaasaskantavat vĂ”tme-vÀÀrtus andmebaasi. libmdbx kood on litsentseeritud OpenLDAP Public License'i alusel. Toetatakse kĂ”iki tĂ€napĂ€evaseid operatsioonisĂŒsteeme ja arhitektuure, sealhulgas venelasi Elbrus 2000.
VĂ€ljaanne on mĂ€rkimisvÀÀrne projekti migreerimise tĂ”ttu GitFlic teenusele pĂ€rast seda, kui GitHubi administratsioon eemaldatud libmdbx koos paljude teiste projektidega 15. aprillil 2022 ilma igasuguste etteteatamise vĂ”i pĂ”hjused, samal ajal blokeerides juurdepÀÀsu paljudele arendajatele, kes olid seotud Ameerika Ăhendriikide sanktsioonide all olevate ettevĂ”tetega. Kasutajate jaoks muutusid kĂ”ik lehed, hoidla ja fork'id Ă€kki '404' leheks, ilma vĂ”imaluseta mingiks suhtlemiseks ja pĂ”hjuste vĂ€ljaselgitamiseks.
Kahjuks on peaaegu kĂ”ik probleemid kadunud, kus oli palju kĂŒsimusi ĂŒksikasjalike vastustega, samuti arvukalt arutelusid. Selle teabe kaotamine on ainus objektiivne kahju, mille GitHubi administratsioon suutis projekti tekitada. Osaliselt jÀÀvad arutelude koopiad kĂ€ttesaadavaks arhivi archive.org.
KĂŒpsiste ja infrastruktuuri kadumine (mida pakuti OpenSource projektidele tasuta) sundis tegelema revideerimisega, ĂŒhtlustamise ja vĂ€ikese tehnilise vĂ”lgade likvideerimisega. NĂŒĂŒd on CI taastatud peaaegu endisel mahul, vĂ€lja arvatud kĂ”ikide BSD ja Solaris'i variantide kogumine ja testimine. Iseloomulik on see, et pĂ€rast GitHubi tegevust ei saadud mingit selgitust vĂ”i teavitust, vĂ€lja arvatud meeldetuletus vajadusest maksta ja katsed raha maha kirjutada.
Seoses eelmine uudise libmdbx v0.11.3 vÀljaandmisest, peale taastumist pÀrast GitHubi tegevust, on mÀrkida jÀrgmised tÀiustused ja parandused:
- Lisatud möödasĂ”it avastatud efekti/defekti ebaĂŒhtlusest ĂŒhiselt lehekĂŒlgede ja puhverduste vahel Linuxi tuumas. SĂŒsteemides, kus lehekĂŒljed ja puhverdused on tĂ”esti ĂŒhendatud, ei ole tuumale mĂ”tet kulutada mĂ€lu kahte andmekopeerimise jaoks, kui kirjutatakse juba mĂ€llu kaardistatud failile. SeetĂ”ttu muutuvad kirjutatavad andmed nĂ€htavaks mĂ€lus kaardistamise kaudu enne sĂŒsteemi kĂ”ne write() lĂ”petamist, isegi kui andmeid ei ole veel kettale kirjutatud.
KokkuvĂ”ttes ei ole muu kĂ€itumine mĂ”istlik, kuna isegi hilinenud ĂŒhendamise korral tuleb ikkagi lukustusi haarata lehe loendite jaoks, andmeid kopeerida vĂ”i PTE-d korrigeerida. SeetĂ”ttu kehtis vaikenorm koherentsuse kohta alates 1989. aastast, kui SRV4-s ilmus ĂŒhtne puhvri vahemĂ€lu. SeetĂ”ttu nĂ”udis libmdbx-is kummaliste tĂ”rgete avastamine koormatud kasutusstsenaariumides suurt tööd. Esiteks probleemi taasesitamiseks, seejĂ€rel hĂŒpoteeside tĂ”endamiseks ja parenduste kontrollimiseks.
Praegu vĂ”ime kindlalt öelda, et probleem on usaldusvÀÀrselt tuvastatud, lokaliseeritud ja usaldusvÀÀrselt kĂ”rvaldatud, hoolimata probleemide taasesitamise stsenaariumi keerukusest ja spetsiifikast. Lisaks oli ĂŒlesande vahetusmehanismi töö kinnitanud ĂŒks Erigoni (Ethereum) arendajatest, kelle puhul ilmus tĂ”rje aktiveerumine debug-keerisolu tĂ”ttu liigse assert-kontrolli kujul.
On oluline mÀrkida, et libmdbx-i laialdase kasutamise kontekstis tööprojektides on pÔhimÔtteliselt olulisem tagada usaldusvÀÀrne töö kui vÀlja selgitada, kas see on viga vÔi omadus, ning kas sellele koherentsusele vÔib toetuda, rÀÀkimata mittekoherentsuse pÔhjuste otsimisest Linuxi tuumas. SeetÔttu on juttu probleemist, mis vÔis mÔjutada kasutajaid.
- Korrigeeritud on EXDEV (Cross-device link) vea tekkimise regress kuumakaitstud andmebaasi kopeerimisel teise failisĂŒsteemi ilma kompaktimisega, nii API kaudu kui mdbx_copy utiliidiga.
- Kris Zyp teostas libmdbx-i toetuse Deno-sse. Kai Wetlesen koostas RPM pakette Fedora jaoks. David Bouyssié teostas Scala jaoks sidumisi.
- Parandatud on MDBX_opt_rp_augment_limit valiku kÀsitlemine suurte tehingute töötlemisel suurtes andmebaasides. Varem vÔis vea tÔttu teha liialdavaid toiminguid, mis mÔnikord mÔjutasid tulemuslikkust Ethereum (Erigon/Akula/Silkworm) rakendustes ja Binance Chain projektides.
- Parandatud on palju puudusi, sealhulgas C++ API-s. Lahendatud on palju kokkupanemise probleeme haruldastes ja eksotilistes konfiguratsioonides. TÀielik nimekiri kÔigist olulisest parendustest on saadaval ChangeLogis.
- Kokku on tehtud 185 muudatust 89 failis, lisatud on umbes 3300 rida, eemaldatud umbes 4100. Suuremuselt kustutati enamasti juba kasutut tehnoloogiat seoses GitHubi ja sÔltuvate teenustega.
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.
Tehnoloogiliselt pakub libmdbx ACID-i, ranget muudatuste serialiseerimist ja mitteblokkeerivat lugemist, millel on lineaarne skaleeritavus CPU tuumade kaupa. Toetatakse automaatset kompaktimist, automaatset andmebaasi suuruse haldamist, vahemiku pÀringute hindamist. Alates 2016. aastast rahastab projekti Positive Technologies ja alates 2017. aastast kasutatakse seda tema toodetes.
libmdbx jaoks on saadaval arenenud C++ API ning entusiaste toetavad sidemed keeltesse nagu Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.
Allikas: opennet.ru
