Выпуск встраиваемой СУБД libmdbx 0.13.6

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 4088
Зарегистрирован: 20.08.2022

#

Выпуск встраиваемой СУБД libmdbx 0.13.6
Дата публикации:Thu, 24 Apr 2025 22:58:42 +0300




Опубликован выпуск библиотеки 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 (aka 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
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63134

Жизнь за Нер'зула!

Ответить