Utjefte fan DBMS libmdbx 0.11.7. Ferpleats ûntwikkeling nei GitFlic nei lockdown op GitHub

De libmdbx 0.11.7 (MDBX) bibleteek is frijjûn mei de ymplemintaasje fan in hege prestaasjes kompakte ynbêde kaai-wearde databank. De libmdbx-koade wurdt ferspraat ûnder de OpenLDAP Public License. Alle hjoeddeistige bestjoeringssystemen en arsjitektueren wurde stipe, lykas de Russyske Elbrus 2000.

De frijlitting is opmerklik foar de migraasje fan it projekt nei de GitFlic-tsjinst neidat de GitHub-administraasje libmdbx fuorthelle tegearre mei in gasthear fan oare projekten op 15 april 2022 sûnder warskôging of útlis, wylst tagelyk tagong blokkearde foar in protte ûntwikkelders ferbûn mei bedriuwen dy't foelen ûnder Amerikaanske sanksjes. Fanút it eachpunt fan 'e brûker feroare alle siden, repository en foarken fan it projekt ynienen yn in "404" side, sûnder de mooglikheid fan kommunikaasje en it finen fan de redenen.

Spitigernôch binne hast alle saken ferlern gien, dêr't in protte fragen yn stiene mei detaillearre antwurden, en ek in protte diskusjes. It ferlies fan dizze ynformaasje is de ienige objektive skea dy't de GitHub-administraasje slagge om it projekt oan te bringen. Dielkopyen fan 'e diskusjes bliuwe beskikber yn it archive.org-argyf.

It ferlies fan ynboude CI-skripts en ynfrastruktuer (fergees beskikber foar OpenSource-projekten) twong ús om revyzje, ferieniging en eliminaasje fan in lytse technyske skuld te dwaan. No is CI yn hast deselde mjitte restaurearre, mei útsûndering fan builds en testruns foar alle BSD- en Solaris-farianten. Ferteljend, nei de aksjes fan GitHub waarden gjin ophelderingen of notifikaasjes ûntfongen, útsein in herinnering oan 'e needsaak foar betelling en besykjen om jild ôf te skriuwen.

Sûnt it lêste nijs oer de frijlitting fan libmdbx v0.11.3, neist it herstellen fan GitHub-aksjes, binne de folgjende ferbetterings en reparaasjes it wurdich op te merken:

  • In oplossing tafoege foar in ûntdutsen incoherence-effekt / defekt yn 'e kombineare side en buffer-cache yn' e Linux-kernel. Op systemen wêr't de side- en buffer-caches wirklik ferienige binne, hat it gjin sin foar de kearn om ûnthâld te fergriemen op twa kopyen fan gegevens by it skriuwen nei in al mei ûnthâld mapd bestân. Dêrom, de gegevens wurde skreaun wurdt sichtber fia ûnthâld mapping foar it skriuwen () systeem oprop foltôging, sels as de gegevens noch net skreaun op skiif.

    Yn totaal is oar gedrach net rasjoneel, want mei in fertrage fúzje moatte jo noch slûzen pakke foar sidelisten, gegevens kopiearje of PTE oanpasse. Dêrom is de ûnútsprutsen regel fan gearhing yn wurking sûnt 1989, doe't de unifoarme buffer-cache ferskynde yn SRV4. Dêrom freget it finen fan frjemde mislearrings yn drokke libmdbx-produksjesenario's in protte wurk. Earst, troch it probleem te reprodusearjen, dan troch hypotezen te ferifiearjen en ferbetteringen te kontrolearjen.

    No kinne wy ​​mei fertrouwen sizze dat it probleem betrouber identifisearre, lokalisearre en betrouber is elimineare, nettsjinsteande de kompleksiteit en spesifisiteit fan it ôfspielscenario. Derneist waard it wurk fan 'e bypassmeganisme befêstige troch ien fan' e ûntwikkelders fan Erigon (Ethereum), yn syn gefal, op 'e debug-build, waard de beskerming as in regression útlutsen troch in ekstra assertkontrôle.

    Dêrby moat opmurken wurde dat yn it ramt fan it wiidferspraat gebrûk fan libmdbx yn wurkprojekten, it yn prinsipe wichtiger is om betroubere operaasje te garandearjen, en net út te finen "is dit in brek as in funksje" en oft op sa'n gearhing fertroud wurde kin. , foaral net op syk nei de oarsaken fan ynkoherinsje binnen de Linux kernel. Dêrom prate wy hjir oer it reparearjen fan in probleem dat brûkers kin beynfloedzje.

  • In regression reparearre fan 'e EXDEV (Cross-device link) flater by it hot kopiearjen fan in databank sûnder kompaktearring nei in oar bestânsysteem, sawol fia de API as mei it brûken fan it mdbx_copy-hulpprogramma.
  • Kris Zyp hat stipe ymplementearre foar libmdbx yn Deno. Kai Wetlesen hat RPM's ynpakt foar Fedora. David Bouyssié ymplementearre bindingen foar Scala.
  • Fêste ôfhanneling fan de wearde ynsteld troch de opsje MDBX_opt_rp_augment_limit by it ferwurkjen fan enoarme transaksjes yn grutte databases. Earder, fanwege in brek, koenen ûnnedige aksjes wurde útfierd, dy't soms ynfloed hawwe op prestaasjes yn Ethereum-ymplemintaasjes (Erigon / Akula / Silkworm) en Binance Chain-projekten.
  • In protte bugs binne reparearre, ynklusyf dy yn 'e C ++ API. In protte bouproblemen repareare yn seldsume en eksoatyske konfiguraasjes. In folsleine list fan alle wichtige ferbetterings is beskikber yn 'e ChangeLog.
  • Yn totaal waarden 185 wizigingen makke yn 89 bestannen, ≈3300 rigels waarden tafoege, ≈4100 waarden wiske. Meast ferwidere fanwegen suvering fan al nutteleaze technyske bestannen ferbûn mei GitHub en ôfhinklike tsjinsten.

Histoarysk is libmdbx in djippe werynrjochting fan 'e LMDB DBMS en oertreft syn foarfaar yn termen fan betrouberens, funksjeset en prestaasjes. Yn ferliking mei LMDB leit libmdbx in protte klam op koadekwaliteit, API-stabiliteit, testen en automatisearre kontrôles. In hulpprogramma foar it kontrolearjen fan de yntegriteit fan 'e databankstruktuer wurdt levere mei guon herstelopsjes.

Technologysk biedt libmdbx ACID, strikte feroaringserialisaasje, en net-blokkearjende lêzings mei lineêre skaalfergrutting oer CPU-kearnen. Autokompaktifikaasje, automatysk behear fan databasegrutte, en skatting fan berikfragen wurde stipe. Sûnt 2016 is it projekt finansierd troch Positive Technologies en is sûnt 2017 brûkt yn har produkten.

libmdbx biedt in ûntwikkele C ++ API, likegoed as entûsjast-stipe bindingen oan Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Boarne: opennet.ru

Add a comment