Lëshimi i sistemit të menaxhimit të të dhënave të integruar me performancë të lartë libmdbx 0.10

Pas tre muajsh zhvillimi, u lëshua biblioteca libmdbx 0.10.0 (MDBX) me implementimin e një baze të dhënash të integruar, të kompaktë, dhe me performancë të lartë, e klasës çelësi-vlerë. Kodi libmdbx shpërndahet nën licencën OpenLDAP Public License. Libmdbx është një ripunim i thellë i SGBD-së LMDB dhe sipas zhvilluesve, tejkalon parardhësin e saj në shkallëzueshmëri, funksionalitete 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 është çaktivizuar kontrolli i brendshëm në një nivel të krahasueshëm me atë të LMDB.

Libmdbx ofron ACID, serializim të ngurtë të ndryshimeve dhe lexim jo-bllokues me shkallëzim linear për bërthamat e CPU. Në libmdbx, vëmendje e madhe i kushtohet cilësisë së kodit, stabilitetit të API-së, testimit dhe verifikimeve automatike. Përkrah automatikun e kompresionit, menaxhimin automatik të madhësisë së BAZE, një format të vetëm BAZE për ndërtimet 32-bit dhe 64-bit, vlerësimin e vëllimeve të mostrave sipas intervaleve (range query estimation). Ofron një mjet për kontrollin e integritetit të strukturës së BAZE 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, ndërsa sanksionet e ndërmarra nga qeveria e Shteteve të Bashkuara ndaj Positive Technologies nuk kanë ndonjë ndikim të dukshëm.

Risi, përmirësime dhe korrigjime të rëndësishme, të shtuar pas lëshimit të kaluar:

  • Disponohet lidhja pĂ«r Ruby nga Mahlon E. Smith dhe njĂ« version provues i lidhjeve pĂ«r Python nga Noel Kuntze, janĂ« pĂ«rditĂ«suar lidhjet pĂ«r GoLang nga Alexey Sharov.
  • PĂ«r modalitetin «MDBX_WRITEMAP», kur tĂ« dhĂ«nat e BAZE janĂ« modifikuar drejtpĂ«rdrejt nĂ« RAM, Ă«shtĂ« implementuar njĂ« «derdhje transparente» nĂ« disk tĂ« faqeve tĂ« ndryshuara tĂ« BAZE. Tani, pas pĂ«rfundimit tĂ« çdo operacioni, kĂ«to faqe janĂ« menjĂ«herĂ« tĂ« gatshme pĂ«r tĂ« shkruar nĂ« disk dhe bĂ«rthama e OS-sĂ« mund tĂ« nxjerrĂ« vetĂ« faqet e ndryshuara nĂ« disk, duke bĂ«rĂ« qĂ« fiksa e transaksionit tĂ« mos kĂ«rkojĂ« modifikimin e tyre. Si rezultat, nĂ« skenarĂ«t e ngarkuar me mungesĂ« RAM, volumi i operacioneve nĂ« disk mund tĂ« reduktohet deri nĂ« 2 herĂ«.
  • ËshtĂ« realizuar dĂ«bimi i kopjeve tĂ« errĂ«ta tĂ« faqeve tĂ« modifikuara qĂ« nuk janĂ« pĂ«rdorur prej kohĂ«sh, duke preferuar dĂ«bimin e faqeve me vlera tĂ« mĂ«dha/ tĂ« gjata, tĂ« cilat nĂ« shumicĂ«n e skenarĂ«ve modifikohen vetĂ«m njĂ« herĂ« pĂ«r transaksion. Si rezultat, zvogĂ«lohet volumi i shkĂ«mbimit me disqet dhe rritet performanca nĂ« skenarĂ«t me transaksione shumĂ« tĂ« mĂ«dha.
  • ËshtĂ« realizuar njĂ« mod i mençur pĂ«r ndarjen e faqeve gjatĂ« futjes sĂ« çelĂ«save. Tani, kur fusim sekuenca tĂ« renditura, sigurohet automatikisht plotĂ«simi i plotĂ« i faqeve, ndĂ«rsa nĂ« raste tĂ« tjera, njĂ« balancim mĂ« optimal i pemĂ«s. Si rezultat, nĂ« mesatarje, faqet e DB plotĂ«sohen mĂ« optimalisht dhe B-pema rezulton mĂ« e balancuar, çka ndikon pozitivisht nĂ« performancĂ«.
  • Statistikat e operacioneve me faqe janĂ« shtuar, duke mundĂ«suar vlerĂ«simin e saktĂ« tĂ« kostos sĂ« operacioneve modifikuese me DB.
  • ËshtĂ« eliminuar mĂ« shumĂ« se njĂ«zet nĂ«ntĂ«sh pĂ«r tĂ« gjetur dhe pĂ«r tĂ« pĂ«rmirĂ«suar, duke pĂ«rfshirĂ«: janĂ« zgjidhur problemet me ndĂ«rtimin pĂ«rmes MinGW, pĂ«rdorimi i `std::filesystem::path` nĂ« iOS <= 13.0, ndĂ«rtimi me objektiv nĂ« versione mĂ« tĂ« vjetra tĂ« Windows, etj.
  • NĂ« pĂ«rmbledhje, janĂ« bĂ«rĂ« mĂ« shumĂ« se 200 ndryshime nĂ« 66 skedarĂ«, janĂ« shtuar rreth 6500 rreshta, janĂ« fshirĂ« rreth 4500.

Veçanërisht dua të theksoj zgjedhjen e projektit Turbo-Geth (turbo-fork i Go-Ethereum) libmdbx si backend të ri për ruajtjen, si dhe të falënderoj ekipin e projektit (veçanërisht Aleksej Sharov, Artem Vorotnikov dhe Aleksej Akhunov) për ndihmën e madhe në testimin në skenarë ekstreme të përdorimit. Në veçanti, në këtë mënyrë është zbuluar dhe eliminuar një defekt në menaxhimin e leximit të parashikueshëm/keshimit, i cili shkaktonte degradimin e performancës në skenarët e vështirë për t'u riprodhuar me DB të mëdha.

Burimi: opennet.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