Pas pesë vitesh zhvillimi, është publikuar kandidati i dytë i lëshimit të libmdbx 1.0

Në dispozicion për testimin e kandidatit të dytë për botime të bibliotekës libmdbx me zbatimin e një baze të dhënash me vlera kyçe dhe kompakte me performancë të lartë. Versioni aktual (0.5) është një version teknik, shënon përfundimin e çdo përmirësimi dhe kalimin në fazën e testimit përfundimtar publik dhe stabilizimit, me formimin e mëvonshëm të botimit të parë të plotë të bibliotekës. kodi libmdbx shperndare nga licencuar sipas licencës publike OpenLDAP.

Biblioteka MDBX është një pirun i rishikuar ndjeshëm nga LMDB — DBMS e integruar transaksionale e klasës "kyç-vlerë" bazuar në pema B+ pa prerje proaktive, i cili lejon që proceset me shumë fije të punojnë në mënyrë konkurruese dhe 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, dhe në të njëjtën kohë ruan të gjitha tiparet kryesore të paraardhësve të tij, si p.sh. ACID dhe leximet pa bllokim me shkallëzim linear nëpër bërthamat e CPU.

Dallimet më të rëndësishme midis MDBX dhe LMDB:

  • 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ëllimeve të mostrës 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ëshimit të libmdbx është rezultat i një vendimi të marrë në gusht 2019 për të ndarë projektet MDBX dhe MithrilDB. Në të njëjtën kohë, libmdbx vendosi të eliminojë borxhin maksimal teknik (racional) dhe të stabilizojë bibliotekën. Në fakt, është bërë 2-3 herë më shumë në drejtimin e caktuar nga sa ishte parashikuar dhe planifikuar fillimisht:

  • Mbështetja për macOS dhe platformat e nivelit të dytë është zbatuar: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Mbështetja AIX dhe HP-UX mund të shtohet sipas nevojës.
  • Kodi u dezinfektua duke përdorur Sanitizerin e Sjelljes së Papërcaktuar dhe Sanituesin e Adresave, të gjitha paralajmërimet gjatë ndërtimit me "-Wpedantic", të gjitha paralajmërimet e Coverity Static Analyzer, etj. u eliminuan.
  • Përditëso Përshkrimet API.
  • Bashkimi (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 informacioni i zgjeruar i transaksionit.
  • 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.
  • Algoritëm 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 dëmtimin e bazës së të dhënave nëse përdoret gabim.
  • 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 Licenca Apache 2.0, jo Licenca publike OpenLDAP).
  • Ndarja shmang konfuzionin e mundshëm, sjell më shumë siguri dhe siguron një rrugë të pavarur për projektet.

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".
  • Përdorimi i pemës Merkle për të monitoruar integritetin e bazës së të dhënave.
  • Përdorimi opsional i WAL dhe performanca e përmirësuar ndjeshëm në skenarët me intensitet të shkrimit me garanci për integritetin e të dhënave.
  • Lazy catch-up duke kryer të dhëna në disqe.

Burimi: opennet.ru

Shto një koment