teise kandidaat on raamatukogu väljalaseteks testimiseks kõrge jõudlusega, kompaktse sisseehitatud võtme-väärtuse andmebaasi rakendamisega. Praegune versioon (0.5) on tehniline väljaanne, mis tähistab viimaste täiustuste lõpetamist ja üleminekut avaliku lõppkatse ja stabiliseerimise faasi, millele järgneb raamatukogu esimese täisversiooni moodustamine. Kood libmdbx OpenLDAP avaliku litsentsi all.
MDBX raamatukogu on oluliselt ümber töötatud haru — tehingupsüsteem, mis on sisseehitatud võtme-väärtuse andmebaasis, põhinedes ilma , mis võimaldab mitme lõimega protsessidel konkureerivalt ja tõhusalt töötada kohalikult jagatud (mitte võrgu) andmebaasiga. Samas on MDBX kiiremad ja usaldusväärsemad kui LMDB, säilitades samas kõik oma esivanema võtmeomadused, nagu ja mittetakistav lugemine koos lineaarse skaleerimisega CPU tuumade järgi.
Olulised erinevused MDBX-i ja LMDB vahel:
- 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 osas on vahemiku päringute hindamine.
- Toetab võtmeid, mille suurus on kahekordne ja kasutaja määratud andmebaasi lehekülje suurus.
Välja antud libmdbx kandidaat on 2019. aasta augustis tehtud otsuse tulemus MDBX ja MithrilDB projektide eraldamiseks. Samuti otsustati libmdbx-s kõrvaldada (ratsionaalne) maksimaalne tehniline võlg ja stabiilsus raamatukogus. Tegelikult on antud suunas tehtud 2-3 korda rohkem, kui esialgu hinnati ja plaaniti:
- MacOS-i ja teise etapi platvormide toetamine: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX-i ja HP-UX-i tugi võib vajadusel lisanduda.
- Koodi sanatsioon Undefined Behavior Sanitizer ja Address Sanitizer abil, kõik hoiatused on kõrvaldatud koos "-Wpedantic"-ga ehitamisel, kõik Coverity Static Analyzer hoiatused jne.
- Aktualiseerimine .
- Algse koodi liitmine (amalgameerimine) mugavuse tagamiseks.
- CMake tugi.
- Sisseehitatud tehingute tugi.
- Bootid'i kasutamine operatsioonisüsteemi taaskäivitamise fakti määratlemiseks (andmebaasi 'räpane' seiskamine).
- Uuendatud/vanade lehtede koguarv ja ulatuslik teave tehingute kohta.
- MDBX_ACCEDE optsioon avatud andmebaasi ühendamiseks ühilduvas režiimis.
- Kasutamine kui need on saadaval.
- Kuum varukoopia pipe'i kaudu.
- Spetsialiseeritud optimeeritud sisemine sortimisalgoritm (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.
- Kohandatud mitte-lokaalsete failisüsteemide (NFS, Samba jne) kontroll andmebaasi kahjustumise vältimiseks vale kasutamise korral.
- Testide komplekt on laiendatud.
«Järgmise» versiooni libmdbx arendamine jätkub eraldi projekti raames , 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 litsentsiga Apache 2.0, mitte ).
- Eraldamine aitab vältida potentsiaalset segadust, toob rohkem selgust ja tagab projektide arengu tee sõltumatuse.
MithrilDB, nagu MDBX, tugineb samuti 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:
- Toetatakse andmebaasi paigutamist mitmele erinevale kandjale: HDD, SSD ja püsimälu.
- Optimaalsed strateegiad "väärtuslike" ja "väheväärtuslike", "soojade", "jahedate" ja "külmade" andmete jaoks.
- Merkle puu kasutamine andmebaasi terviklikkuse kontrollimiseks.
- Valikuline WAL kasutamine ja oluliselt kõrgem jõudlus intensiivse kirjutamise stsenaariumides koos andmete terviklikkuse garantiidega.
- Laisk andmete kinnitamine ketastele.
Allikas: opennet.ru
