Toinen libmdbx v1.0 -julkaisuehdokas viiden vuoden kehitystyön jälkeen.

kirjasto libmdbx on merkittävästi uudistettu LMDB:n jälkeläinen - erittäin suorituskykyinen, kompakti sulautettu avainarvotietokanta.
Nykyinen versio v0.5 on tekninen versio, ja se merkitsee kaikkien parannusten valmistumista ja siirtymistä julkisen lopullisen testauksen ja vakautuksen vaiheeseen, minkä jälkeen kirjaston ensimmäinen täysi julkaisu muodostuu.

LMDB on melko tunnettu tapahtumakohtainen sulautettu avainarvotietokantajärjestelmä, joka perustuu puu B+ без ennakoiva kirjaus, jonka avulla parvi monisäikeisiä prosesseja voi toimia kilpailukykyisesti ja erittäin tehokkaasti paikallisesti jaetun (ei verkon) tietokannan kanssa. MDBX puolestaan ​​on nopeampi ja luotettavampi kuin LMDB, kun taas libmdbx säilyttää kaikki esi-isänsä tärkeimmät ominaisuudet, kuten ACID ja estävät lukemat lineaarisella skaalauksella prosessoriytimien välillä ja lisää myös useita uusia.

Kuvaus libmdbx:n eroista ja parannuksista LMDB:hen verrattuna ansaitsee erillisen artikkelin (suunniteltu julkaistavaksi Habréssa ja Mediumissa). Tässä on aiheellista mainita tärkeimmät ja havaittavissa olevat:

  • Periaatteessa enemmän huomiota kiinnitetään koodin laatuun, testaukseen ja automaattisiin tarkistuksiin.
  • Huomattavasti enemmän hallintaa käytön aikana parametrien tarkistuksesta tietokantarakenteiden sisäiseen tarkastukseen.
  • Automaattinen tiivistys ja automaattinen tietokannan koon hallinta.
  • Yksi tietokantamuoto 32- ja 64-bittisille kokoonpanoille.
  • Otoskoon estimointi alueittain (aluekyselyn estimointi).
  • Tuki kaksi kertaa pannukakkua suuremmille avaimille ja käyttäjän valittavissa olevalle tietokantasivulle.

Libmdbx-julkaisuehdokas on seurausta päätöksestä (katso alla) erottaa MDBX- ja MithrilDB-projektit elokuussa 2019. Samanaikaisesti libmdbx päätti poistaa (rationaalisen) teknisen enimmäisvelan ja vakauttaa kirjaston. Itse asiassa määrättyyn suuntaan on tehty 2-3 kertaa enemmän kuin alun perin arvioitiin ja suunniteltiin:

  • Tuki Mac OS:lle ja toisen tason alustoille on otettu käyttöön: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX- ja HP-UX-tuki voidaan lisätä tarpeen mukaan.
  • Koodi desinfioitiin Undefined Behavior Sanitizerilla ja Address Sanitizerilla, kaikki -Wpedanticilla rakentamisen varoitukset, kaikki Coverity Static Analyzerin varoitukset jne. poistettiin.
  • Päivittää API-kuvaukset.
  • Lähdekoodin yhdistäminen upottamisen helpottamiseksi.
  • CTee tuki.
  • Tuki sisäkkäisille tapahtumille.
  • Käynnistystunnuksen käyttäminen sen määrittämiseen, onko käyttöjärjestelmä käynnistetty uudelleen (likainen tietokannan pysäytys).
  • Päivitettyjen/vanhojen sivujen ja laajennettujen tapahtumatietojen laskeminen päästä päähän.
  • Vaihtoehto MDBX_ACCEDE yhteyden muodostamiseksi jo avoimeen tietokantaan yhteensopivassa tilassa.
  • Käyttää OFD esto kun saatavilla.
  • Kuuma varmuuskopio putkessa.
  • Erikoistunut optimoitu sisäinen lajittelualgoritmi (jopa 2-3 kertaa nopeampi kuin qsort() ja jopa 30 % nopeampi kuin std::sort()).
  • Avaimen enimmäispituutta on pidennetty.
  • Automaattinen käsittelyn hallinta (tietokantatiedostojen välimuististrategia muistissa).
  • Aggressiivisempi ja nopeampi automaattinen tiivistys.
  • Optimaalisempi strategia B+-puusivujen yhdistämiseen.
  • Ei-paikallisten tiedostojärjestelmien (NFS, Samba jne.) hallinta estää tietokannan vahingoittumisen, jos niitä käytetään väärin.
  • Testien joukkoa on laajennettu.

Libmdbx:n "seuraavan" version kehitys jatkuu erillisenä projektina MithrilDB, kun taas MDBX:n "nykyisen" version kehitysvektorin tarkoituksena on jäädyttää ominaisuusjoukko ja vakauttaa se. Tämä päätös tehtiin kolmesta syystä:

  • Täysin yhteensopimaton: MithrilDB vaatii erilaista (yhteensopimatonta) tietokantatiedostomuotoa ja erilaista (yhteensopimatonta) API:ta kaikkien suunniteltujen ominaisuuksien toteuttamiseksi.
  • Uusi lähdekoodi: MithrilDB:n lähdekoodi on lisensoitu LMDB:stä riippumattomaksi, ja itse projekti on tarkoitus julkaista toisella lisenssillä (hyväksynyt: TAI JOS lisenssi Apache 2.0Eikä OpenLDAP Foundation).
  • Erottaminen välttää mahdolliset sekaannukset, lisää varmuutta ja varmistaa, että hankkeilla on itsenäinen etenemispolku.

MithrilDB, kuten MDBX, perustuu myös puu B+ ja siinä on myös erittäin korkea suorituskyky, samalla kun se eliminoi useita MDBX:n ja LMDB:n perustavanlaatuisia haittoja. Erityisesti "pitkien lukujen" ongelma poistuu, mikä ilmenee tietokannan "turpoamisena" johtuen siitä, että pitkät lukutapahtumat estävät roskien käsittelyn. Uusia MithrilDB-ominaisuuksia ovat:

  • tuki tietokannan sijoittamiselle useille heterogeenisille tietovälineille: HDD, SSD ja haihtumaton muisti.
  • optimaaliset strategiat "arvokkaille" ja "vähäarvoisille", "kuumille", "lämpimille" ja "kylmille" tiedoille.
  • Merkle-puun avulla tietokannan eheyden valvontaan.
  • valinnainen WAL:n käyttö ja huomattavasti parempi suorituskyky kirjoitusintensiivisissä skenaarioissa ja tietojen eheyden takuu.
  • Laiska tietojen kiinnitys levyille.

Lähde: linux.org.ru

Lisää kommentti