Lëshimi i DBMS i integruar kompakt libmdbx 0.9.1

Liruar versioni i bibliotekës 0.9.1 libmdbx (MDBX) zbatimi i një baze të dhënash me vlera kyçe me performancë të lartë dhe kompakte. Kodi libmdbx shpërndahet me licencë Licenca publike OpenLDAP.

Versioni aktual është një kompromis midis synimit për të lëshuar një version të qëndrueshëm afatgjatë 1.0 me mbështetje të plotë C++ dhe hezitimit për të vonuar lëshimet për shkak të papërgatitjes për ngrirjen e API-së së re C++. Publikimi i paraqitur është rezultat i punës 9 mujore që synon stabilizimin e bibliotekës dhe përmirësimin e përdorshmërisë së saj, dhe gjithashtu përfshin një version paraprak C++ API.

Biblioteka libmdbx nuk është thjesht një "pirun", por një pasardhës i ridizajnuar rrënjësisht 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-rrjetore) në nivel lokal pa një proces të dedikuar serveri. libmdbx në thelb zgjerohet aftësitë e paraardhësve të tij, duke eliminuar ose zbutur njëkohësisht disavantazhet. Në të njëjtën kohë, sipas zhvilluesve, libmdbx është pak më i shpejtë dhe dukshëm më i besueshëm se LMDB.

sugjeron libmdbx ACID, serializimi i rreptë i ndryshimeve dhe leximi pa bllokim me shkallëzim linear nëpër bërthamat e CPU. Rezultatet e testimit të performancës (dërgimi i kërkesave paralele për lexim/kërkim në 1-2-4-8 tema në një CPU i7-4600U me 2 bërthama fizike në modalitetin HyperThread me 4 fije):

Lëshimi i DBMS i integruar kompakt libmdbx 0.9.1

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

  • Në thelb, më shumë vëmendje i kushtohet cilësisë së kodit, qëndrueshmërisë së API-së, 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 dy herë më të gjatë dhe madhësinë e faqes së bazës së të dhënave të përzgjedhur nga përdoruesi.
  • Një mjet për të kontrolluar integritetin e strukturës së bazës së të dhënave me disa aftësi rikuperimi.

Risitë dhe përmirësimet kryesore më pas lajmet e mëparshme me prezantimin e versionit 0.5 në janar 2020:

  • Është krijuar një sistem i hapur për mbështetje të menjëhershme dhe përgjigje ndaj pyetjeve. Grupi i telegramit.
  • Më shumë se një duzinë gabime dhe mangësi janë eliminuar (shih. ditari i ndryshimeve).
  • Shumë gabime shtypi dhe drejtshkrimore janë rregulluar dhe janë bërë përmirësime të shumta kozmetike.
  • Skenarët e testimit janë zgjeruar.
  • Mbështetje për iOS, Android, buildroot, musl, uClibc, WSL1 и verë.
  • Vështrimi paraprak i C++ API u publikua në një skedar me kokë.
  • Dokumentacion i integruar në formatin Doxygen dhe gjenerim automatik Dokumentacioni online.
  • Ofrohet gjenerimi automatik i arkivave me tekste burimore të bashkuara.
  • Mbështetje e shtuar për përgatitjen e transaksioneve dhe kursorëve, kontekstet e përdoruesve për transaksionet dhe kursorët.
  • Janë zbatuar metoda shtesë për të kontrolluar integritetin e referencës në fotografitë B+tree MVCC.
  • Mbështetje e shtuar për kontrollimin e një fotografie MVCC të bazës së të dhënave, e aksesueshme përmes çdo faqeje meta me aftësinë për të kaluar për rikuperim.
  • Mbështetje e zbatuar për rihapjen e bazës së të dhënave nga një proces për qëllime testimi, etj.
  • Zbatohet përpunimi automatik i opsionit MDBX_NOSUBDIR kur hapet një bazë të dhënash.
  • Funksione të shtuara për gjenerimin e çelësave të numrave të plotë nga vlerat e pikave lundruese dhe numrat "universalë" të JavaScript.
  • Në total, u bënë 430 ndryshime që prekin 93 skedarë, u shtuan më shumë se 25 mijë rreshta, u fshinë më shumë se 8.5 mijë rreshta.

Zhvillimi i mëvonshëm i libmdbx do të fokusohet në API-në përfundimtare të C++, stabilizimin e mëtejshëm të kodit bazë, përmirësimin e përdorshmërisë së bibliotekës dhe paketimin për shpërndarjet e njohura Linux. Ndër përmirësimet e propozuara, vlen të përmendet mbështetja për çelësat në format Paketa e Mesazheve.

Burimi: opennet.ru

Shto një koment