Rhyddhau DBMS libmdbx 0.11.7. Symud Datblygiad i GitFlic Ar ôl Cloi i Lawr ar GitHub

Mae'r llyfrgell libmdbx 0.11.7 (MDBX) wedi'i rhyddhau gyda gweithredu cronfa ddata gwerth allweddol cryno perfformiad uchel wedi'i hymgorffori. Mae'r cod libmdbx yn cael ei ddosbarthu o dan Drwydded Gyhoeddus OpenLDAP. Cefnogir yr holl systemau gweithredu a phensaernïaeth gyfredol, yn ogystal â'r Elbrus 2000 o Rwsia.

Mae'r datganiad yn nodedig am ymfudiad y prosiect i wasanaeth GitFlic ar ôl i weinyddiaeth GitHub ddileu libmdbx ynghyd â llu o brosiectau eraill ar Ebrill 15, 2022 heb unrhyw rybudd nac esboniad, tra'n rhwystro mynediad ar yr un pryd i lawer o ddatblygwyr sy'n gysylltiedig â chwmnïau a ddisgynnodd. o dan sancsiynau UDA. O safbwynt y defnyddiwr, trodd holl dudalennau, ystorfa a ffyrc y prosiect yn sydyn yn dudalen "404", heb y posibilrwydd o unrhyw gyfathrebu a darganfod y rhesymau.

Yn anffodus, mae bron pob mater wedi'i golli, lle roedd llawer o gwestiynau gydag atebion manwl, yn ogystal â llawer o drafodaethau. Colli'r wybodaeth hon yw'r unig ddifrod gwrthrychol y llwyddodd gweinyddiaeth GitHub i'w achosi i'r prosiect. Mae copïau rhannol o’r trafodaethau yn parhau i fod ar gael yn archif archive.org.

Roedd colli sgriptiau CI a seilwaith adeiledig (ar gael ar gyfer prosiectau OpenSource am ddim) yn ein gorfodi i adolygu, uno a dileu dyled dechnegol fach. Nawr mae CI wedi'i adfer i'r un graddau bron, ac eithrio adeiladau a rhediadau prawf ar gyfer yr holl amrywiadau BSD a Solaris. Yn amlwg, ar ôl gweithredoedd GitHub, ni dderbyniwyd unrhyw eglurhad na hysbysiadau, ar wahân i nodyn atgoffa o'r angen am daliad ac ymdrechion i ddileu arian.

Ers y newyddion diwethaf am ryddhau libmdbx v0.11.3, yn ogystal ag adennill o gamau gweithredu GitHub, mae'n werth nodi'r gwelliannau a'r atebion canlynol:

  • Ychwanegwyd ateb gweithio ar gyfer effaith / diffyg anghydlyniad a ganfuwyd yn y dudalen gyfun a storfa byffer yn y cnewyllyn Linux. Ar systemau lle mae'r caches tudalen a byffer yn wirioneddol unedig, nid yw'n gwneud unrhyw synnwyr i'r cnewyllyn wastraffu cof ar ddau gopi o ddata wrth ysgrifennu at ffeil sydd eisoes wedi'i mapio â chof. Felly, daw'r data sy'n cael ei ysgrifennu yn weladwy trwy fapio cof cyn i'r alwad system ysgrifennu() ddod i ben, hyd yn oed os nad yw'r data wedi'i ysgrifennu ar ddisg eto.

    Yn gyfan gwbl, nid yw ymddygiad arall yn rhesymegol, oherwydd gydag oedi wrth uno, mae'n rhaid i chi ddal cloeon ar gyfer rhestrau tudalennau, copïo data, neu addasu PTE. Felly, mae'r rheol cydlyniant di-lais wedi bod mewn grym ers 1989, pan ymddangosodd y storfa byffer unedig yn SRV4. Felly, roedd angen llawer o waith i ddod o hyd i fethiannau rhyfedd mewn senarios cynhyrchu libmdbx prysur. Yn gyntaf, trwy atgynhyrchu'r broblem, yna trwy wirio damcaniaethau a gwirio gwelliannau.

    Nawr gallwn ddweud yn hyderus bod y broblem wedi'i nodi'n ddibynadwy, ei lleoleiddio a'i dileu'n ddibynadwy, er gwaethaf cymhlethdod a phenodoldeb y senario chwarae yn ôl. Yn ogystal, cadarnhawyd gwaith y mecanwaith ffordd osgoi gan un o ddatblygwyr Erigon (Ethereum), yn ei achos ef, ar y gwaith dadfygio, roedd yr amddiffyniad wedi'i sbarduno fel atchweliad oherwydd gwiriad honiad ychwanegol.

    Dylid nodi, yng nghyd-destun y defnydd eang o libmdbx mewn prosiectau gwaith, ei bod yn sylfaenol bwysicach sicrhau gweithrediad dibynadwy, yn hytrach na darganfod “a yw hwn yn nam neu’n nodwedd” ac a ellir dibynnu ar gydlyniad o’r fath, yn enwedig peidio â dod o hyd i achosion anghydlyniad o fewn y cnewyllyn Linux. Felly, dyma ni'n sôn am ddatrys problem a allai effeithio ar ddefnyddwyr.

  • Wedi trwsio gwall EXDEV (dolen traws-ddyfais) wrth gopïo cronfa ddata heb ei chywasgu i system ffeiliau arall, trwy'r API a defnyddio'r cyfleustodau mdbx_copy.
  • Mae Kris Zyp wedi gweithredu cefnogaeth ar gyfer libmdbx yn Deno. Mae Kai Wetlesen wedi pecynnu RPMs ar gyfer Fedora. Gweithredodd David Bouyssié rhwymiadau ar gyfer Scala.
  • Prosesu sefydlog o'r gwerth a osodwyd gan yr opsiwn MDBX_opt_rp_augment_limit wrth brosesu trafodion enfawr mewn cronfeydd data mawr. Yn flaenorol, oherwydd nam, gellid cyflawni gweithredoedd diangen, a oedd weithiau'n effeithio ar berfformiad mewn gweithrediadau Ethereum (Erigon / Akula / Sidan llyngyr) a phrosiectau Binance Chain.
  • Mae llawer o fygiau wedi'u trwsio, gan gynnwys y rhai yn yr API C ++. Wedi trwsio llawer o faterion adeiladu mewn cyfluniadau prin ac egsotig. Mae rhestr gyflawn o'r holl welliannau sylweddol ar gael yn y ChangeLog.
  • Gwnaethpwyd cyfanswm o 185 o newidiadau i 89 ffeil, ≈ ychwanegwyd 3300 o linellau, ≈ dilëwyd 4100. Wedi'i ddileu yn bennaf oherwydd cael gwared ar ffeiliau technoleg sydd eisoes yn ddiwerth sy'n gysylltiedig â GitHub a gwasanaethau dibynnol.

Yn hanesyddol, mae libmdbx yn ailgynllunio dwfn o'r LMDB DBMS ac yn rhagori ar ei epilydd o ran dibynadwyedd, set nodwedd a pherfformiad. O'i gymharu â LMDB, mae libmdbx yn rhoi llawer o bwyslais ar ansawdd cod, sefydlogrwydd API, profi, a gwiriadau awtomataidd. Darperir cyfleustodau ar gyfer gwirio cywirdeb strwythur y gronfa ddata gyda rhai opsiynau adfer.

Yn dechnolegol, mae libmdbx yn cynnig ACID, cyfresoli newid llym, a darlleniadau di-rwystro gyda graddio llinellol ar draws creiddiau CPU. Cefnogir awtogywasgu, rheoli maint cronfa ddata yn awtomatig, ac amcangyfrif ymholiad amrediad. Ers 2016, mae'r prosiect wedi'i ariannu gan Positive Technologies ac mae wedi'i ddefnyddio yn ei gynhyrchion ers 2017.

Mae libmdbx yn cynnig API C ++ datblygedig, yn ogystal â rhwymiadau a gefnogir gan frwdfrydedd i Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Ffynhonnell: opennet.ru

Ychwanegu sylw