Viiden vuoden kehitystyön jälkeen toinen libmdbx 1.0 -julkaisuehdokas on julkaistu

Saatavilla toisen ehdokkaan testaamiseen kirjaston julkaisuihin libmdbx tehokkaan, kompaktin sulautetun avainarvotietokannan avulla. Nykyinen versio (0.5) on tekninen versio, joka merkitsee parannusten valmistumista ja siirtymistä julkisen lopullisen testauksen ja vakautuksen vaiheeseen, minkä jälkeen kirjaston ensimmäinen täysi julkaisu muodostuu. libmdbx-koodi jakelija lisensoitu OpenLDAP Public License -lisenssillä.

MDBX-kirjasto on huomattavasti uudistettu haarukka LMDB — "avainarvo"-luokan sulautettu DBMS, joka perustuu puu B+ без ennakoiva kirjaus, jonka avulla monisäikeiset prosessit voivat toimia kilpailukykyisesti ja tehokkaasti paikallisesti jaetun (ei verkko) tietokannan kanssa. MDBX puolestaan ​​on nopeampi ja luotettavampi kuin LMDB, ja samalla säilyttää kaikki esi-isänsä keskeiset ominaisuudet, kuten ACID ja estävät lukemat lineaarisella skaalauksella prosessoriytimien välillä.

Tärkeimmät erot MDBX:n ja LMDB:n välillä:

  • 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.
  • Näytemäärien estimointi alueittain (aluekyselyn estimointi).
  • Tuki kaksi kertaa pannukakkua suuremmille avaimille ja käyttäjän valittavissa olevalle tietokantasivulle.

Libmdbx-julkaisuehdokas on seurausta elokuussa 2019 tehdystä päätöksestä erottaa MDBX- ja MithrilDB-projektit. Samaan aikaan 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 macOS: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 varoitukset "-Wpedanticilla" rakennettaessa, kaikki Coverity Static Analyzer -varoitukset jne. poistettiin.
  • Päivittää API-kuvaukset.
  • Lähdekoodin yhdistäminen (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 Apache 2.0 -lisenssi, ei OpenLDAP julkinen lisenssi).
  • Erottelu välttää mahdolliset sekaannukset, lisää varmuutta ja varmistaa itsenäisen polun projekteille.

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 "arvokkaalle" ja "vähän arvolle", "kuumille", "lämpimille" ja "kylmille" tiedoille.
  • Merkle-puun käyttäminen tietokannan eheyden valvontaan.
  • Valinnainen WAL:n käyttö ja merkittävästi parannettu suorituskyky vaativissa kirjoitusskenaarioissa tietojen eheystakuilla.
  • Laiska kiinniotto tietojen tallentamisessa levyille.

Lähde: opennet.ru

Lisää kommentti