DBMS:n libmdbx 0.11.7 julkaisu. Siirrä kehitys GitFliciin GitHubin lukituksen jälkeen

Libmdbx 0.11.7 (MDBX) -kirjasto on julkaistu tehokkaan kompaktin sulautetun avainarvotietokannan avulla. Libmdbx-koodia jaetaan OpenLDAP Public License -lisenssillä. Kaikki nykyiset käyttöjärjestelmät ja arkkitehtuurit ovat tuettuja, samoin kuin venäläinen Elbrus 2000.

Julkaisu on huomionarvoinen projektin siirtymisestä GitFlic-palveluun sen jälkeen, kun GitHubin hallinto poisti libmdbx:n ja monia muita projekteja 15. huhtikuuta 2022 ilman varoitusta tai selitystä, samalla kun se esti pääsyn monille kaatuneiden yritysten kehittäjille. Yhdysvaltain pakotteiden alla. Käyttäjän näkökulmasta kaikki projektin sivut, arkisto ja haarukat muuttuivat yhtäkkiä "404"-sivuksi ilman mahdollisuutta kommunikoida ja selvittää syitä.

Valitettavasti lähes kaikki asiat ovat kadonneet, ja niissä oli paljon kysymyksiä yksityiskohtaisine vastauksin sekä paljon keskustelua. Näiden tietojen menettäminen on ainoa objektiivinen vahinko, jonka GitHubin hallinto onnistui aiheuttamaan projektille. Osittaiset kopiot keskusteluista ovat edelleen saatavilla archive.org-arkistossa.

Sisäänrakennettujen CI-skriptien ja infrastruktuurin menettäminen (saatavilla avoimen lähdekoodin projekteihin ilmaiseksi) pakotti meidät tarkistamaan, yhdistämään ja poistamaan pienen teknisen velan. Nyt CI on palautettu lähes samassa määrin, lukuun ottamatta kaikkien BSD- ja Solaris-versioiden koontiversioita ja testiajoja. Kertoo, että GitHubin toiminnan jälkeen ei tullut mitään selvennyksiä tai ilmoituksia lukuunottamatta muistutusta maksun tarpeesta ja yrityksistä poistaa rahaa.

Viimeisimpien libmdbx v0.11.3 -julkaisujen uutisten jälkeen GitHub-toiminnoista toipumisen lisäksi seuraavat parannukset ja korjaukset ovat huomionarvoisia:

  • Lisätty kiertotapa havaitulle epäjohdonmukaisuusvaikutukselle/vialle yhdistetyssä sivussa ja puskurin välimuistissa Linux-ytimessä. Järjestelmissä, joissa sivu- ja puskurivälimuistit ovat todella yhtenäisiä, ytimen ei ole järkevää tuhlata muistia kahdelle datakopiolle kirjoittaessaan jo muistikartoituun tiedostoon. Siksi kirjoitettava data tulee näkyviin muistikartoituksen kautta ennen kuin write()-järjestelmäkutsu on valmis, vaikka dataa ei olisi vielä kirjoitettu levylle.

    Kaiken kaikkiaan muu toiminta ei ole järkevää, koska viivästyneessä yhdistämisessä joudut silti tarttumaan sivuluetteloihin, kopioimaan tietoja tai säätämään PTE:tä. Siksi sanaton koherenssisääntö on ollut voimassa vuodesta 1989, jolloin yhtenäinen puskurivälimuisti ilmestyi SRV4:ään. Siksi outojen vikojen löytäminen kiireisissä libmdbx-tuotantoskenaarioissa vaati paljon työtä. Ensin toistamalla ongelma, sitten tarkistamalla hypoteesit ja tarkistamalla parannukset.

    Nyt voimme vakuuttavasti sanoa, että ongelma on tunnistettu, lokalisoitu ja luotettavasti eliminoitu toistoskenaarion monimutkaisuudesta ja spesifisyydestä huolimatta. Lisäksi yksi Erigonin (Ethereumin) kehittäjistä vahvisti ohitusmekanismin toiminnan, hänen tapauksessaan debug-koontiversiossa suojaus laukesi regressiona ylimääräisen vahvistustarkastuksen vuoksi.

    On huomattava, että libmdbx:n laajan käytön yhteydessä työprojekteissa on pohjimmiltaan tärkeämpää varmistaa luotettava toiminta kuin selvittää "onko tämä vika vai ominaisuus" ja voidaanko tällaiseen johdonmukaisuuteen luottaa. etenkään Linux-ytimen epäjohdonmukaisuuden syiden löytämättä. Siksi tässä puhumme käyttäjiin mahdollisesti vaikuttavan ongelman korjaamisesta.

  • Korjattu EXDEV-virheen (Cross-Device Link) regressio, kun tietokanta kopioitiin ilman pakkausta toiseen tiedostojärjestelmään sekä API:n kautta että mdbx_copy-apuohjelmalla.
  • Kris Zyp on ottanut käyttöön tuen libmdbx:lle Denossa. Kai Wetlesen on pakannut RPM:t Fedoralle. David Bouyssié toteutti siteet Scalalle.
  • Korjattu MDBX_opt_rp_augment_limit-vaihtoehdon asettaman arvon käsittely, kun käsitellään valtavia tapahtumia suurissa tietokannoissa. Aiemmin virheen vuoksi voitiin suorittaa tarpeettomia toimia, jotka joskus vaikuttivat suorituskykyyn Ethereum-toteutuksissa (Erigon/Akula/Silkworm) ja Binance Chain -projekteissa.
  • Monet viat on korjattu, mukaan lukien C++ API:n. Korjattu monia rakennusongelmia harvinaisissa ja eksoottisissa kokoonpanoissa. Täydellinen luettelo kaikista merkittävistä parannuksista on saatavilla ChangeLogissa.
  • Yhteensä 185 muutosta tehtiin 89 tiedostoon, ≈3300 riviä lisättiin, ≈4100 poistettiin. Poistettu useammin johtuen GitHubiin ja riippuvaisiin palveluihin liittyvien jo turhien teknisten tiedostojen poistamisesta.

Historiallisesti libmdbx on LMDB DBMS:n syvällinen uudistus, ja se ylittää edeltäjänsä luotettavuuden, ominaisuuksien ja suorituskyvyn suhteen. LMDB:hen verrattuna libmdbx painottaa paljon koodin laatua, API-vakautta, testausta ja automaattisia tarkistuksia. Tietokantarakenteen eheyden tarkistamiseen tarkoitettu apuohjelma toimitetaan joidenkin palautusvaihtoehtojen kanssa.

Teknologisesti libmdbx tarjoaa ACID:n, tiukan muutosserialisoinnin ja estämättömän lukemisen lineaarisella skaalauksella prosessoriytimien välillä. Automaattinen tiivistäminen, automaattinen tietokannan koon hallinta ja aluekyselyn arviointi ovat tuettuja. Projektia on vuodesta 2016 lähtien rahoittanut Positive Technologies, ja sitä on käytetty sen tuotteissa vuodesta 2017 lähtien.

libmdbx tarjoaa kehitetyn C++ API:n sekä harrastajien tukemat sidokset Rust-, Haskell-, Python-, NodeJS-, Ruby-, Go-, Nim-, Deno- ja Scala-ohjelmiin.

Lähde: opennet.ru

Lisää kommentti