Lëshimi i DB embedded libmdbx 0.13.7

Libmdbx 0.13.7 (MDBX) është publikuar me implementimin e një baze të dhënash të konceptit çelës-vlerë të kompaktë dhe me performancë të lartë. Kodi libmdbx shpërndahet nën licencën Apache 2.0. Mbështeten të gjitha sistemet operative dhe arkitekturën e tanishme, përfshirë Elbursin rus 2000. Për libmdbx ofrohet një API e zhvilluar për C++, si dhe lidhje të mbështetura nga entuziastët për gjuhët Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala. Projektet që përdorin libmdbx përfshijnë 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:

  • NjĂ« gabim kritik nĂ« funksionin mdbx_env_resurrect_after_fork() duke pĂ«rdorur semaforĂ« SysV Ă«shtĂ« korrigjuar. Gabimi shfaqej vetĂ«m pas krijimit tĂ« njĂ« procesi dytĂ«sor pĂ«rmes fork() gjatĂ« njĂ« transaksioni shkruar, duke shkaktuar funksionimin e gabuar tĂ« semaforĂ«ve dhe mĂ« pas shumĂ« gabime tĂ« ndryshme, deri te dĂ«mtimi i BAZËS sĂ« tĂ« dhĂ«nave. Problemi ekzistonte qĂ« nga shfaqja e mdbx_env_resurrect_after_fork() dhe prekte macOS, si dhe platformat POSIX kur ndĂ«rtohej me opsionin MDBX_LOCKING=5.
  • NjĂ« problem nĂ« API-nĂ« e kopjimit tĂ« BAZËS sĂ« tĂ« dhĂ«nave, i cili shfaqej nĂ« sisteme tĂ« tjera POSIX pĂ«rveç Linux ( kryesisht nĂ« macOS), si dhe nĂ« disa raste kur skedari i synuar ndodhej nĂ« njĂ« sistem skedari jo-lokal. Problemi shkaktonte kthimin e gabimit EWOULDBLOCK/EAGAIN pĂ«r shkak tĂ« njĂ« gabimi/kontakti tĂ« bllokimeve fcntl(F_SETLK) dhe flock() nĂ« kernelin e OS. Rishikimi i trajtimit tĂ« gabimeve tĂ« kapjes sĂ« bllokimeve tĂ« skedarĂ«ve nĂ« API-nĂ« e kopjimit nĂ« sistemet POSIX Ă«shtĂ« realizuar.
  • NjĂ« gabim qĂ« shkaktonte kthimin e papritur tĂ« MDBX_BAD_DBI kur nisin disa transaksione paralelisht brenda njĂ« procesi pas hapjes sĂ« BAZËS sĂ« tĂ« dhĂ«nave Ă«shtĂ« korrigjuar.
  • NjĂ« gabim qĂ« shkaktonte kthimin e papritur tĂ« MDBX_DBS_FULL kur rihapej tabela tashmĂ« e hapur dhe ishte arritur kufiri i descriptorĂ«ve tĂ« hapur DBI Ă«shtĂ« korrigjuar.
  • NjĂ« gabim nĂ« ndĂ«rtimin pĂ«r platformĂ«n Android kur ishte e qartĂ« se ishte e pĂ«rcaktuar _FILE_OFFSET_BITS Ă«shtĂ« korrigjuar.
  • NjĂ« gabim nĂ« pĂ«rdorimin e ENOMEM nĂ« vend tĂ« MDBX_ENOMEM Ă«shtĂ« korrigjuar. Kjo mund tĂ« shkaktonte dĂ«mtim tĂ« ndĂ«rtimit nĂ« platformat jo-POSIX/Windows, nĂ« varĂ«si tĂ« konfigurimit dhe/ose versionit tĂ« SDK.
  • Disa kontrolle tĂ« gabuara assert janĂ« rregulluar ose fshirĂ«, tĂ« cilat shkaktonin rrĂ«zime tĂ« ndĂ«rtimit nĂ« situata specifike. Kryesisht, nĂ« kodin e funksioneve txn_end(), txn_lock() dhe txn_unlock() si nĂ« Windows ashtu edhe nĂ« POSIX.
  • DĂ«shira pĂ«r t'u shmangur nga parashikimet e pavlerĂ«sishme MSVC Ă«shtĂ« pĂ«rmirĂ«suar. DĂ«shira C5286 dhe C5287 janĂ« çaktivizuar.
  • Logjika pĂ«r tĂ« hequr dorĂ« nga pĂ«rdorimi i bllokimeve OFD nĂ« platformat POSIX Ă«shtĂ« pĂ«rmirĂ«suar. Tani, pĂ«rveç EINVAL, janĂ« marrĂ« parasysh kode tĂ« tjera gabimesh (ENOSYS, ENOIMPL, ENOTSUP, ENOSUPP, EOPNOTSUPP), qĂ« do tĂ« lejojĂ« qĂ« biblioteka e ndĂ«rtuar tĂ« punojĂ« nĂ« disa raste kur bĂ«rthama/konteineri/emulatori pĂ«rkatĂ«s nuk mbĂ«shtet thirrjet e nevojshme tĂ« sistemit.
  • NĂ« kornizĂ«n e testit Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r opsionin "—numa " pĂ«r lidhjen e testit stokastik me nyjĂ«n NUMA. NĂ« skriptin e battery/tmux Ă«shtĂ« shtuar shpĂ«rndarja e qartĂ« nĂ« nyjat NUMA, e cila ndjeshĂ«m rriti efikasitetin nĂ« testim nĂ« makinat NUMA.
  • NĂ« skriptin stokastik Ă«shtĂ« realizuar njĂ« rend tĂ« rastĂ«sishĂ«m pĂ«r nisjen e testeve tĂ« veçanta.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster