ĂshtĂ« publikuar njĂ« version i bibliotekĂ«s libmdbx 0.13.6 (MDBX) me implementimin e njĂ« baze tĂ« dhĂ«nash kompakte tĂ« integruar me performancĂ« tĂ« lartĂ« klasĂ« çelĂ«s-vlerĂ«. Kodi libmdbx shpĂ«rndahet nĂ«n licencĂ«n Apache 2.0. PĂ«rkrahjen e plotĂ« e kanĂ« tĂ« gjitha sistemet operative dhe arkitekturĂ«n aktuale, pĂ«rfshirĂ« Elbrus 2000 tĂ« RusisĂ«. PĂ«r libmdbx ofrohet njĂ« API e zhvilluar pĂ«r C++, pĂ«rveç lidhjeve tĂ« mbĂ«shtetur nga entuziastĂ«t pĂ«r gjuhĂ«t Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, 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 bazës së të dhënave LMDB dhe e tejkalon paraardhësin e saj në besueshmëri, funksionalitete dhe performancë. Krahasuar me LMDB, në libmdbx i është kushtuar shumë vëmendje cilësisë së kodit, qëndrueshmërisë së API, testimit dhe kontrolleve automatike. Sigurohet një mjet për të verifikuar integritetin e strukturës së bazës së të dhënave me disa mundësi rikuperimi. Teknologjikisht, libmdbx ofron ACID, serilizim të rreptë të ndryshimeve dhe lexim të pakonkurrueshëm me shkallëzim linear sipas bërthamave të CPU. Mbështetet kompaktimi automatik, menaxhimi automatik i madhësisë së bazës së të dhënave, dhe vlerësimi i shumësive të zgjedhura sipas intervaleve (range query estimation).
Ndryshimet kryesore:
- Ndryshimi i sjelljes: Kur nuk është e mundur të shkëputet 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, pĂ«rdorimi i copy_file_range() Ă«shtĂ« çaktivizuar nĂ« kernelĂ«t Linux 5.3 â 5.18.
- Throw std::invalid_argument tani bëhet me një mesazh të qartë MDBX_EINVAL.
- Regresioni gjatë përdorimit të kursorëve për DBI=0 (aka GC/FreeDB) në transaksionet lexuese është eliminuar.
- Regresioni që shkaktonte gabimin EAGAIN gjatë kopjimit të DB-së në NFS dhe CIFS/SMB është eliminuar.
- Në përmirësimet/zhvillimin e API, funksioni i kopjimit ka pasur të shtuar mbajtjen e bllokimit të skedarëve përmes si fcntl(), ashtu edhe flock(). Megjithatë, në varësi të versionit të kernelit lokal, versionit të largët serverë NFS dhe opsioneve të montimit, kjo mund të shkaktonte kthimin e gabimit POSIX EAGAIN (11 në shumicën e platformave, përfshirë Linux).
- Gabimi merge/rebase brenda mdbx_txn_release_all_cursors_ex() që mund të shkaktonte më pas gabime të papritura MDBX_EBADSIGN dhe rrjedhjen e memories është rregulluar.
- Kontrolli assert në rrugën e përfundimit të transaksioneve të thella është rregulluar.
- Përjashtimi i mundësisë që të kthehet një gabim të papritur MDBX_BUSY nga mdbx_txn_lock(dont_wait=false) është eliminuar.
- Për qëllime pajtueshmërie me GCC 15.x në modin C23, ka ndryshuar rendi i specifikimit të atributeve të funksioneve.
Burimi: opennet.ru
