Liberigo de DBMS libmdbx 0.11.7. Movu Disvolviĝon al GitFlic Post Ŝlosiĝo sur GitHub

La libmdbx 0.11.7 (MDBX) biblioteko estis publikigita kun la efektivigo de alt-efikeca kompakta enigita ŝlosilvalora datumbazo. La libmdbx-kodo estas distribuita sub la Publika Permesilo OpenLDAP. Ĉiuj nunaj operaciumoj kaj arkitekturoj estas subtenataj, same kiel la rusa Elbrus 2000.

La eldono estas rimarkinda pro la migrado de la projekto al la servo GitFlic post kiam la administrado de GitHub forigis libmdbx kune kun amaso da aliaj projektoj la 15-an de aprilo 2022 sen ajna averto aŭ klarigo, samtempe blokante aliron al multaj programistoj asociitaj kun kompanioj kiuj falis. sub usonaj sankcioj. El la vidpunkto de la uzanto, ĉiuj paĝoj, deponejo kaj forkoj de la projekto subite fariĝis paĝo "404", sen ebleco de ia komunikado kaj ekscii la kialojn.

Bedaŭrinde preskaŭ ĉiuj aferoj perdiĝis, en kiuj estis multaj demandoj kun detalaj respondoj, kaj ankaŭ multaj diskutoj. La perdo de ĉi tiu informo estas la sola objektiva damaĝo, kiun la administrado de GitHub sukcesis kaŭzi al la projekto. Partaj kopioj de la diskutoj restas haveblaj en la arkivo.org.

La perdo de enkonstruitaj CI-skriptoj kaj infrastrukturo (disponeblaj por OpenSource-projektoj senpage) devigis nin fari revizion, unuigon kaj eliminon de malgranda teknika ŝuldo. Nun CI estis restarigita preskaŭ en la sama mezuro, kun la escepto de konstruoj kaj provoj por ĉiuj variantoj de BSD kaj Solaris. Kompreneble, post la agoj de GitHub, neniuj klarigoj aŭ sciigoj estis ricevitaj, krom memorigilo pri la bezono de pago kaj provoj forigi monon.

Ekde la lastaj novaĵoj pri la liberigo de libmdbx v0.11.3, krom reakiro post GitHub-agoj, la sekvaj plibonigoj kaj korektoj estas rimarkindaj:

  • Aldonita solvo por detektita malkoherefiko/difekto en la kombinita paĝo kaj bufrokaŝmemoro en la Linukso-kerno. Sur sistemoj kie la paĝo kaj bufrokaŝmemoroj estas vere unuigitaj, ne havas sencon, ke la kerno malŝparu memoron pri du kopioj de datumoj dum vi verkas al jam memor-mapita dosiero. Tial, la datenoj estantaj skribitaj iĝas videblaj per memormapado antaŭ ol la write() sistemvoko finiĝas, eĉ se la datenoj ankoraŭ ne estis skribitaj al disko.

    Entute, alia konduto ne estas racia, ĉar kun malfrua kunfandiĝo, vi ankoraŭ devas kapti serurojn por paĝlistoj, kopii datumojn aŭ ĝustigi PTE. Tial, la neesprimita regulo de kohereco validas ekde 1989, kiam la unuigita bufrokaŝmemoro aperis en SRV4. Tial trovi strangajn malsukcesojn en okupataj libmdbx-produktadscenaroj postulis multe da laboro. Unue, reproduktante la problemon, poste kontrolante hipotezojn kaj kontrolante plibonigojn.

    Nun ni povas memcerte diri, ke la problemo estis fidinde identigita, lokalizita kaj fidinde forigita, malgraŭ la komplekseco kaj specifeco de la reprodukta scenaro. Aldone, la laboro de la pretervojo-mekanismo estis konfirmita de unu el la programistoj de Erigon (Ethereum), en lia kazo, pri la senerara konstruo, la protekto ekfunkciis kiel regreso pro ekstra aserto-kontrolo.

    Oni devas rimarki, ke en la kunteksto de la disvastigita uzo de libmdbx en laborprojektoj, estas esence pli grave certigi fidindan funkciadon, kaj ne ekscii "ĉu ĉi tio estas cimo aŭ trajto" kaj ĉu tia kohereco povas esti fidi. , precipe ne serĉante la kaŭzojn de nekohereco ene de la Linukso-kerno. Tial ĉi tie ni parolas pri ripari problemon, kiu povus influi uzantojn.

  • Korektis regreson de la eraro EXDEV (Kruzapara ligo) kiam oni varme kopias datumbazon sen kompaktigo al alia dosiersistemo, kaj per la API kaj uzante la ilon mdbx_copy.
  • Kris Zyp efektivigis subtenon por libmdbx en Deno. Kai Wetlesen pakis RPM-ojn por Fedora. David Bouyssié efektivigis ligadojn por Scala.
  • Riparita uzado de la valoro fiksita de la opcio MDBX_opt_rp_augment_limit dum prilaborado de grandegaj transakcioj en grandaj datumbazoj. Antaŭe, pro cimo, nenecesaj agoj povus esti faritaj, kiuj foje influis agadon en Ethereum-efektivigoj (Erigon/Akula/Silkworm) kaj Binance Chain-projektoj.
  • Multaj eraroj estis korektitaj, inkluzive de tiuj en la C++ API. Riparis multajn konstruproblemojn en maloftaj kaj ekzotikaj agordoj. Kompleta listo de ĉiuj signifaj plibonigoj haveblas en la Ŝanĝprotokolo.
  • Entute 185 ŝanĝoj estis faritaj al 89 dosieroj, ≈3300 linioj estis aldonitaj, ≈4100 estis forigitaj. Forigita pli plejparte pro elpurigo de jam senutilaj teknikaj dosieroj asociitaj kun GitHub kaj dependaj servoj.

Historie, libmdbx estas profunda restrukturado de la LMDB DBMS kaj superas ĝian prapatron laŭ fidindeco, funkcioj kaj efikeco. Kompare kun LMDB, libmdbx multe emfazas kodkvaliton, API-stabilecon, testadon kaj aŭtomatigitajn kontrolojn. Ilo por kontroli la integrecon de la datumbaza strukturo estas provizita kun kelkaj reakiro-opcioj.

Teknologie, libmdbx ofertas ACID, striktan ŝanĝan seriigon kaj ne-blokantajn legadojn kun lineara skalo trans CPU-kernoj. Aŭtokompaktigo, aŭtomata datumbaza grandadministrado kaj interval-demanda takso estas subtenataj. Ekde 2016, la projekto estas financita de Positive Technologies kaj estas uzata en siaj produktoj ekde 2017.

libmdbx ofertas evoluintan C++ API, same kiel entuziasmul-subtenatajn ligojn al Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

fonto: opennet.ru

Aldoni komenton