Lëshimi i bazës së të dhënave të integruar me performancë të lartë libmdbx 0.10

Pas tri muajsh zhvillimi, u lëshua biblioteka libmdbx 0.10.0 (MDBX) me implementimin e një baze të dhënash të integruar e të kompaktes, klasë çelës-vlerë me performancë të lartë. Kodi libmdbx shpërndahet nën licencën OpenLDAP Public License. libmdbx është një ripunim i thellë i DBMS LMDB dhe sipas zhvilluesve e kalon paraardhësin e tij në besueshmëri, setin e mundësive dhe performancë. Raportohet se libmdbx është deri në 20% më i shpejtë se LMDB në skenarët CRUD dhe deri në 30% më i shpejtë, nëse gjatë ndërtimit të libmdbx kontrolli i brendshëm është i çaktivizuar në një nivel të krahasueshëm me atë të LMDB.

Libmdbx ofron ACID, serializim të rreptë të ndryshimeve dhe lexime jo-bllokuese me shkallëzim linear sipas bërthamave CPU. Në libmdbx, punohet shumë mbi cilësinë e kodit, stabilitetin e API, testimin dhe kontrollet automatike. Mbështetet kompaktifikimi automatik, menaxhimi automatik i madhësisë së DB, një format i vetëm DB për ndërtimet 32-bith dhe 64-bith, vlerësimi i volumit të mostrave sipas intervaleve (range query estimation). Ofrohet një utilitar për kontrollin e integritetit të strukturës së DB me disa mundësi rikuperimi. Që nga viti 2016, projekti financohet nga kompania Positive Technologies dhe që nga viti 2017 përdoret në produktet e saj, dhe sanksionet e vendosura nga qeveria e SHBA-së ndaj Positive Technologies nuk kanë ndonjë ndikim të dukshëm.

Pikat kryesore të reja, përmirësimeve dhe korrigjimeve të shtuar pas lëshimit të fundit:

  • JanĂ« nĂ« dispozicion lidhje pĂ«r Ruby nga Mahlon E. Smith dhe njĂ« version provues lidhjesh pĂ«r Python nga Noel Kuntze, janĂ« azhurnuar lidhjet pĂ«r GoLang nga Alexey ShĐ°Ń€ĐŸĐČ.
  • PĂ«r modin «MDBX_WRITEMAP», kur tĂ« dhĂ«nat e DB ndryshohen drejtpĂ«rdrejt nĂ« RAM, Ă«shtĂ« realizuar njĂ« «shkarkim transparent» nĂ« disk pĂ«r faqet e ndryshuara tĂ« DB. Tani, pas pĂ«rfundimit tĂ« çdo operacioni, kĂ«to faqe janĂ« menjĂ«herĂ« plotĂ«sisht tĂ« gatshme pĂ«r t'u shkruar nĂ« disk dhe bĂ«rthama e OS-sĂ« mund tĂ« rishkaktojĂ« vetĂ« faqet e ndryshuara nĂ« disk, dhe fiksa e transaksionit nuk do tĂ« kĂ«rkojĂ« modifikimin e tyre. Si rezultat, nĂ« skenarĂ«t e ngarkuar me mungesĂ« RAM-i, volumi i operacioneve nĂ« disk mund tĂ« reduktohet deri nĂ« 2 herĂ«.
  • Eshte realizuar zĂ«vendĂ«simi i kopjeve tĂ« errĂ«ta tĂ« faqeve tĂ« ndryshuara qĂ« nuk janĂ« pĂ«rdorur prej kohĂ«sh, me preferencĂ« pĂ«r zĂ«vendĂ«simin e faqeve me vlera tĂ« mĂ«dha/gjatĂ«sore, tĂ« cilat nĂ« shumicĂ«n e skenarĂ«ve modifikohen vetĂ«m njĂ« herĂ« pĂ«r transaksion. Si rezultat, reduktohet sasia e shkĂ«mbimit me diskun dhe rritet performanca nĂ« skenarĂ«t me transaksione shumĂ« tĂ« mĂ«dha.
  • ËshtĂ« realizuar njĂ« mod i «smart» pĂ«r ndarjen e faqeve gjatĂ« ekstraktimit tĂ« çelĂ«save. Tani, gjatĂ« ekstraktimit tĂ« sekuencave tĂ« renditura, sigurohet automatikisht mbushja e plotĂ« e faqeve, dhe nĂ« rastet e tjera njĂ« balancim mĂ« optimal tĂ« pemĂ«s. Si rezultat, nĂ« mesatare, pagesat e DB mbushen mĂ« optimalisht dhe B-pema Ă«shtĂ« mĂ« e balancuar, gjĂ« qĂ« ndikon pozitivisht nĂ« performancĂ«n.
  • Statistikat e operacioneve me faqe janĂ« shtuar, çka lejon vlerĂ«simin e saktĂ« tĂ« kostos sĂ« operacioneve modifikues me DB.
  • Shtuar mĂ« shumĂ« se njĂ«zet gabime dhe tĂ« metĂ«, pĂ«rfshirĂ«: zgjidhur problemet me ndĂ«rtimin pĂ«rmes MinGW, pĂ«rdorimin e `std::filesystem::path` nĂ« iOS <= 13.0, ndĂ«rtimi me targetim nĂ« versionet e vjetra tĂ« Windows etj.
  • NĂ« total janĂ« bĂ«rĂ« mĂ« shumĂ« se 200 ndryshime nĂ« 66 skedarĂ«, janĂ« shtuar ~6500 rreshta, janĂ« fshirĂ« ~4500.

Veçanërisht, dëshiroj të theksoj zgjedhjen e projektit Turbo-Geth (turbo-fork i Go-Ethereum) libmdbx si backend të ri për ruajtje, si dhe të falënderoj ekipin e projektit (sidomos Alexei Sharov, Artem Vorotnikov dhe Alexei Akhunov) për ndihmën e madhe në testimin në skenarë ekstreme përdorimi. Në veçanti, kështu u zbulua dhe u eliminua një defekt në menaxhimin e leximit parashikues/cache-it, i cili çonte në degradim të performancës në skenarë të vështirë për t'u riprodhuar me bazat e të dhënave të mëdha.

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