Издаване на вградена СУБД libmdbx 0.13.6

Публикувана версия на библиотеката libmdbx 0.13.6 (MDBX) с реализация на високо производителна компактна вградена база данни от клас ключ-стойност. Кодът на libmdbx се разпространява под лицензия Apache 2.0. Поддържат се всички актуални операционни системи и архитектури, както и руския Елбрус 2000. За libmdbx се предлага развито API за C++, както и поддържани от ентусиасти привързвания към езици като Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno и Scala. От проектите, които използват libmdbx, може да се отбележи Isar, Erigon и Reth, както и разработки от компании като StarkWare и Positive Technologies.

Исторически, libmdbx е дълбока преработка на СУБД LMDB и превъзхожда своя родител по надеждност, набор от възможности и производителност. В сравнение с LMDB, в libmdbx се обръща голямо внимание на качеството на кода, стабилната работа на API, тестването и автоматичните проверки. Предоставя се инструмент за проверка на целостта на структурата на БД с някои възможности за възстановяване. Технологично libmdbx предлага ACID, строга сериализация на промените и не-блокиращо четене с линейно мащабиране по ядра на ЦПУ. Поддържа автоуплътняване, автоматично управление на размера на БД, оценка на обема на селекциите по диапазони (range query estimation).

Основни промени:

  • Промяна на поведението: При невъзможност за свързване на курсора с текущата му транзакция, функцията mdbx_cursor_bind() сега връща MDBX_EINVAL вместо MDBX_BAD_TXN.
  • За избягване на потенциални проблеми е деактивирано използването на copy_file_range() на ядра Linux 5.3 — 5.18.
  • Вбросът std::invalid_argument сега се извършва с явното съобщение MDBX_EINVAL.
  • Премахната е регресията при използване на курсори за DBI=0 (известен още като GC/FreeDB) в четящи транзакции.
  • Премахната е регресията във вида на грешката EAGAIN при копиране на БД на NFS и CIFS/SMB.
  • При доработките/развитието на API в функцията за копиране е добавено захващане на файловата блокировка с помощта на както fcntl(), така и flock(). Въпреки това, в зависимост от версията на локалното ядро, версията на отдалеченото сървър NFS и опциите за монтиране, това може да е довело до връщането на POSIX-грешка EAGAIN (11 на повечето платформи, включително Linux).
  • Премахната е грешката merge/rebase в mdbx_txn_release_all_cursors_ex(), което може да е довело до последващи неочаквани грешки MDBX_EBADSIGN и изтичане на памет.
  • Поправена е assert-проверка по време на завършването на вложени транзакции.
  • Премахната е възможността за връщане на неочаквана грешка MDBX_BUSY от mdbx_txn_lock(dont_wait=false).
  • За съвместимост с GCC 15.x в режим C23 е променен реда на указване на атрибутите на функциите.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster