DBVS libmdbx 0.11.7 išleidimas. Kūrimas perkeliamas į „GitFlic“ užblokavus „GitHub“.

Libmdbx 0.11.7 (MDBX) biblioteka buvo išleista įdiegus didelio našumo kompaktišką įterptąją raktų verčių duomenų bazę. Libmdbx kodas yra licencijuotas pagal OpenLDAP viešąją licenciją. Palaikomos visos dabartinės operacinės sistemos ir architektūros, taip pat rusiška Elbrus 2000.

Leidimas pastebimas dėl projekto perkėlimo į „GitFlic“ paslaugą po to, kai 15 m. balandžio 2022 d. „GitHub“ administracija be jokio įspėjimo ar paaiškinimo ištrynė „libmdbx“ kartu su daugybe kitų projektų, tuo pačiu blokuodama prieigą prie daugelio kūrėjų, susijusių su įmonėms, kurioms taikomos JAV sankcijos. Vartotojų požiūriu, visi projekto puslapiai, saugykla ir šakutės staiga virto 404 puslapiu, be galimybės bendrauti ir išsiaiškinti priežastis.

Deja, beveik visi klausimai, kuriuose buvo daug klausimų su išsamiais atsakymais, taip pat daug diskusijų, buvo prarasti. Šios informacijos praradimas yra vienintelė objektyvi žala, kurią „GitHub“ administracija sugebėjo padaryti projektui. Dalines diskusijų kopijas galima rasti adresu archive.org.

Sukurtų CI scenarijų ir infrastruktūros (nemokamai prieinama atvirojo kodo projektams) praradimas privertė mus imtis peržiūros, suvienodinimo ir mažų techninių skolų pašalinimo. Dabar CI buvo atkurta beveik tokiu pat mastu, išskyrus visų BSD ir Solaris variantų kūrimo ir vykdymo testus. Paprastai po veiksmų „GitHub“ negaudavo jokių paaiškinimų ar pranešimų, išskyrus priminimus apie mokėjimo poreikį ir bandymus nurašyti pinigus.

Nuo paskutinių naujienų apie libmdbx v0.11.3 išleidimą, be atkūrimo po GitHub veiksmų, verta atkreipti dėmesį į šiuos patobulinimus ir pataisymus:

  • Pridėtas sprendimas dėl aptikto nenuoseklumo efekto / defekto sujungtame puslapyje ir buferio talpykloje Linux branduolyje. Sistemose, kuriose puslapio ir buferio talpyklos yra tikrai sujungtos, branduoliui nėra prasmės eikvoti atminties dviem duomenų kopijoms rašant į failą, kuris jau susietas su atmintimi. Todėl įrašomi duomenys tampa matomi naudojant atminties susiejimą prieš baigiant write() sistemos iškvietimą, net jei duomenys dar nebuvo įrašyti į diską.

    Apskritai kitoks elgesys nėra racionalus, nes su atidėtu sujungimu vis tiek turėsite įsigyti puslapių sąrašų užraktus, kopijuoti duomenis arba koreguoti PTE. Todėl neišsakyta darnos taisyklė galioja nuo 1989 m., kai SRV4 pasirodė vieninga buferio talpykla. Todėl keistų strigčių aptikimas įkeltuose libmdbx išnaudojimo scenarijuose pareikalavo daug darbo. Pirmiausia atkurti problemą, tada patikrinti hipotezes ir išbandyti patobulinimus.

    Dabar galime drąsiai teigti, kad problema buvo patikimai nustatyta, lokalizuota ir patikimai pašalinta, nepaisant reprodukcijos scenarijaus sudėtingumo ir specifiškumo. Be to, apėjimo mechanizmo veikimą patvirtino vienas iš „Erigon“ („Ethereum“) kūrėjų; jo atveju, derinant, apsauga buvo suaktyvinta kaip regresija dėl nereikalingo patvirtinimo patikrinimo.

    Pažymėtina, kad atsižvelgiant į plačiai paplitusį libmdbx naudojimą gamybiniuose projektuose, patikimo veikimo užtikrinimas yra iš esmės svarbiau nei išsiaiškinti, ar tai klaida, ar savybė ir ar galima pasikliauti tokia darna, o tuo labiau – ieškoti nenuoseklumo Linux branduolyje priežastys. Todėl čia kalbame apie problemos, kuri galėjo turėti įtakos vartotojams, taisymą.

  • Pašalinta EXDEV (Kelių įrenginių saito) klaidos regresija, kai karštai kopijuojama duomenų bazė be kompaktiškumo į kitą failų sistemą tiek per API, tiek naudojant mdbx_copy įrankį.
  • Kris Zyp įdiegė libmdbx palaikymą Deno. Kai Wetlesen sukūrė RPM pakuotę „Fedora“. David Bouyssié įdiegė apkaustus Scala.
  • Fiksuotas vertės, nurodytos MDBX_opt_rp_augment_limit parinktimi, apdorojimas apdorojant didžiules operacijas didelėse duomenų bazėse. Anksčiau dėl klaidos galėjo būti atliekami nereikalingi veiksmai, kurie kartais turėjo įtakos Ethereum diegimų (Erigon/Akula/Silkworm) ir Binance Chain projektų našumui.
  • Ištaisyta daug klaidų, įskaitant C++ API. Ištaisyta daug retų ir egzotiškų konfigūracijų kūrimo problemų. Išsamų visų reikšmingų patobulinimų sąrašą galima rasti „ChangeLog“.
  • Iš viso 185 failuose padaryti 89 pakeitimai, pridėta ≈3300 eilučių, ištrinta ≈4100. Daugiau buvo pašalinta daugiausia dėl jau nenaudingų technologijų failų, susijusių su „GitHub“ ir priklausomomis paslaugomis, valymo.

Istoriškai libmdbx yra gilus LMDB DBVS perdirbimas ir pranašesnis už savo pirmtaką savo patikimumu, funkcijų rinkiniu ir našumu. Palyginti su LMDB, libmdbx daug dėmesio skiria kodo kokybei, API stabilumui, testavimui ir automatiniams patikrinimams. Pateikiama duomenų bazės struktūros vientisumo tikrinimo programa su tam tikromis atkūrimo galimybėmis.

Technologiškai libmdbx siūlo ACID, stiprią pakeitimų serializaciją ir neblokuojančius skaitymus su tiesiniu mastelio keitimu procesoriaus branduoliuose. Palaikomas automatinis suglaudinimas, automatinis duomenų bazės dydžio valdymas ir diapazono užklausos įvertinimas. Nuo 2016 m. projektą finansuoja „Positive Technologies“ ir nuo 2017 m.

libmdbx siūlo sukurtą C++ API, taip pat entuziastų palaikomus susiejimus su kalbomis „Rust“, „Haskell“, „Python“, „NodeJS“, „Ruby“, „Go“, „Nim“, „Deno“, „Scala“.

Šaltinis: opennet.ru

Добавить комментарий