Bibliotekë libmdbx është një pasardhës i ridizajnuar ndjeshëm i LMDB - një bazë të dhënash me vlera kyçe të ngulitura kompakte me performancë jashtëzakonisht të lartë.
Versioni aktual v0.5 është një version teknik, që shënon përfundimin e çdo përmirësimi dhe kalimin në fazën e testimit dhe stabilizimit përfundimtar publik, me formimin e mëvonshëm të botimit të parë të plotë të bibliotekës.
LMDB është një DBMS e ngulitur transaksionale mjaft e njohur e klasës së vlerës-kyç bazuar në pema B+ pa prerje proaktive, i cili lejon një tufë procesesh shumëthreadësh të punojnë në mënyrë konkurruese dhe jashtëzakonisht efikase me një bazë të dhënash të përbashkët (jo rrjet) në nivel lokal. Nga ana tjetër, MDBX është më i shpejtë dhe më i besueshëm se LMDB, ndërsa libmdbx ruan të gjitha tiparet kryesore të paraardhësit të tij, si p.sh. ACID dhe lexim pa bllokim me shkallëzim linear nëpër bërthamat e CPU-së, dhe gjithashtu shton disa të reja.
Një përshkrim i ndryshimeve dhe përmirësimeve të libmdbx në lidhje me LMDB meriton një artikull të veçantë (është planifikuar të publikohet në Habré dhe Medium). Këtu është e përshtatshme të përmendim më të rëndësishmet dhe më të dukshmet:
- Në thelb, më shumë vëmendje i kushtohet cilësisë së kodit, testimit dhe kontrolleve automatike.
- Në mënyrë të konsiderueshme më shumë kontroll gjatë funksionimit, nga kontrolli i parametrave deri te auditimi i brendshëm i strukturave të bazës së të dhënave.
- Kompaktifikimi automatik dhe menaxhimi automatik i madhësisë së bazës së të dhënave.
- Një format i vetëm i bazës së të dhënave për asambletë 32-bit dhe 64-bit.
- Vlerësimi i vëllimit të mostrave sipas diapazoneve (vlerësimi i pyetjes së rangut).
- Mbështetje për çelësat dyfishin e madhësisë së petullave dhe madhësisë së faqes së bazës së të dhënave të përzgjedhur nga përdoruesi.
Kandidati i lëshuar i libmdbx është rezultat i vendimit (shih më poshtë) për të ndarë projektet MDBX dhe MithrilDB në gusht 2019. Duke vepruar kështu, libmdbx vendosi të eliminojë borxhin maksimal teknik (të arsyeshëm) dhe të stabilizojë bibliotekën. Në fakt, është bërë 2-3 herë më shumë punë në drejtimin e treguar sesa ishte parashikuar dhe planifikuar fillimisht:
- Mbështetje e zbatuar për Mac OS dhe platformat e nivelit të dytë: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Mbështetja për AIX dhe HP -UX mund të shtohet sipas nevojës.
- Kodi i dezinfektuar me Sanitizer të Sjelljes së Papërcaktuar dhe Sanitizer i Adresave, fiksoi të gjitha paralajmërimet e ndërtimit me -Wpedantic, të gjitha paralajmërimet e Coverity Static Analyzer, etj.
- Përditëso Përshkrimet API.
- Përzierja e kodit burimor për lehtësinë e futjes.
- Mbështetje CMake.
- Mbështetje për transaksionet e ndërlidhura.
- Përdorimi i bootidit për të përcaktuar nëse sistemi operativ është rindezur (fikja e ndyrë e bazës së të dhënave).
- Numërimi nga fundi në fund i faqeve të përditësuara/të vjetra dhe informacione të avancuara rreth transaksioneve.
- Opsioni MDBX_ACCEDE për t'u lidhur me një bazë të dhënash tashmë të hapur në modalitetin e përputhshëm.
- Përdorim Flokët OFD sipas disponueshmërisë së tyre.
- Rezervimi i nxehtë në tub.
- Algoritmi i specializuar i optimizuar i renditjes së brendshme (deri në 2-3 herë më i shpejtë se qsort() dhe deri në 30% më i shpejtë se std::sort()).
- Rritja e gjatësisë maksimale të çelësit.
- Kontroll automatik i leximit përpara (strategjia e ruajtjes së skedarëve të bazës së të dhënave në memorie).
- Kompaktizimi automatik më agresiv dhe më i shpejtë.
- Një 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 prishjen e bazës së të dhënave për shkak të keqpërdorimit.
- Komplet testimi i zgjeruar.
Zhvillimi i versionit "tjetër" të libmdbx do të vazhdojë si një projekt i veçantë MithrilDB, ndërsa vektori i zhvillimit të versionit "aktual" të MDBX ka për qëllim ngrirjen dhe stabilizimin e grupit të veçorive. Ky vendim është marrë për tre arsye:
- Papajtueshmëri totale: MithrilDB kërkon një format skedari të ndryshëm (të papajtueshëm) të bazës së të dhënave dhe një API të ndryshme (të papajtueshme) për të zbatuar të gjitha veçoritë e planifikuara.
- Kodi i ri burimor: Kodi burimor i MithrilDB është i pavarur nga licenca LMDB, dhe vetë projekti është planifikuar të publikohet nën një licencë tjetër (miratuar nga OSE NESE liçensë Apache 2.0Dhe jo Fondacioni OpenLDAP).
- Ndarja shmang konfuzionin e mundshëm, sjell më shumë siguri dhe siguron pavarësinë e rrugës së zhvillimit të projekteve.
MithrilDB, si MDBX, bazohet gjithashtu në pema B+ dhe gjithashtu do të karakterizohet nga performanca jashtëzakonisht e lartë, duke eliminuar një sërë mangësish themelore të MDBX dhe LMDB. Në veçanti, do të eliminohet problemi i "leximeve të gjata", i cili manifestohet si "ënjtje" e bazës së të dhënave për faktin se përpunimi i plehrave bllokohet nga transaksionet e leximit të gjatë. Karakteristikat e reja të MithrilDB përfshijnë:
- mbështetje për vendosjen e bazës së të dhënave në disa media heterogjene: HDD, SSD dhe memorie jo të paqëndrueshme.
- strategjitë optimale për të dhëna "të vlefshme" dhe "me vlerë të ulët", për të dhëna "të nxehta", "të ngrohta" dhe "të ftohta".
- duke përdorur pemën Merkle për të kontrolluar integritetin e bazës së të dhënave.
- përdorimi opsional i WAL dhe performanca dukshëm më e mirë në skenarët me intensitet të shkruar me garanci për integritetin e të dhënave.
- dembel catch-up angazhohet në disqe.
Burimi: linux.org.ru
