Tehokkaan sulautetun DBMS:n libmdbx 0.10.4 ja libfpta 0.3.9 julkaisu

Libmdbx 0.10.4 (MDBX) -kirjastot julkaistiin käyttämällä tehokasta kompaktia sulautettua avainarvotietokantaa ja siihen liittyvää libfpta 0.3.9 (FPTA) -kirjastoa, joka toteuttaa tietojen taulukkoesityksen toissijaisilla ja yhdistelmähakemistoilla. MDBX:n päällä. Molempia kirjastoja jaetaan OSI:n hyväksymillä lisensseillä. Kaikki nykyiset käyttöjärjestelmät ja arkkitehtuurit ovat tuettuja, samoin kuin venäläinen Elbrus 2000.

Historiallisesti libmdbx on syvällinen uudistus LMDB DBMS:stä ja ylittää esi-isänsä luotettavuudeltaan, ominaisuuksiltaan ja suorituskyvyltään. LMDB:hen verrattuna libmdbx painottaa paljon koodin laatua, API-vakautta, testausta ja automaattisia tarkistuksia. Mukana toimitetaan apuohjelma tietokantarakenteen eheyden tarkistamiseksi, jossa on joitakin palautusominaisuuksia.

Teknologiallisesti libmdbx tarjoaa ACID:n, voimakkaan 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. Vuodesta 2016 lähtien projekteja on rahoittanut Positive Technologies ja vuodesta 2017 lähtien niitä on käytetty sen tuotteissa.

libmdbx tarjoaa C++ API:n sekä harrastajien tukemat kielisidokset Rustille, Haskellille, Pythonille, NodeJS:lle, Rubylle, Golle ja Nimille. Libfpta:ssa vain API-kuvaus on julkisesti saatavilla C/C++-otsikkotiedoston muodossa.

Tärkeimmät innovaatiot, parannukset ja korjaukset lisätty edellisen uutisen jälkeen 9. toukokuuta:

  • Mahdollistaa toistettavat koontiversiot.
  • Korjattu virhe, jonka vuoksi erittäin harvoissa olosuhteissa voi tapahtua silmukka/jäätyminen tapahtuman sitoumuksen aikana. Ongelman havaitsivat Positive Tecnologiesin asiantuntijat omien tuotteidensa sisäisessä testauksessa.
  • Testejä on parannettu ja testiskenaarioita on laajennettu tarkistamaan kaikki tietokannan sisällä olevat sivupuun ja GC-sisällön saavutettavat ei-isomorfiset tilat.
  • C++ API:ssa on korjattu ylimääräinen "noexcept", ylimääräisiä ylikuormituksia on lisätty "cursor::erase()"-menetelmään, puskurien toteutusta on säästetty "std::string":n käytöstä tasauksen varmistamiseksi. (koskee CLANG libstdc++:aa).
  • Likaisten sivujen leviämisalgoritmin regressio (muuttuneiden tietokantasivujen valikoiva poistaminen), joka ilmeni harvinaisena odottamattomana virheenä MDBX_PROBLEM, kun tietoja muutetaan suurissa tapahtumissa, on eliminoitu.
  • Suoritettiin vaiheistustesti, johon lisättiin useita tarkastuksia, joilla varmistettiin vakaus tietokannan tahallisen vahingoittamisen sattuessa.
  • Korjattu pienet varoitukset UndefinedBehaviorSanitizer- ja Coverity Scan -ongelmat.
  • Korjattu vanhentuneen ja enää käyttämättömän sisäisen lipun "P_DIRTY" tarkistus kirjaston vanhempien versioiden luomien tietokantakuvien sisäkkäisillä sivuilla.
  • CMake-skripteissä LTO:n (link-time optimization) edellyttämien kääntäjäkomponenttien hakua on parannettu.
  • Samanaikaisten lukijoiden enimmäismäärä on nostettu 32767:ään.
  • Parempi suorituskyky käytettäessä Valgrindia ja AddressSanitizeriä.
  • Windowsissa SRW-lukon rekursiivinen käyttö MDBX_NOTLS-tilassa työskennellessä (ilman säikeen paikallista tallennusta) on eliminoitu, käynnistyskoodin luominen on korjattu, jos järjestelmän aika on muuttunut, WSL1- ja WSL2-tunnistusta on parannettu ja kyky Avaa tietokanta DrvFS:n kautta asennetussa Plan 9:ssä on lisätty.
  • Yhteensä yli 160 muutosta tehtiin 57 tiedostoon, ~5000 riviä lisättiin, ~2500 poistettiin.

Erityisesti haluan kiittää Erigon-projektitiimiä (Ethereum-ekosysteemi) avusta äärimmäisissä käyttötilanteissa. On merkittävää, että viiden kuukauden aikana libmdbx v0.10.0:n julkaisusta, jonka tietokantavolyymi oli 1–2 TB jokaisessa Erigon-asennuksessa (käytetty 7 %:ssa Ethereum-solmuista), vain kolme tietokannan vioittumisilmoitusta vastaanotettiin. joka johtui ulkoisista syistä, ei ohjelmistovirheistä: kahdessa tapauksessa syynä oli RAM-virheitä, kolmannessa virhe tietojen nollauksessa tietyssä tallennusalijärjestelmän kokoonpanossa BTRFS:n avulla.

Lähde: opennet.ru

Lisää kommentti