Kandidati i dytë për lëshime libmdbx v1.0 pas pesë vitesh zhvillimi.

Biblioteka libmdbx është një pasardhës i përpunuar thellë i LMDB - një bazë të dhënash e integruar me performancë të lartë dhe kompakte në klasën ç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 publik përfundimtar dhe stabilizimit, me formimin e mëvonshëm të lëshimit të parë të plotë të bibliotekës.

LMDB është një sistem i njohur për menaxhimin e bazave të dhënash të integruara në klasën "çelës-vlerë" të bazuar në pemën B+ pa journalim paraprak, i cili lejon grupin e proceseve shumë-funksionale të punojë në mënyrë të konkurrueshme dhe tejet efikase me një bazë të dhënash që është ndarë lokal (jo rrjetore). Nga ana tjetër, MDBX është më i shpejtë dhe më i besueshëm se LMDB, ndërsa libmdbx ruan të gjitha funksionalitetet kyçe të paraardhësit të tij, siç janë ACID dhe leximi pa bllokim me shkallëzim linear sipas bërthamave CPU, si dhe shton disa të reja.

Përshkrimi i ndryshimeve dhe përmirësimeve të libmdbx në krahasim me LMDB meriton një artikull të veçantë (publikimi është planifikuar në "Habr" dhe "Medium"). Këtu është e rëndësishme të përmenden ato më të rëndësishmet dhe të dukshmet:

  • 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 volumit tĂ« zgjedhjeve sipas intervaleve (vlerĂ«simi i pyetjeve pĂ«r intervalet).
  • 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.

Lëshimi i kandidatëve libmdbx është rezultat i vendimit (shih më poshtë) për ndarjen e projekteve MDBX dhe MithrilDB në gusht 2019. Këtu vendosëm të eliminojmë maksimumin (racional) të borxhit teknik dhe të stabilizojmë bibliotekën. Faktikisht, në këtë drejtim është arritur 2-3 herë më shumë se sa është vlerësuar dhe planifikuar fillimisht:

  • Implementimi i mbĂ«shtetjes pĂ«r Mac OS dhe platformat "e katĂ«rt": FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. MbĂ«shtetje pĂ«r AIX dhe HP-UX mund tĂ« shtohet sipas nevojĂ«s.
  • Sanitizimi i kodit me Undefined Behavior Sanitizer dhe Address Sanitizer, eliminimi i tĂ« gjitha paralajmĂ«rimeve gjatĂ« ndĂ«rtimit me -Wpedantic, tĂ« gjitha paralajmĂ«rimet e Coverity Static Analyzer etj.
  • PĂ«rditĂ«simi i pĂ«rshkrimit tĂ« API.
  • Amalgamimi i kodit burimor pĂ«r lehtĂ«sinĂ« e integrimit.
  • 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Ă«rimi i vazhdueshĂ«m i faqeve tĂ« azhurnuara / tĂ« vjetra dhe informacioni i zgjeruar pĂ«r transaksionet.
  • Opsioni MDBX_ACCEDE pĂ«r t'u lidhur me njĂ« BD tashmĂ« tĂ« hapur nĂ« modalitet tĂ« pĂ«rputhshĂ«m.
  • PĂ«rdorimi bllokimeve OFD kur ato janĂ« tĂ« disponueshme.
  • Kopjim rezervĂ« i nxehtĂ« nĂ« pipe.
  • Algoritmi i optimizuar i sortimit tĂ« brendshĂ«m tĂ« specializuar (deri nĂ« 2-3 herĂ« mĂ« i shpejtĂ« se qsort() dhe deri nĂ« 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+.
  • Kontrolli i sistemeve tĂ« skedarĂ«ve jo-lokal (NFS, Samba etj.) pĂ«r tĂ« parandaluar dĂ«mtimin e bazĂ«s sĂ« tĂ« dhĂ«nave nga pĂ«rdorimi i gabuar.
  • Ë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ë MithrilDB, 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 OSI licencĂ«s Apache 2.0, e jo Fondacioni OpenLDAP).
  • Shqyrtimi ndihmon nĂ« evitimin e ngatĂ«rresave tĂ« mundshme, pĂ«r tĂ« shtuar mĂ« shumĂ« qartĂ«si dhe pĂ«r tĂ« siguruar pavarĂ«si nĂ« zhvillimin e projekteve.

MithrilDB, ashtu si MDBX, bazohet gjithashtu në pemën B+ 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 hostimin e bazave tĂ« tĂ« dhĂ«nave nĂ« media tĂ« ndryshme: HDD, SSD dhe memorie jo-ndikuese.
  • strategjitĂ« optimale pĂ«r tĂ« dhĂ«nat "e vlefshme" dhe "mĂ« pak tĂ« vlefshme", pĂ«r tĂ« dhĂ«nat "e ngrohta", "tĂ« ngrohta" dhe "tĂ« ftohta".
  • pĂ«rdorimi i Merkle tree pĂ«r kontrollin e integritetit tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave.
  • pĂ«rdorimi opsional i WAL dhe produktivitet ndjeshĂ«m mĂ« tĂ« lartĂ« nĂ« skenarĂ« me shkallĂ«zim tĂ« lartĂ« dhe garanci pĂ«r integritetin e tĂ« dhĂ«nave.
  • ruajtja e vonuar e tĂ« dhĂ«nave nĂ« disqe.

Burimi: linux.org.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster