Biblioteka libmdbx është një pasardhës i përpunuar thellë i LMDB - një bazë të dhënash e integruar me performancë të lartë dhe kompakte në klasën çelës-vlerë.
Versioni aktual v0.5 është një lëshim teknik, shënon përfundimin e çdo rregullimi dhe kalimin në fazën e testimit publik përfundimtar dhe stabilizimit, me formimin e mëvonshëm të lëshimit të parë të plotë të bibliotekës.
LMDB është një sistem i njohur për menaxhimin e bazave të dhënash të integruara në klasën "çelës-vlerë" të bazuar në pemën B+ pa journalim paraprak, i cili lejon grupin e proceseve shumë-funksionale të punojë në mënyrë të konkurrueshme dhe tejet efikase me një bazë të dhënash që është ndarë lokal (jo rrjetore). Nga ana tjetër, MDBX është më i shpejtë dhe më i besueshëm se LMDB, ndërsa libmdbx ruan të gjitha funksionalitetet kyçe të paraardhësit të tij, siç janë ACID dhe leximi pa bllokim me shkallëzim linear sipas bërthamave CPU, si dhe shton disa të reja.
Përshkrimi i ndryshimeve dhe përmirësimeve të libmdbx në krahasim me LMDB meriton një artikull të veçantë (publikimi është planifikuar në "Habr" dhe "Medium"). Këtu është e rëndësishme të përmenden ato më të rëndësishmet dhe të dukshmet:
- I kushtohet dukshëm më shumë vëmendje cilësisë së kodit, testimit dhe kontrolleve automatike.
- Ka ndjeshëm më shumë kontroll gjatë funksionimit, duke nisur nga verifikimi i parametrave e deri te auditimi i brendshëm i strukturave të bazës së të dhënave.
- Auto-kompaktim dhe menaxhim automatik i madhësisë së BD-së.
- Format unik i BD-së për build-et 32-bit dhe 64-bit.
- Vlerësimi i volumit të zgjedhjeve sipas intervaleve (vlerësimi i pyetjeve për intervalet).
- Mbështetje për çelësa me gjatësi dy herë më të madhe dhe madhësi të faqes së BD-së të zgjedhshme nga përdoruesi.
Lëshimi i kandidatëve libmdbx është rezultat i vendimit (shih më poshtë) për ndarjen e projekteve MDBX dhe MithrilDB në gusht 2019. Këtu vendosëm të eliminojmë maksimumin (racional) të borxhit teknik dhe të stabilizojmë bibliotekën. Faktikisht, në këtë drejtim është arritur 2-3 herë më shumë se sa është vlerësuar dhe planifikuar fillimisht:
- Implementimi i mbështetjes për Mac OS dhe platformat "e katërt": FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Mbështetje për AIX dhe HP-UX mund të shtohet sipas nevojës.
- Sanitizimi i kodit me Undefined Behavior Sanitizer dhe Address Sanitizer, eliminimi i të gjitha paralajmërimeve gjatë ndërtimit me -Wpedantic, të gjitha paralajmërimet e Coverity Static Analyzer etj.
- Përditësimi i përshkrimit të API.
- Amalgamimi i kodit burimor për lehtësinë e integrimit.
- Mbështetje për CMake.
- Përkrahja e transaksioneve të ndërlidhura.
- Përdorimi i bootid për të përcaktuar faktin e rinisjes së OS (ndalimit jo të pastër të BD).
- Numërimi i vazhdueshëm i faqeve të azhurnuara / të vjetra dhe informacioni i zgjeruar për transaksionet.
- Opsioni MDBX_ACCEDE për t'u lidhur me një BD tashmë të hapur në modalitet të përputhshëm.
- Përdorimi bllokimeve OFD kur ato janë të disponueshme.
- Kopjim rezervë i nxehtë në pipe.
- Algoritmi i optimizuar i sortimit të brendshëm të specializuar (deri në 2-3 herë më i shpejtë se qsort() dhe deri në 30% më i shpejtë se std::sort()).
- ĂshtĂ« rritur gjatĂ«sia maksimale e çelĂ«sit.
- Menaxhim automatik i read ahead (strategjisë së cache-imit të skedarit të BD në memorie).
- Auto-kompaktim më agresiv dhe më i shpejtë.
- Strategji më optimale për bashkimin e faqeve të pemës B+.
- Kontrolli i sistemeve të skedarëve jo-lokal (NFS, Samba etj.) për të parandaluar dëmtimin e bazës së të dhënave nga përdorimi i gabuar.
- ĂshtĂ« zgjeruar grupi i testeve.
Zhvillimi i versionit «të ardhshëm» të libmdbx do të vazhdojë në kuadër të një projekti të veçantë MithrilDB, ndërsa drejtimi i zhvillimit të versionit «aktual» të MDBX synon ngrirjen e grupit të funksionaliteteve dhe stabilizimin. Ky vendim është marrë për tre arsye:
- Papajtueshmëri e plotë: për të zbatuar të gjitha funksionalitetet e planifikuara në MithrilDB kërkohet një format tjetër (i papajtueshëm) i skedarëve të BD dhe një API tjetër (i papajtueshëm).
- Kod burimor i ri: për kodin burimor të MithrilDB është siguruar pavarësi licencore nga LMDB, ndërsa vetë projekti planifikohet të publikohet me një licencë tjetër (të miratuar nga OSI licencës Apache 2.0, e jo Fondacioni OpenLDAP).
- Shqyrtimi ndihmon në evitimin e ngatërresave të mundshme, për të shtuar më shumë qartësi dhe për të siguruar pavarësi në zhvillimin e projekteve.
MithrilDB, ashtu si MDBX, bazohet gjithashtu në pemën B+ dhe gjithashtu do të dallohet për performancë jashtëzakonisht të lartë, duke eliminuar njëkohësisht disa mangësi thelbësore të MDBX dhe LMDB. Në veçanti, do të eliminohet problemi i «leximeve të gjata», që shfaqet si «fryrje» e BD sepse riciklimi i mbetjeve bllokohet nga transaksionet e leximit afatgjata. Ndër veçoritë e reja të MithrilDB duhen përmendur:
- mbështetje për hostimin e bazave të të dhënave në media të ndryshme: HDD, SSD dhe memorie jo-ndikuese.
- strategjitë optimale për të dhënat "e vlefshme" dhe "më pak të vlefshme", për të dhënat "e ngrohta", "të ngrohta" dhe "të ftohta".
- përdorimi i Merkle tree për kontrollin e integritetit të bazës së të dhënave.
- përdorimi opsional i WAL dhe produktivitet ndjeshëm më të lartë në skenarë me shkallëzim të lartë dhe garanci për integritetin e të dhënave.
- ruajtja e vonuar e të dhënave në disqe.
Burimi: linux.org.ru
