Teine kandidaat libmdbx v1.0 väljaandmiseks pärast viit aastat arendust.

Raamatukogu libmdbx on oluliselt ümber töötatud LMDB järeltulija — äärmiselt kõrge jõudlusega, kompaktne sisseehitatud võtme-väärtuse andmebaas.
Praegune versioon v0.5 on tehniline väljaanne, mis tähistab kõigi täienduste lõpetamist ja üleminekut avaliku lõppkatsetamise ja stabiliseerimise faasi, millele järgneb esimese täieliku väljaande koostamine.

LMDB on üsna tuntud tehingute sisseehitatud andmebaas, mis põhineb B+ puul ilma eelregistreerimise logimisega, mis võimaldab mitme lõime protsessidel konkurentsiti ja äärmiselt tõhusalt töötada kohaliku jagatud (mitte võrgustiku) andmebaasiga. Samuti on MDBX kiirem ja usaldusväärsem kui LMDB, säilitades samas kõik oma esivanema võtmeomadused, nagu ACID ja blokeerimata lugemine koos lineaarse skaleerimise CPU tuumade järgi, ning lisab mitu uut.

libmdbx erinevuste ja täiustuste kirjeldus LMDB-ga võrreldes väärib eraldi artiklit (plaaneeritakse avaldamist 'Habr'e' ja 'Medium'is). Siin on kohane mainida kõige olulisemaid ja silmapaistvamaid:

  • Oluliselt rohkem tähelepanu pööratakse koodi kvaliteedile, testimisele ja automaatsetele kontrollidele.
  • Oluliselt rohkem kontrolli töö käigus, alustades parameetrite kontrollimisest kuni andmebaasi struktuuride sisemiste audititeni.
  • Automaatne kompaktimine ja automaatne andmebaasi suuruse haldamine.
  • Üksne andmebaasi formaat 32-bitiste ja 64-bitiste kogumite jaoks.
  • Küsimuste mahtude hindamine vahemike põhjal (vahemiku pärimise hindamine).
  • Toetab võtmeid, mille suurus on kahekordne ja kasutaja määratud andmebaasi lehekülje suurus.

Välja antud libmdbx kandidaatversioon on tulemuseks otsusele (vt allpool) eraldada MDBX ja MithrilDB projektid augustis 2019. Sellega seoses otsustati libmdbx-s kõrvaldada (mõistlik) maksimaalne tehniline võlg ja stabiliseerida teeki. Tegelikult on eelnevas suunas tehtud 2-3 korda rohkem, kui algselt hinnati ja plaaniti:

  • On rakendatud Mac OS ja teise astme platvormide toetamine: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX ja HP-UX toetust võib vajadusel lisada.
  • Koodi sanitiseerimine on läbi viidud Undefined Behavior Sanitizeri ja Address Sanitizeri abil, kõik hoiatused, mis tekkisid kogumisel -Wpedantic'i seadistusega, on kõrvaldatud, samuti kõik hoiatused Coverity Static Analyzer'ilt jne.
  • Aktualiseerimine API kirjeldus.
  • Algkoodi amalgameerimine mugavuse huvides integreerimiseks.
  • CMake tugi.
  • Sisseehitatud tehingute tugi.
  • Bootid'i kasutamine operatsioonisüsteemi taaskäivitamise fakti määratlemiseks (andmebaasi 'räpane' seiskamine).
  • Uuendatud/vanade lehtede läbimõeldud arvestus ja laiem teave tehingute kohta.
  • MDBX_ACCEDE optsioon avatud andmebaasi ühendamiseks ühilduvas režiimis.
  • Kasutamine OFD-blokeeringud kui need on saadaval.
  • Kuum varukoopia pipe'i kaudu.
  • Spetsialiseeritud optimeeritud algoritm sisemisele sorteerimisele (kuni 2-3 korda kiirem kui qsort() ja kuni 30% kiirem kui std::sort()).
  • Maksimaalne võtme pikkus on suurenenud.
  • Automaatne read ahead juhtimine (andmebaasi faili mälu vahemälu strateegia).
  • Agresiivsem ja kiirem automaatne kompaktimine.
  • Optimiseeritud B+ puu lehtede sulandamise strateegia.
  • Kontroll mitte-lokaalsete failisüsteemide (NFS, Samba jne) üle, et vältida andmebaasi kahjustamist vale kasutamise korral.
  • Testide komplekt on laiendatud.

«Järgmise» versiooni libmdbx arendamine jätkub eraldi projekti raames MithrilDB, samal ajal kui „praeguse“ MDBX versiooni arenduste suund on võimaluste komplekti külmutamine ja stabiliseerimine. See otsus on tehtud kolme põhjuse tõttu:

  • Täielik ühilduvus: kõikide MithrilDB plaanitud võimaluste rakendamiseks on vajalik teine (ühilduvusetu) andmebaasi failide formaat ja teine (ühilduvusetu) API.
  • Uus algkood: MithrilDB algkood on tagatud litsentsi iseseisvuse kaudu LMDB-st, ning projekt on kavas avaldada teistsuguse litsentsi (heakskiidetud OSI litsents Apache 2.0, mitte OpenLDAP Foundation).
  • Eraldamine võimaldab vältida potentsiaalset segadust, tuua selgust ja tagada projektide arenguteed sõltumatuse.

MithrilDB, nagu MDBX, tugineb samuti B+ puule ja on samuti äärmiselt kõrge jõudlusega, kõrvaldadest samas rida põhilisi puudusi MDBX ja LMDB. Eriti kõrvaldatakse probleem „pikkadest lugemistest“, mis avaldub andmebaasi „paisumise“ kaudu, kuna prügikäitlemine on blokeeritud pikkade lugemisettevõtetega. Uute võimaluste seas tuleks MithrilDB puhul esile tuua:

  • toetada andmebaasi majutust mitmes erinevas andmekandjas: HDD, SSD ja energiat mitte sõltuv mälu.
  • optimaalsed strateegiad «väärtuslike» ja «väheväärtuslike», «kuumade», «soe» ja «külmade» andmete jaoks.
  • Merkle puu kasutamine andmebaasi terviklikkuse kontrollimiseks.
  • valikuline WAL kasutamine ja oluliselt kõrgem tootlikkus intensiivsete kirjutamisskenaaride puhul koos andmete terviklikkuse garantii.
  • laisk järele jõudmine andmete fikseerimisel kettale.

Allikas: linux.org.ru

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster