Lëshimi i DBMS i integruar me performancë të lartë libmdbx 0.10

Pas tre muajsh zhvillimi, libmdbx 0.10.0 (MDBX) u lëshua, duke zbatuar një bazë të dhënash me performancë të lartë dhe kompakte të ngulitur me vlera kyçe. Kodi libmdbx është i licencuar sipas licencës publike OpenLDAP. libmdbx është një ripërpunim i thellë i LMDB DBMS dhe, sipas zhvilluesve, është më i lartë se paraardhësi i tij në besueshmërinë, gamën e aftësive dhe performancën. Thuhet se libmdbx është deri në 20% më i shpejtë se LMDB në skenarët CRUD dhe deri në 30% më i shpejtë nëse kontrollet e brendshme çaktivizohen kur ndërtohet libmdbx në një nivel të krahasueshëm me LMDB.

Libmdbx ofron ACID, serializim të fortë të ndryshimeve dhe lexime pa bllokim që shkallëzohen në mënyrë lineare në bërthamat e CPU. Në libmdbx, shumë vëmendje i kushtohet cilësisë së kodit, funksionimit të qëndrueshëm të API, testimit dhe kontrolleve automatike. Mbështet kompaktimin automatik, menaxhimin automatik të madhësisë së bazës së të dhënave, një format të vetëm të bazës së të dhënave për asambletë 32-bit dhe 64-bit, dhe vlerësimin e pyetjeve të diapazonit. Ofrohet një mjet për kontrollimin e integritetit të strukturës së bazës së të dhënave me disa aftësi rikuperimi. Që nga viti 2016, projekti financohet nga Positive Technologies dhe është përdorur në produktet e saj që nga viti 2017 dhe sanksionet e vendosura nga qeveria amerikane ndaj Positive Technologies nuk kanë ndonjë ndikim të dukshëm.

Risi, përmirësime dhe rregullime kryesore të shtuara që nga publikimi i fundit:

  • Një lidhje Ruby nga Mahlon E. Smith dhe një version provë i lidhjeve Python nga Noel Kuntze janë në dispozicion, dhe lidhjet GoLang nga Alexey Sharov janë përditësuar.
  • Për modalitetin "MDBX_WRITEAP", kur të dhënat e bazës së të dhënave ndryshohen drejtpërdrejt në RAM, zbatohet një "derdhje transparente" e faqeve të ndryshuara të bazës së të dhënave në disk. Tani, pas përfundimit të çdo operacioni, faqe të tilla janë menjëherë plotësisht të gatshme për t'u shkruar në disk dhe kerneli i OS mund të fshijë në mënyrë të pavarur faqet e ndryshuara në disk, dhe kryerja e një transaksioni nuk do të kërkojë modifikimin e tyre. Si rezultat, në skenarë të zënë me RAM të pamjaftueshëm, vëllimi i operacioneve të diskut mund të reduktohet deri në 2 herë.
  • Ekzekutimi i zbatuar i kopjeve hije të pashfrytëzuara prej kohësh të faqeve të modifikuara, me preferencë për nxjerrjen e faqeve me vlera të mëdha/të gjata, të cilat në shumicën dërrmuese të skenarëve modifikohen vetëm një herë për transaksion. Rezultati është trafiku i reduktuar i diskut dhe performanca e përmirësuar në skenarë me transaksione shumë të mëdha.
  • Zbatoi një modalitet "të zgjuar" për ndarjen e faqeve gjatë futjes së çelësave. Tani, kur futni sekuenca të renditura, faqet mbushen automatikisht plotësisht, dhe në raste të tjera, pema është e balancuar në mënyrë më optimale. Si rezultat, mesatarisht, faqet e bazës së të dhënave mbushen në mënyrë më optimale dhe pema B është më e balancuar, gjë që ka një efekt pozitiv në performancën.
  • Janë shtuar statistikat e operacioneve me faqe, gjë që ju lejon të vlerësoni me saktësi koston e modifikimit të operacioneve me bazën e të dhënave.
  • Më shumë se një duzinë gabime dhe gabime janë rregulluar, duke përfshirë: problemet me ndërtimin duke përdorur MinGW, përdorimin e `std::sistemit të skedarëve:: path` në iOS <= 13.0, ndërtimin e synimeve të versioneve më të vjetra të Windows, etj.
  • Në total, u bënë më shumë se 200 ndryshime në 66 skedarë, u shtuan ~ 6500 rreshta, ~ 4500 u fshinë.

Më vete, do të doja të shënoja zgjedhjen e projektit Turbo-Geth (një pirun turbo i Go-Ethereum) libmdbx si një bazë të re të ruajtjes, dhe gjithashtu falënderoj ekipin e projektit (veçanërisht Alexey Sharov, Artyom Vorotnikov dhe Alexey Akhunov) për punën e tyre. ndihmë e madhe në testimin në skenarë të rasteve të përdorimit ekstrem. Në veçanti, u zbulua dhe u eliminua një defekt në kontrollin e leximit përpara/caching, i cili çoi në degradim të performancës në skenarë të vështirë për t'u riprodhuar me baza të dhënash të mëdha.

Burimi: opennet.ru

Shto një koment