për testimin e kandidatit të dytë për publikim të bibliotekës me zbatimin e një baze të dhënash të integrueshme, kompakte dhe me performancë të lartë të klasës çelës-vlerë. Versioni aktual (0.5) është një publikim teknik, që shënon përfundimin e çdo përpunimi të mëtejshëm dhe kalimin në fazën e testimit publik final dhe stabilizimit, me krijimin pasues të publikimit të parë të plotë të bibliotekës. Kodi i libmdbx nën licencën OpenLDAP Public License.
Biblioteka MDBX Ă«shtĂ« njĂ« degĂ«zim i ripunuar ndjeshĂ«m nga â njĂ« SGBD transaksionale e integrueshme e klasĂ«s «çelĂ«s-vlerë» e bazuar nĂ« pa , e cila u mundĂ«son proceseve shumĂ«fijĂ«she tĂ« punojnĂ« nĂ« mĂ«nyrĂ« konkurruese dhe efikase me njĂ« BD tĂ« ndarĂ« lokalisht (jo nĂ« rrjet). Nga ana tjetĂ«r, MDBX Ă«shtĂ« mĂ« e shpejtĂ« dhe mĂ« e besueshme se LMDB, duke ruajtur njĂ«kohĂ«sisht tĂ« gjitha mundĂ«sitĂ« kryesore tĂ« paraardhĂ«ses sĂ« saj, si p.sh. dhe lexim pa bllokim me shkallĂ«zim linear sipas bĂ«rthamave tĂ« CPU.
Dallimet më të rëndësishme të MDBX në krahasim me LMDB:
- 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 vëllimit të përzgjedhjeve sipas intervaleve (range query estimation).
- 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.
Kandidati për publikim i libmdbx i publikuar është rezultat i vendimit të marrë në gusht 2019 për ndarjen e projekteve MDBX dhe MithrilDB. Në të njëjtën kohë, në libmdbx u vendos të eliminohej maksimumi (i arsyeshëm) i borxhit teknik dhe të stabilizohej biblioteka. Në praktikë, në këtë drejtim është bërë 2-3 herë më shumë sesa ishte vlerësuar dhe planifikuar fillimisht:
- ĂshtĂ« zbatuar mbĂ«shtetja pĂ«r macOS dhe platformat «tĂ« nivelit tĂ« dytë»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. MbĂ«shtetja pĂ«r AIX dhe HP-UX mund tĂ« shtohet nĂ«se Ă«shtĂ« e nevojshme.
- ĂshtĂ« kryer pastrimi i kodit me ndihmĂ«n e Undefined Behavior Sanitizer dhe Address Sanitizer, janĂ« eliminuar tĂ« gjitha paralajmĂ«rimet gjatĂ« kompilimit me «-Wpedantic», tĂ« gjitha paralajmĂ«rimet e Coverity Static Analyzer, etj.
- Përditësimi i .
- Bashkimi (amalgamimi) i kodit burimor për lehtësi integrimi.
- 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ërim i plotë i faqeve të përditësuara/të vjetra dhe informacion i zgjeruar mbi transaksionet.
- Opsioni MDBX_ACCEDE për t'u lidhur me një BD tashmë të hapur në modalitet të përputhshëm.
- Përdorimi kur ato janë të disponueshme.
- Kopjim rezervë i nxehtë në pipe.
- Algoritëm i specializuar dhe i optimizuar i renditjes së brendshme (deri 2-3 herë më i shpejtë se «qsort()» dhe deri 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+.
- Kontroll i sistemeve të skedarëve jo lokale (NFS, Samba etj.) për të parandaluar dëmtimin e BD nga përdorimi i pasaktë.
- Ă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ë , 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 licenca Apache 2.0, dhe jo ).
- Ndarja lejon të shmanget konfuzioni i mundshëm, të sjellë më shumë qartësi dhe të sigurojë pavarësinë e rrugës së zhvillimit të projekteve.
MithrilDB, ashtu si MDBX, bazohet gjithashtu në 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 vendosjen e BD në disa media heterogjene: HDD, SSD dhe memorie jo të paqëndrueshme.
- Strategji optimale për të dhëna «me vlerë» dhe «me pak vlerë», si edhe për të dhëna «të nxehta», «të vakëta» dhe «të ftohta».
- Përdorimi i Merkle tree për kontrollin e integritetit të BD.
- Përdorim opsional i WAL dhe performancë dukshëm më e lartë në skenarët me shkrim intensiv, me garanci për integritetin e të dhënave.
- Ruajtje e vonuar e të dhënave në disqe.
Burimi: opennet.ru
