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
