ĂshtĂ« publikuar versioni i bibliotekĂ«s libmdbx 0.13.6 (MDBX) me implementimin e njĂ« databaze kompakte, tĂ« integruar dhe me performancĂ« tĂ« lartĂ« tĂ« klasĂ«s çelĂ«s-vlerĂ«. Kodi libmdbx shpĂ«rndahet nĂ«n licencĂ«n Apache 2.0. MbĂ«shteten tĂ« gjitha sistemet operative dhe arkitekturat aktuale, si edhe Elbrusi 2000 nĂ« Rusi. PĂ«r libmdbx ofrohet njĂ« API e avancuar pĂ«r C++, si dhe lidhje tĂ« mbĂ«shtetura nga entuziastĂ«t pĂ«r gjuhĂ«t Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, dhe Scala. Nga projektet qĂ« pĂ«rdorin libmdbx, mund tĂ« pĂ«rmenden Isar, Erigon dhe Reth, si dhe zhvillimet e kompanive StarkWare dhe Positive Technologies.
Historikisht, libmdbx është një ripunim i thellë i DBMS LMDB dhe e kalon paraardhësin e tij në besueshmëri, gamën e mundësive dhe performancë. Krahasuar me LMDB, në libmdbx, një vëmendje e madhe i kushtohet cilësisë së kodit, stabilitetit të API-t, testimit dhe kontrolleve automatike. Ofron një utilitet për verifikimin e integritetit të strukturës së DB me disa mundësi rikuperimi. Teknologjikisht, libmdbx ofron ACID, serializim të rreptë të ndryshimeve dhe lexim pa bllokim me shkallëzim linear sipas koreve të CPU-së. Mbështetet kompaktimi automatik, menaxhimi automatik i madhësisë së DB, dhe vlerësimi i volumit të zgjedhjeve sipas intervaleve.
Ndryshimet kryesore:
- Ndryshimi i sjelljes: Kur nuk është e mundur të ndahet kursori nga transaksioni i tij aktual, funksioni mdbx_cursor_bind() tani kthen MDBX_EINVAL në vend të MDBX_BAD_TXN.
- Për të shmangur probleme të mundshme, është çaktivizuar përdorimi i copy_file_range() në bërthamat Linux 5.3 - 5.18.
- Tashmë hedhja std::invalid_argument bëhet me një mesazh të qartë MDBX_EINVAL.
- ĂshtĂ« eliminuar njĂ« regresion nĂ« pĂ«rdorimin e kursoreve pĂ«r DBI=0 (aka GC/FreeDB) nĂ« transaksionet lexuese.
- ĂshtĂ« eliminuar njĂ« regresion nĂ« formĂ«n e gabimit EAGAIN gjatĂ« kopjim tĂ« BDs nĂ« NFS dhe CIFS/SMB.
- Gjatë përmirësimeve/zhvillimit të API-t, funksionit të kopjimit i është shtuar kapja e bllokimit të skedave përmes si fcntl(), ashtu edhe flock(). Sidoqoftë, varësisht nga versioni i bërthamor lokal, versioni i largët serverit NFS dhe opsionet e montimit, kjo mund të kishte rezultuar në kthimin e gabimit POSIX EAGAIN (11 në shumicën e platformave, duke përfshirë Linux).
- ĂshtĂ« korrigjuar njĂ« gabim merge/rebase brenda mdbx_txn_release_all_cursors_ex(), qĂ« mund tĂ« kishte çuar nĂ« gabime tĂ« papritura MDBX_EBADSIGN dhe rrjedhje memorjeje.
- ĂshtĂ« korrigjuar kontrolli assert nĂ« rrugĂ«n e pĂ«rfundimit tĂ« transaksioneve tĂ« nĂ«nshkruara.
- ĂshtĂ« eliminuar mundĂ«sia e kthimit tĂ« njĂ« gabimi tĂ« papritur MDBX_BUSY nga mdbx_txn_lock(dont_wait=false).
- Për kompatibilitet me GCC 15.x në modalitetin C23, është ndryshuar renditja e specifikimit të atributeve të funksioneve.
Burimi: opennet.ru
