Kandidati i dytë për lëshimet libmdbx v1.0 pas pesë vjet zhvillimi.

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

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster