VĂ€ljaanne andmebaasi libmdbx 0.11.7. Arenduse ĂŒleviimine GitFlici pĂ€rast GitHubi blokeerimist

Ilmus libmdbx 0.11.7 (MDBX) teekonna versioon, mis hĂ”lmab kĂ”rge jĂ”udlusega kompaktset sisseehitatavat vĂ”tmevÀÀrtuse andmebaasi. Libmdbx kood levitatakse OpenLDAP Public License'i alusel. Toetatakse kĂ”iki kaasaegseid operatsioonisĂŒsteeme ja arhitektuure, sealhulgas Venemaa Elbrus 2000.

VĂ€ljalaskmine on mĂ€rkimisvÀÀrne projekti migreerimise tĂ”ttu GitFlic teenusele pĂ€rast seda, kui GitHubi administratsioon eemaldas 15. aprillil 2022 libmdbx koos paljude teiste projektidega ilma etteteatamiseta ning blokeeris juurdepÀÀsu paljudele arendajatele, kes on seotud USA sanktsioonide alla langenud ettevĂ”tetega. Kasutajate vaatenurgast muutsid kĂ”ik projekti lehed, hoidla ja forkid Ă€kitselt leheks „404”, ilma igasuguste kommunikatsioonivĂ”imalusteta ja pĂ”hjuste selgitamiseks.

Kahjuks on peaaegu kĂ”ik kĂŒsimused kadunud, kus oli palju kĂŒsimusi ĂŒksikasjalike vastustega, samuti palju arutelu. Selle teabe kaotus on ainus objektiivne kahju, mida GitHubi administratsioon suutis projektile tekitada. Osaliselt jÀÀvad arutelude koopiaid endiselt kĂ€ttesaadavaks arhiivis archive.org.

CI-skriptide ja infrastruktuuri kadumine (mida pakuti tasuta avatud lĂ€htekoodiga projektidele) sundis lĂ€bi viima ĂŒlevaatuse, ĂŒhtlustamise ja vĂ€ikese tehnilise vĂ”la kĂ”rvaldamise. NĂŒĂŒd on CI peaaegu endises mahus taastatud, vĂ€lja arvatud BSD ja Solaris'i kĂ”igi variantide koostamine ja testimised. Mida tĂ€helepanuvÀÀrsem, GitHub'i tegevuse jĂ€rel ei tulnud mingeid selgitusi ega teateid, peale tasumise meeldetuletamise ja katsetuste raha mahaarvamise.

Libmdbx v0.11.3 vÀljaandmise pÀrast toimunud uudistest, kus peale GitHub'i tegevuse taastamise, on mÀrkimisvÀÀrsed jÀrgmised tÀiustused ja parandused:

  • Lisa tuvastatud koherentsuse defekti/efekti ĂŒmbersuunamine lehtede ja puhversĂŒsteemide ĂŒhises mĂ€lus Linuxi tuumas. SĂŒsteemides, kus lehtede ja puhversĂŒsteemide vaheline mĂ€lumĂ€ng on tĂ”eliselt ĂŒhine, pole tuumal mĂ”tet kulutada mĂ€lu kahe andmekopeerimise jaoks, kui kirjutatakse juba mĂ€letatud faili. SeetĂ”ttu muutuvad kirjutatavad andmed nĂ€htavaks mĂ€lestuse kaudu enne sĂŒsteemivĂ€ljakutse write() lĂ”puleviimist, isegi kui andmed pole veel kettale kirjutatud.

    KokkuvĂ”ttes ei ole teine kĂ€itumine ratsionaalne, kuna viivitusega liitmisel tuleb ikkagi haarata lukud lehede loendite jaoks, kopeerida andmeid vĂ”i kohandada PTE-d. SeetĂ”ttu on vaikimisi koherentsuse reegel kehtinud alates 1989. aastast, mil SRV4-s tutvustati ĂŒhtset puhvercache'i. SeetĂ”ttu nĂ”udis kummaliste tĂ”rgete avastamine libmdbx'i koormatud kasutusstsenaariumites suurt tööd. Esiteks, probleemide korrigeerimine, seejĂ€rel hĂŒpoteeside kinnitamine ja muudatuste kontrollimine.

    Praegu vĂ”ib kindlalt öelda, et probleem on usaldusvÀÀrselt tuvastatud, lokaliseeritud ja usaldusvÀÀrselt kĂ”rvaldatud, hoolimata kogu keerukusest ja spetsiifilisusest taasesituse stsenaariumis. Lisaks kinnitas ĂŒhes Erigoni (Ethereum) arendaja mehhanismi ĂŒmbermineku töö, kus tema juhul ilmus tĂ”rke kaitse aktiveerimine debug-kogumisse tagasiulatuva hetkena liigse assert-kontrolli tĂ”ttu.

    Oluline on mÀrkida, et libmdbx laialdasel kasutamisel tööprojektides on pÔhimÔtteliselt tÀhtsam tagada usaldusvÀÀrne töö, mitte mÀÀrata, kas see on "viga vÔi omadus" ning kas sellisele koherentsusele saab toetuda, rÀÀkimata pÔhjusest, miks Linuxi kÀrjes koherentsus puudub. SeetÔttu rÀÀgime siin probleemide kÔrvaldamisest, mis vÔiksid kasutajaid mÔjutada.

  • Parandatud on regresseerimise viga EXDEV (Cross-device link) andmebaasi kuumakopimisel teise failisĂŒsteemi ilma kompaktseta, nii API kaudu kui ka mdbx_copy utiliidi kaudu.
  • Kris Zyp rakendas libmdbx toe Deno-s. Kai Wetlesen koostas RPM paketi Fedora jaoks. David BouyssiĂ© rakendas Scala sidemed.
  • Parandatud on vÀÀrtuse töötlemine, mis mÀÀratakse MDBX_opt_rp_augment_limit valikuga suurte andmebaaside tohutute tehingute töötlemisel. Varasemalt vĂ”is vea tĂ”ttu toimuda ebaolulisi toiminguid, mis mĂ”jutasid mĂ”nel juhul Ethereum'i (Erigon/Akula/Silkworm) ja Binance Chain'i projektide jĂ”udlust.
  • Parandatud on hulk puudusi, sealhulgas C++ API-s. Palju probleeme on lahendatud harvades ja eksootilistes konfiguratsioonides. KĂ”ik olulisemad tĂ€iustused on loetletud ChangeLogis.
  • Kokku on tehtud 185 muudatust 89 failis, lisatud on ≈3300 rida ja eemaldatud ≈4100. Rohkem on eemaldatud peamiselt juba kasutusest vĂ€ljas oleva tehnoloogiafailide puhastamise tĂ”ttu, mis on seotud GitHubi ja sĂ”ltuvate teenustega.

Ajalooliselt on libmdbx sĂŒgavalt ĂŒmber töötatud LMDB andmebaasi ja ĂŒletab oma esivanemat usaldusvÀÀrsuse, vĂ”imaluste ja jĂ”udluse poolest. Erinevalt LMDB-st on libmdbx-is suurt tĂ€helepanu pööratud koodikvaliteedile, API stabiilsele tööle, testimisele ja automaatsetele kontrollidele. Kinnitatud andmebaasi struktuuri kontrollimise utiliit koos mĂ”ningate taastamisvĂ”imalustega.

Tehniliselt pakub libmdbx ACID-i, ranget muudatuste serialiseerimist ning mitteblokeerivat lugemist koos lineaarse skaleerimisega CPU tuumade jaoks. Toetatakse automaatset kompaktimist, automaatset andmebaasi suuruse haldust ja vahemike (range) pÀringute hindamist. Alates 2016. aastast finantseeritakse projekti Positive Technologies'i poolt, ning alates 2017. aastast on see kasutusel nende toodetes.

libmdbx-i jaoks on vÀlja töötatud arenenud C++ API, samuti on entusiastide poolt toetatud sidemed Rusti, Haskell, Pythoni, NodeJS, Ruby, Go, Nim, Deno ja Scala keeltesse.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster