Rilaxx ta' DBMS libmdbx 0.11.7. Mexxi Żvilupp għal GitFlic Wara Lockdown fuq GitHub

Il-librerija libmdbx 0.11.7 (MDBX) ġiet rilaxxata bl-implimentazzjoni ta 'database ta' valuri ewlenin inkorporati kompatti ta 'prestazzjoni għolja. Il-kodiċi libmdbx huwa liċenzjat taħt il-Liċenzja Pubblika OpenLDAP. Is-sistemi operattivi u l-arkitetturi kollha kurrenti huma appoġġjati, kif ukoll il-Russu Elbrus 2000.

Ir-rilaxx huwa notevoli għall-migrazzjoni tal-proġett għas-servizz GitFlic wara li fil-15 ta’ April, 2022, l-amministrazzjoni ta’ GitHub, mingħajr ebda twissija jew spjegazzjoni, ħassret libmdbx flimkien ma’ għadd ta’ proġetti oħra, filwaqt li fl-istess ħin imblokkat l-aċċess għal ħafna żviluppaturi assoċjati ma’ kumpaniji soġġetti għal sanzjonijiet tal-Istati Uniti. Mill-aspett tal-utenti, il-paġni kollha, ir-repożitorju u l-frieket tal-proġett f'daqqa waħda nbidlu f'paġna 404, mingħajr il-possibbiltà ta 'ebda komunikazzjoni u jiskopru r-raġunijiet.

Sfortunatament, kważi l-kwistjonijiet kollha, li fihom kien hemm ħafna mistoqsijiet bi tweġibiet dettaljati, kif ukoll ħafna diskussjonijiet, intilfu. It-telf ta 'din l-informazzjoni huwa l-unika ħsara oġġettiva li l-amministrazzjoni ta' GitHub irnexxielha tikkawża lill-proġett. Kopji parzjali tad-diskussjonijiet jibqgħu disponibbli fuq archive.org.

It-telf ta 'xenarji u infrastruttura CI mibnija (disponibbli għal proġetti OpenSource b'xejn) ġiegħlna nwettqu reviżjoni, unifikazzjoni u eliminazzjoni ta' dejn tekniku żgħir. Issa CI ġie rrestawrat kważi sa l-istess punt, bl-eċċezzjoni tat-testijiet tal-bini u t-tħaddim għall-varjanti kollha tal-BSD u Solaris. Tipikament, wara l-azzjonijiet, GitHub ma rċieva l-ebda kjarifiki jew notifiki, minbarra tfakkiriet dwar il-ħtieġa ta 'ħlas u attentati biex jitħassru l-flus.

Mill-aħħar aħbarijiet dwar ir-rilaxx ta 'libmdbx v0.11.3, minbarra l-irkupru minn azzjonijiet GitHub, ta' min jinnota t-titjib u l-soluzzjonijiet li ġejjin:

  • Miżjud soluzzjoni għal effett/difett ta' inkoerenza misjuba fil-paġna magħquda u l-cache tal-buffer fil-kernel tal-Linux. F'sistemi fejn il-paġni u l-buffer caches huma verament magħquda, m'hemm l-ebda punt li l-kernel jaħli l-memorja għal żewġ kopji ta 'data meta tikteb f'fajl li huwa diġà mmappjat fil-memorja. Għalhekk, id-dejta li qed tinkiteb issir viżibbli permezz tal-immappjar tal-memorja qabel ma titlesta s-sejħa tas-sistema write(), anki jekk id-dejta tkun għadha ma nkitbetx fuq id-diska.

    B'mod ġenerali, imġieba oħra mhix razzjonali, għaliex b'għaqda differita, xorta jkollok takkwista serraturi għal-listi ta 'paġni, tikkopja dejta, jew taġġusta PTE. Għalhekk, ir-regola ta' koerenza mhux mitkellma ilha fis-seħħ mill-1989, meta l-buffer cache unifikat deher f'SRV4. Għalhekk, l-iskoperta ta 'ħabtiet strambi f'xenarji ta' sfruttament libmdbx mgħobbija kien jeħtieġ ħafna xogħol. L-ewwel biex tirriproduċi l-problema, imbagħad biex tivverifika l-ipoteżijiet u t-titjib tat-test.

    Issa nistgħu ngħidu b'mod kunfidenti li l-problema ġiet identifikata b'mod affidabbli, lokalizzata u eliminata b'mod affidabbli, minkejja l-kumplessità u l-ispeċifiċità tax-xenarju ta 'riproduzzjoni. Barra minn hekk, it-tħaddim tal-mekkaniżmu ta 'bypass ġie kkonfermat minn wieħed mill-iżviluppaturi ta' Erigon (Ethereum); fil-każ tiegħu, fuq il-bini tad-debug, il-protezzjoni kienet attivata bħala rigressjoni minħabba verifika ta 'asserzjoni bla bżonn.

    Għandu jiġi nnutat li fil-kuntest tal-użu mifrux tal-libmdbx fi proġetti ta’ produzzjoni, li jiġi żgurat tħaddim affidabbli huwa fundamentalment aktar importanti milli wieħed jifhem jekk huwiex bug jew karatteristika u jekk koerenza bħal din tistax tkun invokata, u wisq inqas it-tiftix għall- kawżi ta’ inkoerenza fil-qalba tal-Linux. Għalhekk, hawnhekk qed nitkellmu dwar l-iffissar ta 'kwistjoni li setgħet affettwat lill-utenti.

  • Ir-rigressjoni tal-iżball EXDEV (Kross-device link) meta tikkopja database mingħajr kompattazzjoni għal sistema ta 'fajls oħra, kemm permezz tal-API kif ukoll bl-utilità mdbx_copy, ġiet eliminata.
  • Kris Zyp implimenta appoġġ libmdbx f'Deno. Kai Wetlesen iddisinjat ippakkjar RPM għal Fedora. David Bouyssié implimenta rbit għal Scala.
  • Ipproċessar fiss tal-valur speċifikat mill-għażla MDBX_opt_rp_augment_limit meta tipproċessa tranżazzjonijiet kbar f'databases kbar. Preċedentement, minħabba żball, setgħu jitwettqu azzjonijiet mhux meħtieġa, li xi drabi affettwaw il-prestazzjoni fl-implimentazzjonijiet ta 'Ethereum (Erigon / Akula / Silkworm) u proġetti Binance Chain.
  • Ġew irranġati ħafna bugs, inkluż fl-API C++. Irranġa bosta kwistjonijiet ta' bini f'konfigurazzjonijiet rari u eżotiċi. Lista kompluta tat-titjib sinifikanti kollu hija disponibbli f'ChangeLog.
  • Saru total ta' 185 tibdil f'89 fajl, ġew miżjuda ≈3300 linja, ≈4100 tħassru. Aktar tneħħew prinċipalment minħabba t-tindif ta 'fajls tat-teknoloġija diġà inutli assoċjati ma' GitHub u servizzi dipendenti.

Storikament, libmdbx huwa xogħol mill-ġdid fil-fond tal-LMDB DBMS u huwa superjuri għall-antenat tiegħu fl-affidabbiltà, is-sett ta 'karatteristiċi u l-prestazzjoni. Meta mqabbel ma 'LMDB, libmdbx jagħmel ħafna enfasi fuq il-kwalità tal-kodiċi, l-istabbiltà tal-API, l-ittestjar u l-kontrolli awtomatizzati. Hija fornuta utilità għall-iċċekkjar tal-integrità tal-istruttura tad-database b'xi kapaċitajiet ta' rkupru.

Fir-rigward tat-teknoloġija, libmdbx joffri ACID, serialization ta 'bidla qawwija, u qari li ma jimblukkawx bi skalar lineari fil-qlub tas-CPU. Il-kompattifikazzjoni awtomatika, il-ġestjoni awtomatika tad-daqs tad-database, u l-istima tal-mistoqsija tal-firxa huma appoġġjati. Mill-2016, il-proġett ġie ffinanzjat minn Positive Technologies u ilu jintuża fil-prodotti tiegħu mill-2017.

libmdbx joffri API C++ żviluppata, kif ukoll rabtiet appoġġjati minn dilettanti għal-lingwi Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Sors: opennet.ru

Żid kumment