DBMS libmdbx 0.11.7. Eraman garapena GitFlic-era GitHub-en blokeatu ondoren

libmdbx 0.11.7 (MDBX) liburutegia errendimendu handiko kapsulatutako gako-balioen datu-base trinko baten ezarpenarekin kaleratu da. libmdbx kodea OpenLDAP Lizentzia Publikoaren arabera banatzen da. Egungo sistema eragile eta arkitektura guztiak onartzen dira, baita Russian Elbrus 2000 ere.

Oharra proiektuaren GitFlic zerbitzura migratzeagatik nabarmentzen da, GitHub-en administrazioak libmdbx kendu ondoren beste hainbat proiekturekin batera, 15ko apirilaren 2022ean, inolako abisu edo azalpenik eman gabe, eta aldi berean eroritako enpresekin lotutako garatzaile askoren sarbidea blokeatzen zuen. AEBetako zigorren pean. Erabiltzailearen ikuspuntutik, proiektuaren orri, biltegi eta sardexka guztiak bat-batean "404" orrialde bihurtu ziren, inolako komunikaziorik eta arrazoiak ezagutu gabe.

Zoritxarrez, ia gai guztiak galdu dira, eta horietan erantzun zehatza zuten galdera ugari zeuden, baita eztabaida asko ere. Informazio hau galtzea da GitHub-eko administrazioak proiektuan egitea lortu duen kalte objektibo bakarra. Eztabaiden kopia partzialak archive.org artxiboan daude eskuragarri.

Eraikitako CI scripten eta azpiegituraren galerak (OpenSource proiektuetarako doan eskuragarri) zor tekniko txiki bat berrikustera, bateratzera eta kentzera behartu gintuen. Orain CI ia neurri berean leheneratu da, BSD eta Solaris aldaera guztien eraikuntzak eta probak izan ezik. Nabarmentzekoa da, GitHub-en ekintzen ondoren, ez zen argipenik edo jakinarazpenik jaso, ordainketaren beharraz eta dirua kentzeko saiakerak gogorarazteaz gain.

libmdbx v0.11.3 kaleratzeari buruzko azken berrietatik, GitHub-en ekintzetatik berreskuratzeaz gain, hobekuntza eta konponketa hauek aipagarriak dira:

  • Linux kerneleko orrialde konbinatuan eta buffer-en cachean detektatu den inkoherentzia-efektu/akats baterako konponbidea gehitu da. Orrialde eta buffer-ak benetan bateratuta dauden sistemetan, ez du zentzurik kernelak memoria alferrik galtzea datuen bi kopietan jada memorian mapatutako fitxategi batean idaztean. Hori dela eta, idazten ari diren datuak memoria-mapaketaren bidez ikusgai bihurtzen dira write() sistema-deia amaitu baino lehen, datuak oraindik diskoan idatzi ez badira ere.

    Guztira, beste jokaera ez da arrazionala, izan ere, atzeratutako bateratze batekin, oraindik ere orri-zerrendetarako blokeoak hartu behar dituzu, datuak kopiatu edo PTE egokitu. Hori dela eta, esan gabeko koherentzia-araua indarrean dago 1989tik, buffer cache bateratua SRV4-n agertu zenetik. Hori dela eta, libmdbx ekoizpen agertoki okupatuetan akats arraroak aurkitzeak lan handia eskatzen zuen. Lehenik eta behin, arazoa erreproduzituz, gero hipotesiak egiaztatuz eta hobekuntzak egiaztatuz.

    Orain ziur esan dezakegu arazoa modu fidagarrian identifikatu, lokalizatu eta modu fidagarrian ezabatu dela, erreproduzitzeko eszenatokiaren konplexutasuna eta berezitasuna izan arren. Gainera, saihesbide-mekanismoaren lana Erigon-eko (Ethereum) garatzaileetako batek baieztatu zuen, bere kasuan, arazketa-eraikitzean, babesa erregresio gisa abiarazi zen baieztapen gehigarri baten ondorioz.

    Kontuan izan behar da lan-proiektuetan libmdbx-en erabilera hedatuaren testuinguruan, funtsean garrantzitsuagoa dela funtzionamendu fidagarria ziurtatzea, "hau akats bat edo ezaugarri bat" eta koherentzia horretan fida daitekeen jakitea baino. batez ere Linux nukleoaren barnean inkoherentziaren kausak ez aurkitzea. Hori dela eta, hemen erabiltzaileei eragin diezaiokeen arazo bat konpontzeaz ari gara.

  • Datu-base bat trinkotzerik gabe beste fitxategi-sistema batera berotzean kopiatzean EXDEV (gailuen arteko lotura) errorearen erregresio bat konpondu da, bai APIaren bidez, bai mdbx_copy utilitatea erabiliz.
  • Kris Zyp-ek libmdbx-erako euskarria ezarri du Deno-n. Kai Wetlesen-ek RPM paketatu ditu Fedorarako. David BouyssiΓ©-k Scalarako loturak ezarri zituen.
  • MDBX_opt_rp_augment_limit aukerak ezarritako balioaren prozesamendu finkoa datu-base handietan transakzio handiak prozesatzen direnean. Aurretik, akats baten ondorioz, alferrikako ekintzak egin zitezkeen, eta batzuetan Ethereum inplementazioetan (Erigon/Akula/Silkworm) eta Binance Chain proiektuetan errendimenduan eragina izan zuten.
  • Akats asko konpondu dira, C++ APIan daudenak barne. Konfigurazio arraro eta exotikoetan eraikitzeko arazo asko konpondu dira. Hobekuntza esanguratsu guztien zerrenda osoa dago eskuragarri ChangeLog-en.
  • Guztira 185 aldaketa egin ziren 89 fitxategitan, β‰ˆ3300 lerro gehitu ziren, β‰ˆ4100 ezabatu ziren. Gehiago kendu da, batez ere, dagoeneko alferrikakoak diren GitHub-ekin eta menpeko zerbitzuekin lotutako teknologia-fitxategiak garbitzeagatik.

Historikoki, libmdbx LMDB DBMSren birdiseinu sakona da eta bere jatorria gainditzen du fidagarritasunari, ezaugarri multzoari eta errendimenduari dagokionez. LMDBrekin alderatuta, libmdbx-ek kodearen kalitatea, API egonkortasuna, probak eta egiaztapen automatizatuak jartzen ditu arreta. Datu-basearen egituraren osotasuna egiaztatzeko utilitate bat eskaintzen da berreskuratzeko aukera batzuekin.

Teknologikoki, libmdbx-ek ACID, aldaketaren serializazio zorrotza eta blokeorik gabeko irakurketak eskaintzen ditu PUZaren nukleoetan eskalatze linealarekin. Trinkotze automatikoa, datu-basearen tamainaren kudeaketa automatikoa eta barrutiaren kontsultaren estimazioa onartzen dira. 2016az geroztik, Positive Technologies-ek finantzatu du proiektua eta 2017tik erabiltzen da bere produktuetan.

libmdbx-ek C++ API garatu bat eskaintzen du, baita zaleek onartzen dituzten loturak Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Iturria: opennet.ru

Gehitu iruzkin berria