DBMS-i libmdbx 0.11.7 väljalase. Pärast GitHubi lukustamist teisaldage arendus GitFlici

Libmdbx 0.11.7 (MDBX) teek on välja antud suure jõudlusega kompaktse manustatud võtmeväärtuste andmebaasi rakendamisega. Libmdbx koodi levitatakse OpenLDAP avaliku litsentsi alusel. Toetatud on kõik praegused operatsioonisüsteemid ja arhitektuurid, samuti Vene Elbrus 2000.

Väljalase on märkimisväärne projekti migratsiooni tõttu GitFlici teenusele pärast seda, kui GitHubi administratsioon eemaldas libmdbx-i koos paljude teiste projektidega 15. aprillil 2022 ilma hoiatuse või selgituseta, blokeerides samal ajal juurdepääsu paljudele arendajatele, kes on seotud ettevõtete langusega. USA sanktsioonide all. Kasutaja seisukohast muutusid kõik projekti lehed, hoidla ja kahvlid ootamatult "404"-leheks, ilma igasuguse suhtluse ja põhjuste väljaselgitamise võimaluseta.

Kahjuks on kaotatud peaaegu kõik küsimused, milles oli palju üksikasjalike vastustega küsimusi, aga ka palju arutelusid. Selle teabe kaotamine on ainus objektiivne kahju, mis GitHubi administratsioonil õnnestus projektile tekitada. Arutelude osalised koopiad jäävad kättesaadavaks archive.org arhiivis.

Sisseehitatud CI-skriptide ja infrastruktuuri kadumine (saadaval avatud lähtekoodiga projektide jaoks tasuta) sundis meid läbi vaatama, ühendama ja kõrvaldama väikese tehnilise võla. Nüüd on CI taastatud peaaegu samas ulatuses, välja arvatud kõigi BSD ja Solarise variantide konstruktsioonid ja testkäitused. Kõnekas on see, et GitHubi tegude järel ei tulnud mingeid selgitusi ega teateid peale maksevajaduse meeldetuletuse ja raha mahakandmise katsed.

Alates viimastest uudistest libmdbx v0.11.3 väljalaskmise kohta väärivad lisaks GitHubi toimingute taastamisele tähelepanu ka järgmised täiustused ja parandused:

  • Lisati lahendus Linuxi kerneli kombineeritud lehe ja puhvri vahemälu tuvastatud ebaühtluse efekti/defekti jaoks. Süsteemides, kus lehe ja puhvri vahemälud on tõeliselt ühtsed, pole tuumal mõtet raisata mälu kahele andmekoopiale, kui kirjutate juba mäluga vastendatud faili. Seetõttu muutuvad kirjutatavad andmed mälu vastendamise kaudu nähtavaks enne write() süsteemikutse lõppemist, isegi kui andmeid pole veel kettale kirjutatud.

    Kokkuvõttes ei ole muu käitumine ratsionaalne, sest viivitatud liitmise korral tuleb ikkagi lehekülgede loendite lukud haarata, andmeid kopeerida või PTE-d kohandada. Seetõttu on väljaütlemata koherentsuse reegel kehtinud alates 1989. aastast, mil SRV4-s ilmus ühtne puhvri vahemälu. Seetõttu nõudis hõivatud libmdbx-i tootmisstsenaariumide puhul kummaliste tõrgete leidmine palju tööd. Esiteks probleemi taasesitamine, seejärel hüpoteeside kontrollimine ja täiustuste kontrollimine.

    Nüüd võime kindlalt öelda, et hoolimata taasesituse stsenaariumi keerukusest ja spetsiifilisusest on probleem usaldusväärselt tuvastatud, lokaliseeritud ja usaldusväärselt kõrvaldatud. Lisaks kinnitas möödaviigumehhanismi tööd üks Erigoni (Ethereum) arendajatest, tema puhul käivitus silumisjärgus kaitse täiendava kinnituse kontrollimise tõttu regressioonina.

    Tuleb märkida, et libmdbx laialdase kasutuse kontekstis tööprojektides on põhimõtteliselt olulisem tagada töökindel töö, mitte uurida, kas see on viga või funktsioon ja kas sellisele sidususele saab loota. , eriti mitte otsides Linuxi tuuma ebaühtluse põhjuseid. Seetõttu räägime siin kasutajaid mõjutada võiva probleemi lahendamisest.

  • Parandatud on EXDEV-i (seadmeteülese lingi) vea regressioon, kui kopeeriti andmebaasi ilma tihendamata teise failisüsteemi nii API kui ka utiliidi mdbx_copy abil.
  • Kris Zyp on Denos rakendanud libmdbx-i toe. Kai Wetlesen on pakkinud Fedora jaoks RPM-id. David Bouyssié juurutas Scala jaoks köited.
  • MDBX_opt_rp_augment_limit suvandiga määratud väärtuse fikseeritud käsitlemine suurtes andmebaasides tohutute tehingute töötlemisel. Varem võidi vea tõttu teha tarbetuid toiminguid, mis mõnikord mõjutasid jõudlust Ethereumi rakendustes (Erigon/Akula/Silkworm) ja Binance Chaini projektides.
  • Parandatud on palju vigu, sealhulgas C++ API-s olevad vead. Parandatud paljud ehitusprobleemid haruldaste ja eksootiliste konfiguratsioonide puhul. Täielik nimekiri kõigist olulistest täiustustest on saadaval muudatuste logis.
  • Kokku tehti 185 failis 89 muudatust, lisati ≈3300 rida, kustutati ≈4100. Eemaldatud peamiselt GitHubi ja sõltuvate teenustega seotud juba kasutute tehniliste failide puhastamise tõttu.

Ajalooliselt on libmdbx LMDB DBMS-i põhjalik ümberkujundus ja ületab töökindluse, funktsioonide komplekti ja jõudluse poolest oma eelkäijat. Võrreldes LMDB-ga paneb libmdbx suurt rõhku koodi kvaliteedile, API stabiilsusele, testimisele ja automatiseeritud kontrollidele. Andmebaasi struktuuri terviklikkuse kontrollimise utiliit on varustatud mõne taastevalikuga.

Tehnoloogiliselt pakub libmdbx ACID-d, ranget muudatuste serialiseerimist ja mitteblokeerivat lugemist koos lineaarse skaleerimisega protsessori tuumade lõikes. Toetatakse automaatset tihendamist, automaatset andmebaasi suuruse haldamist ja vahemiku päringu hindamist. Alates 2016. aastast on projekti rahastanud Positive Technologies ja seda on oma toodetes kasutatud alates 2017. aastast.

libmdbx pakub arendatud C++ API-d, aga ka entusiastide toetatud sidemeid Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Allikas: opennet.ru

Lisa kommentaar