Lëshimi i sistemit të menaxhimit të të dhënave me performancë të lartë libmdbx 0.10.4 dhe libfpta 0.3.9.

Lëshimi i librarive libmdbx 0.10.4 (MDBX) me implementimin e një database të integruar me performancë të lartë dhe e tipit çelës-vlerë, dhe librarisë përkatëse libfpta 0.3.9 (FPTA), e cila ofron një pamje tabelore të të dhënave mbi MDBX me indekse të dyfishta dhe përbërëse. Të dy libraritë shpërndahen nën licencat e miratuara nga OSI. Mbështeten të gjitha sistemet operative dhe arkitekturat aktuale, si dhe Elbrusi rus 2000.

Historikisht, libmdbx është një ripërpunim i thellë i DBMS LMDB dhe e tejkalon paraardhësin e saj në besueshmëri, gamë funksionesh dhe performancë. Krahasuar me LMDB, libmdbx vihet në dukje për cilësinë e kodit, funksionimin e qëndrueshëm të API-së, testimin dhe verifikimet automatike. Ofron një utilitar për kontrollin e integritetit të strukturës së DB me disa mundësi rikuperimi.

Në aspektin teknologjik, libmdbx ofron ACID, serializim të rreptë të ndryshimeve dhe lexim pa bllokim me shkallëzim linear për bërthamët e CPU-së. Mbështetet automatikisht kompaktifikimi, menaxhimi automatik i madhësisë së DB, dhe vlerësimi i sasisë së mostrave sipas intervaleve (range query estimation). Që nga viti 2016, projektet mbështeten nga kompania Positive Technologies dhe nga viti 2017 përdoren në produktet e saj.

Për libmdbx ofrohet një API C++, si dhe lidhje të mbështetura nga entuziastët për gjuhët Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. Për libfpta, përshkrimi i API është në dispozicion publik vetëm si një skedar titulli C/C++.

Përmirësimet, rregullimet dhe ndryshimet kryesore, të shtuara pas lajmit të fundit më 9 maj:

  • Sigurohet mundĂ«sia e ndĂ«rtimit tĂ« ripĂ«rsĂ«ritshĂ«m.
  • U eliminua njĂ« gabim, pĂ«r shkak tĂ« tĂ« cilit nĂ« rrethana shumĂ« tĂ« rralla gjatĂ« fikjes sĂ« njĂ« transaksioni mund tĂ« ndodhte bllokim. Problemi u identifikua nga specialistĂ«t e Positive Technologies gjatĂ« testimit tĂ« brendshĂ«m tĂ« produkteve tĂ« tyre.
  • Testet janĂ« pĂ«rmirĂ«suar dhe skenarĂ«t e testimit janĂ« zgjeruar pĂ«r tĂ« kontrolluar tĂ« gjitha gjendjet jo izomorfike tĂ« arrave tĂ« faqes dhe pĂ«rmbajtjes GC brenda DB.
  • NĂ« API C++ Ă«shtĂ« korrigjuar njĂ« ‘noexcept’ tĂ« panevojshme, janĂ« shtuar ngarkesa tĂ« tjera pĂ«r metodĂ«n ‘cursor::erase()’, zgjidhja e bufreve Ă«shtĂ« eliminuar nga pĂ«rdorimi i ‘std::string’ pĂ«r tĂ« siguruar pĂ«rputhshmĂ«rinĂ« (e rĂ«ndĂ«sishme pĂ«r CLANG libstdc++).
  • NjĂ« regresion nĂ« algoritmin e spilingut tĂ« faqeve tĂ« ndotura (zhbllokimi selektiv i faqeve tĂ« ndryshuara tĂ« DB) Ă«shtĂ« eliminuar, duke u shfaqur si njĂ« gabim tĂ« papritur MDBX_PROBLEM gjatĂ« ndryshimit tĂ« tĂ« dhĂ«nave nĂ« transaksione tĂ« mĂ«dha.
  • U bĂ« njĂ« verifikim fazing me shtimin e disa kontrolleve pĂ«r tĂ« siguruar stabilitetin gjatĂ« dĂ«mtimit tĂ« qĂ«llimtĂ« tĂ« DB.
  • U eliminuan paralajmĂ«rimet e vogla tĂ« UndefinedBehaviorSanitizer dhe Problemeve nga Coverity Scan.
  • U korrigjua kontrolli i njĂ« flamuri tĂ« brendshĂ«m tĂ« vjetruar dhe qĂ« nuk ishte mĂ« nĂ« pĂ«rdorim ‘P_DIRTY’ nĂ« faqet e brendshme tĂ« imazheve tĂ« DB tĂ« krijuara nga versionet e vjetra tĂ« librarisĂ«.
  • NĂ« skripte CMake, Ă«shtĂ« pĂ«rmirĂ«suar kĂ«rkimi i komponentĂ«ve tĂ« kompilatorit tĂ« nevojshĂ«m pĂ«r LTO (optimizimi nĂ« kohĂ«n e lidhjes).
  • Numri maksimal i lexuesve tĂ« njĂ«kohshĂ«m Ă«shtĂ« rritur nĂ« 32767.
  • Puna Ă«shtĂ« pĂ«rshpejtuar gjatĂ« pĂ«rdorimit tĂ« Valgrind dhe AddressSanitizer.
  • NĂ« Windows, Ă«shtĂ« eliminuar pĂ«rdorimi rekursiv tĂ« SRW-lock gjatĂ« funksionimit nĂ« modalitetin MDBX_NOTLS (pa pĂ«rdorimin e ruajtjes sĂ« thread-eve lokale), Ă«shtĂ« korrigjuar gjenerimi i bootid nĂ« rast tĂ« ndryshimit tĂ« kohĂ«s sistemike, Ă«shtĂ« pĂ«rmirĂ«suar identifikimi i WSL1 dhe WSL2, dhe Ă«shtĂ« shtuar mundĂ«sia e hapjes sĂ« DB tĂ« montuar nĂ« Plan 9 pĂ«rmes DrvFS.
  • PĂ«rgjithĂ«sisht, janĂ« bĂ«rĂ« mĂ« shumĂ« se 160 ndryshime nĂ« 57 skedarĂ«, janĂ« shtuar rreth 5000 rreshta, dhe janĂ« fshirĂ« rreth 2500.

Veçanërisht dëshiroj të falenderoj ekipin e projektit Erigon (ekonomia Ethereum) për ndihmën në testimin në skenarë ekstreme të përdorimit. Të dhënat tregojnë se në pesë muajt që nga lëshimi i libmdbx v0.10.0, me një volum DB prej 1-2 TB në çdo instalim Erigon (përdoret në 7% të nyjeve të Ethereum), ka pasur vetëm tre raporte për dëmtimin e DB, të gjithë për shkak të arsyeve të jashtme dhe jo gabimeve të softuerit: në dy raste shkaku ishte gabimi i RAM-it, dhe në rastin e tretë gabimi i zerimit të të dhënave në një konfigurim specifik të nënndërmarrjes së ruajtjes me përdorimin e BTRFS.

Burimi: opennet.ru

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