Bókasafnið libmdbx er verulega endurhannað afkvæmi LMDB - einstaklega afkastamikils, þéttur innbyggður lykilgildagagnagrunnur.
Núverandi útgáfa v0.5 er tæknileg útgáfa, markar lok allra endurbóta og umskipti yfir í áfanga opinberrar lokaprófunar og stöðugleika, með síðari myndun fyrstu fullu útgáfu bókasafnsins.
LMDB er nokkuð vel þekkt viðskipti innbyggð lykilgildi DBMS byggt á tré B+ без fyrirbyggjandi skógarhögg, sem gerir hópi fjölþráðra ferla kleift að vinna samkeppnishæft og afar skilvirkt með staðbundnum (ekki net) gagnagrunni. Aftur á móti er MDBX hraðari og áreiðanlegri en LMDB á meðan libmdbx heldur öllum lykileiginleikum forföður síns, ss. ACID og óblokkandi lestur með línulegri mælikvarða yfir CPU kjarna, og bætir einnig við nokkrum nýjum.
Lýsing á mismun og endurbótum á libmdbx miðað við LMDB verðskuldar sérstaka grein (fyrirhugað að birta á Habré og Medium). Hér er rétt að nefna það mikilvægasta og áberandi:
- Í grundvallaratriðum er meiri athygli beint að gæðum kóðans, prófunum og sjálfvirkum athugunum.
- Verulega meira eftirlit meðan á rekstri stendur, allt frá því að athuga færibreytur til innri endurskoðunar á gagnagrunnsbyggingum.
- Sjálfvirk þétting og sjálfvirk stjórnun gagnagrunnsstærðar.
- Eitt gagnagrunnssnið fyrir 32-bita og 64-bita samsetningar.
- Mat á stærð úrtaks eftir sviðum (mat á sviðsfyrirspurn).
- Stuðningur við tvöfalt stærri lykla en pönnukökur og gagnagrunnssíðustærð sem notandi getur valið.
Útgáfuframbjóðandinn libmdbx er afleiðing ákvörðunar (sjá hér að neðan) um að aðskilja MDBX og MithrilDB verkefnin í ágúst 2019. Á sama tíma ákvað libmdbx að útrýma (skynsamlegri) hámarks tækniskuldum og koma á stöðugleika í bókasafninu. Reyndar hefur 2-3 sinnum meira verið gert í tiltekna átt en upphaflega var áætlað og áætlað:
- Stuðningur við Mac OS og annars stigs vettvang hefur verið innleiddur: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX og HP-UX stuðningi er hægt að bæta við eftir þörfum.
- Kóðinn var sótthreinsaður með því að nota Undefined Behavior Sanitizer og Address Sanitizer, allar viðvaranir þegar verið er að byggja með -Wpedantic, allar Coverity Static Analyzer viðvaranir osfrv.
- Uppfærsla API lýsingar.
- Sameining frumkóða til að auðvelda innsetningu.
- CMake stuðning.
- Stuðningur við hreiður viðskipti.
- Notkun bootid til að ákvarða hvort stýrikerfið hafi endurræst (óhreinn gagnagrunnsstöðvun).
- Talning frá enda til enda á uppfærðum/gamlum síðum og auknar færsluupplýsingar.
- Valkostur MDBX_ACCEDE fyrir tengingu við þegar opinn gagnagrunn í samhæfri stillingu.
- Nota OFD blokkun þegar í boði er.
- Heitt varabúnaður í pípu.
- Sérhæft fínstillt innra flokkunaralgrím (allt að 2-3 sinnum hraðar en qsort() og allt að 30% hraðar en std::sort()).
- Hámarkslengd lykla hefur verið aukin.
- Sjálfvirk stjórn á lestri á undan (skyndiminni gagnagrunnsskráa í minni).
- Árásargjarnari og hraðari sjálfvirk þétting.
- Ákjósanlegri aðferð til að sameina B+ trésíður.
- Stjórn á skráarkerfum sem ekki eru staðbundin (NFS, Samba o.s.frv.) til að koma í veg fyrir skemmdir á gagnagrunni ef þær eru notaðar á rangan hátt.
- Prófasettið hefur verið stækkað.
Þróun á „næstu“ útgáfu af libmdbx mun halda áfram sem sérstakt verkefni MithrilDB, en þróunarvektor „núverandi“ útgáfu af MDBX miðar að því að frysta eiginleikasettið og koma á stöðugleika í því. Þessi ákvörðun var tekin af þremur ástæðum:
- Algerlega ósamrýmanlegt: MithrilDB krefst annars (ósamrýmanlegs) gagnagrunnsskráarsniðs og annars (ósamrýmanlegs) API til að innleiða alla fyrirhugaða eiginleika.
- Nýr frumkóði: MithrilDB frumkóði hefur verið gerður óháður LMDB og verkefnið sjálft er fyrirhugað að birta undir öðru leyfi (samþykkt af EÐA EF leyfi Apache 2.0Og ekki OpenLDAP Foundation).
- Aðskilnaðurinn kemur í veg fyrir hugsanlegan rugling, veitir meiri vissu og tryggir að verkefni eigi sér sjálfstæða leið fram á við.
MithrilDB, eins og MDBX, er einnig byggt á tré B+ og mun einnig hafa afar mikil afköst, en útrýma ýmsum grundvallargöllum MDBX og LMDB. Sérstaklega verður eytt vandamálinu við „langa lestur“, sem lýsir sér sem „bólga“ í gagnagrunninum vegna þess að sorpvinnsla er læst með löngum lestri. Nýir MithrilDB eiginleikar innihalda:
- stuðningur við að setja gagnagrunninn á nokkra ólíka miðla: HDD, SSD og óstöðugt minni.
- bestu aðferðir fyrir „verðmæt“ og „lítil“ gögn fyrir „heit“, „heit“ og „kald“ gögn.
- nota Merkle tré til að fylgjast með gagnagrunnsheilleika.
- valfrjáls notkun WAL og umtalsvert meiri frammistöðu í skriffrekum atburðarásum og gagnaheilleikaábyrgð.
- Lat catch-up fixing gagna á diskum.
Heimild: linux.org.ru