Ăshte publikuar versioni i bibliotekĂ«s libmdbx 0.13.2 (MDBX) me implementimin e njĂ« baze tĂ« dhĂ«nash tĂ« integruar tĂ« klasĂ«s kyç-vlerĂ« me performancĂ« tĂ« lartĂ«. Kodi libmdbx shpĂ«rndahet nĂ«n licencĂ«n Apache 2.0. TĂ« gjitha sistemet operative dhe arkitekturat aktuale janĂ« mbĂ«shtetur, duke pĂ«rfshirĂ« edhe Elbrus 2000 nga Rusia. PĂ«r libmdbx ofrohet njĂ« API e avancuar pĂ«r C++, pĂ«rveç lidhjeve pĂ«r gjuhĂ«t Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, dhe Scala, qĂ« mbĂ«shteten nga entuziastĂ«t.
Historikisht, libmdbx është një rishikim i thellë i DBMS LMDB dhe tejkalon paraardhësin e tij në besueshmëri, gamën e mundësive dhe performancë. Në krahasim me LMDB, në libmdbx përkushtohet një vëmendje e madhe për cilësinë e kodit, funksionimin stabil të API, testimin dhe verifikimet automatike. Ofron një utilitar për verifikimin e integritetit të strukturës së DB me disa mundësi rikorrigjimi. Teknologjikisht, libmdbx ofron ACID, serializim të rreptë të ndryshimeve dhe lexim jo-bllokues me shkallëzim linear sipas bërthamave të CPU. Mbështetet kompaktifikimi automatik, menaxhimi automatik i madhësisë së DB-së, dhe vlerësimi i sasisë së mostrave sipas grupeve (range query estimation).
Ndryshimet kryesore:
- ĂshtĂ« pĂ«rshpejtuar rifreskimi i GC-sĂ« gjatĂ« kthimit / vendosjes sĂ« listave tĂ« faqeve nĂ« skenare tĂ« ndĂ«rlikuara. ĂshtĂ« pĂ«rmirĂ«suar dhe aktivizuar njĂ« mod pĂ«r eksperimente tĂ« korrigjimit tĂ« reagimit qĂ« ishte mĂ« parĂ« i çaktivizuar. Kjo ka pĂ«rmirĂ«suar ndjeshĂ«m konvergjencĂ«n (ka ulur numrin e pĂ«rpjekjeve tĂ« pĂ«rsĂ«ritura), dhe gjithashtu Ă«shtĂ« eliminuar njĂ« defekt qĂ« çonte nĂ« "pĂ«rsĂ«ritje" gjatĂ« konfirmimit tĂ« transaksioneve (me kthim tĂ« gabimit MDBX_PROBLEM) nĂ« kushte tĂ« rralla specifike.
- Në skriptet ndërtuese CMake është përfshirë standardi C23.
- Shtuar T-makros për funksionet çar / wchar_t.
- Në API-në C++ është shtuar mbështetje për transaksionet e brendshme të shkrimit.
- ĂshtĂ« realizuar kalimi nĂ« edicionin e dytĂ« tĂ« specifikimit tĂ« versionit semantik ("Semantic Versioning 2") dhe Ă«shtĂ« siguruar eksportimi i informacionit rreth versionit nĂ« VERSION.json.
- Për riprodhueshmërinë e ndërtimit është shtuar mbështetje për variables ambienti SOURCE_DATE_EPOCH. Mbështetje për MDBX_BUILD_TIMESTAMP është ruajtur dhe kjo variabël ka prioritet.
- Shtuar mundësia për të dhënë informacion shtesë mbi ndërtimin e libmdbx përmes opsionit MDBX_BUILD_METADATA. Informacioni i specifikuar tani përfshihet brenda bibliotekës si vlerë mdbx_build.metadata, dhe në të ardhmen gjithashtu do të përdoret gjatë formimit të pakove etj.
- Shtuar logimi i gabimeve që kthehen nga API. Tani për këtë është e mjaftueshme të vendosni nivelin e logimit MDBX_LOG_DEBUG (për logimin e gabimeve përveç MDBX_NOTFOUND) ose MDBX_LOG_TRACE (për logimin e të gjitha gabimeve, duke përfshirë edhe MDBX_RESULT_TRUE).
- Ndryshimi i sjelljes:
- Shtuar metoda mdbx::cursor::get_multiple_samelength() dhe ri-emëruar mdbx::txn::put_multiple_samelength().
- Për shkak të njësojshmërisë në C++ API, gjatë ekzekutimit të operacionit MDBX_GET_MULTIPLE tani gjithashtu kthehet vlera e vetë çelësit.
- Për konstanta dimensionale mdbx::env::geometry, tipi bazë është ndryshuar nga size_t i pa nënshtruar në intptr_t të nënshtruar.
- Zgjedhja për përdorimin e ntdll në vend të CRT tani bëhet vetëm kur C++ API është çaktivizuar shprehimisht.
- ĂshtĂ« siguruar çlirimi i memories pĂ«r transaksionet lexuese tĂ« refuzuara / tĂ« ndĂ«rprera, qĂ« transmetohen nĂ« mdbx_txn_commit(). MarrĂ«veshja pĂ«r API kĂ«rkon qĂ« kĂ«to transaksione tĂ« çlirohen pĂ«rmes mdbx_txn_abort(), pĂ«r shkak tĂ« sĂ« cilĂ«s funksioni mdbx_txn_commit() ktheu njĂ« gabim nĂ« kĂ«to raste, pa shkatĂ«rruar vetĂ« transaksionet. Kjo çoi nĂ« rrjedhje memories pĂ«r shkak tĂ« gabimeve nĂ« aplikacione, qĂ« nxisnin ndryshimin e sjelljes.
- Përdorimi i makros __deprecated_enum, nëse është i përcaktuar.
- Gjatë ndërtimit përmes CMake, zgjedhja e standardit të gjuhës C tani bëhet duke marrë parasysh CMAKE_C_STANDARD.
Burimi: opennet.ru
