Biblioteka libmdbx Ă«shtĂ« njĂ« pasardhĂ«s i rishikuar ndjeshĂ«m i LMDB â njĂ« bazĂ« tĂ« dhĂ«nash tĂ« integruar me performancĂ« tĂ« lartĂ« dhe kompakte tĂ« klasĂ«s ç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 dhe stabilizimit publik, me formimin e mëpasshëm të lëshimit të parë të plotë të bibliotekës.
LMDB është një sistem i njohur të dhënash të integruar me transaksione të klasës «çelës-vlerë» të bazuar në pemën B+ pa dhe regjistrimin e parandalimit, i cili lejon që një grup procesesh të shumëfishta të punojnë në mënyrë konkurente dhe mjaft efektive me një bazë të dhënash që ndahen lokalisht (jo në rrjet). Nga ana tjetër, MDBX është më i shpejtë dhe më i besueshëm se LMDB, ndërkohë që libmdbx ruan të gjitha mundësitë kyçe të paraardhësit të tij, si ACID dhe leximi pa bllokim me shtrirje të drejtpërdrejtë në bërthamat e CPU-së, si dhe shton disa të reja.
Përshkrimi i ndryshimeve dhe përmirësimeve të libmdbx krahas LMDB meriton një artikull të veçantë (publikimi është i planifikuar në «Habr» dhe «Medium»). Këtu është e përshtatshme të përmenden më të rëndësishmet dhe më të dukshme:
- Dhe më shumë vëmendje i është kushtuar cilësisë së kodit, testimit dhe verifikimeve automatike.
- Kontrolli është dukshëm më i madh gjatë punës, duke filluar nga verifikimi 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ë DB.
- Formati i vetëm i DB për përmbledhjet 32-bit dhe 64-bit.
- Vlerësimi i volumit të mostrave sipas intervaleve (vlerësimi i pyetjeve të gamës).
- Mbështetje për çelësa me dy herë më shumë për blina dhe madhësinë e DB të zgjedhur nga përdoruesi.
Kandidati i lëshuar për versionin libmdbx është rezultat i vendimit (shih më poshtë) për të ndarë projektet MDBX dhe MithrilDB në gusht 2019. Në këtë rast, në libmdbx u vendos që të eliminohej (racionalisht) maksimumi i detyrës teknike dhe të stabilizohej biblioteka. Në fakt, në drejtimin e përmendur është bërë 2-3 herë më shumë se sa ishte vlerësuar dhe planifikuar fillimisht:
- ĂshtĂ« realizuar mbĂ«shtetje 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 nĂ«se Ă«shtĂ« e nevojshme.
- ĂshtĂ« bĂ«rĂ« sanimi i kodit me ndihmĂ«n e Undefined Behavior Sanitizer dhe Address Sanitizer, janĂ« eliminuar tĂ« gjitha paralajmĂ«rimet gjatĂ« ndĂ«rtimit me -Wpedantic, tĂ« gjitha paralajmĂ«rimet e Coverity Static Analyzer, etj.
- Aktualizimi i përshkrimit të API.
- Amalgamimi i kodit burimor për lehtësi integrimi.
- Mbështetje CMake.
- Mbështetje për transaksione të thelluara.
- Përdorimi i bootid për të përcaktuar faktin e rilindjes së OS (ndërprerje të papritur të DB).
- Numërimi i vazhdueshëm i faqeve të rinovuara/20 dhe informacione të zgjeruara mbi transaksionet.
- Mundësia MDBX_ACCEDE për lidhje me një DB të hapur tashmë në modalitetin e përputhshmërisë.
- Përdorimi OFD-bllokimet kur janë të aksesueshme.
- Kopje rezervë të nxehtë në pipe.
- Algoritmi i specializuar i optimizuar për renditje të brendshme (deri në 2-3 herë më i shpejtë se qsort() dhe deri në 30% më i shpejtë se std::sort()).
- Rritja e gjatësi maksimale të çelësit.
- Menaxhimi automatik i leximeve përpara (strategjia e memorizimit të skedarit DB në memorie).
- Kompaktifikimi automatik 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 DB në rast përdorimi të gabuar.
- Shtuar grupi i testeve.
Zhvillimi i versionit të "në vijim" 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 është orientuar drejt ngrirjes së grupit të mundësive dhe stabilizimit. Ky vendim është marrë për tre arsye:
- Përshtatshmëri e plotë e papërputhshme: për të realizuar të gjitha mundësitë e planifikuara në MithrilDB kërkohet një format tjetër skedarësh DB (i papërputhshëm) dhe një API tjetër (i papërputhshëm).
- Kodi i ri burimor: për kodin burimor të MithrilDB është garantuar pavarësia licencore nga LMDB dhe projekti vetë planifikohet të publikohet nën një licencë tjetër (të miratuar nga OSI licenca Apache 2.0, jo OpenLDAP Foundation).
- Pjesëtimi lejon shmangien e ngatërresave të mundshme, të sqarojë më shumë dhe të garantojë pavarësinë e rrugës së zhvillimit të projekteve.
MithrilDB ashtu si MDBX, gjithashtu bazohet nĂ« pemĂ«n B+ dhe gjithashtu do tĂ« ketĂ« njĂ« performancĂ« maksimale tĂ« lartĂ«, ndĂ«rsa do tĂ« eliminojĂ« njĂ« sĂ«rĂ« tĂ« meta thelbĂ«sore tĂ« MDBX dhe LMDB. NĂ« veçanti, do tĂ« zgjidhet problemi i âleximeve tĂ« gjataâ, i cili manifeston si âshkarkimâ i DB-sĂ« pĂ«r shkak se pĂ«rpunimi i mbeturinave bllokohet nga transaksionet e gjatĂ« lexuese. NĂ« mesin e mundĂ«sive tĂ« reja tĂ« MithrilDB, duhet theksuar:
- mbështetje për vendosjen e DB-së në disa mediume të ndryshme: HDD, SSD dhe kujtesë të energjisë pa varësi.
- strategji optimale për 'të çmueshme' dhe 'të pakompuar', për 'të nxehta', 'të ngrohta' dhe 'të ftohta' të dhënash.
- përdorimi i Merkle tree për kontrollin e integritetit të DB-së.
- përdorimi opsional i WAL dhe një performancë ndjeshëm më e lartë në skenarët me shkrim intensiv dhe garanci për integritetin e të dhënave.
- regjistrimi i vonuar që ndjek të dhënat në disqe.
Burimi: linux.org.ru
