The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

01.08.2025 21:20

Опубликован выпуск библиотеки libmdbx 0.13.7 (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_env_resurrect_after_fork() при использовании SysV-семафоров. Проявлялась ошибка только после порождения дочернего процесса посредством fork() на фоне выполняющейся пишущей транзакции, что приводило к неверной работе семафоров и далее к самым различным ошибкам, вплоть до повреждения БД. Проблема существовала начиная с появления mdbx_env_resurrect_after_fork() и затрагивала macOS, а также POSIX-платформы при сборке с опцией MDBX_LOCKING=5.
  • Устранена проблема в API копирования БД, проявлявшаяся на отличных от Linux системах POSIX (в основном в macOS), а также в некоторых случаях при расположении целевого файла на не-локальной файловой системе. Проблема приводила к возврату ошибки EWOULDBLOCK/EAGAIN, что обусловлено недочётом/конфликтом блокировок fcntl(F_SETLK) и flock() в ядре ОС. Переработана обработка ошибок захвата файловых блокировок в API копирования на системах POSIX.
  • Устранена ошибка, приводившая к неожиданному возврату MDBX_BAD_DBI при одновременном старте нескольких транзакций внутри одного процесса после открытия БД.
  • Устранена ошибка, приводившая к неожиданному возврату MDBX_DBS_FULL при повторном открытии уже открытых таблиц и уже достигнутом лимите открытых DBI-дескрипторов.
  • Исправлена ошибка сборки для платформы Android при явном определении _FILE_OFFSET_BITS.
  • Исправлена ошибка использования ENOMEM вместо MDBX_ENOMEM. Что могло ломать сборку на не-POSIX/Windows платформах, в зависимости от конфигурации и/или версии SDK.
  • Поправлено либо удалено несколько неверных assert-проверок, из-за которых происходили падения отладочных сборок в специфических ситуациях. Главным образом, в коде функций txn_end(), txn_lock() и txn_unlock() как на Windows, так и на POSIX.
  • Устранены несущественные предупреждения MSVC. Отключены предупреждения C5286 и C5287.
  • Доработана логика отказа от использования OFD-блокировок на POSIX-платформах. Теперь кроме EINVAL учитываются дополнительные коды ошибок (ENOSYS, ENOIMPL, ENOTSUP, ENOSUPP, EOPNOTSUPP), что позволит работать собранной библиотеке в некоторых случаях, когда актуальное ядро/контейнер/эмулятор не поддерживает требуемых системных вызовов.
  • В тестовый фреймворк добавлена поддержка опции "--numa <num>" для привязки стохастического теста к NUMA-узлу. В battery/tmux-скрипте добавлено явное распределение по NUMA-узлам, что существенно увеличило КПД при тестировании на NUMA-машинах.
  • В стохастическом скрипте реализован случайный порядок запуска отдельных тестов.


  1. Главная ссылка к новости (https://gitflic.ru/project/ert...)
  2. OpenNews: Выпуск встраиваемой СУБД libmdbx 0.13.6
  3. OpenNews: Выпуск встраиваемой СУБД libmdbx 0.13
  4. OpenNews: Релиз LDAP-сервера ReOpenLDAP 1.2.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63653-libmdbx
Ключевые слова: libmdbx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (19) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 22:08, 01/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то ошибок многовато
     
     
  • 2.7, Аноним (7), 22:31, 01/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Автор как-то слишком страшно и дотошно формулирует описание исправлений.
    Ошибки-то в совсем новом API и проявлялись только на маке.
    А остальное и ошибками можно не называть, в GCC таких сотни, если не тысячи.
     

  • 1.4, Аноним (2), 22:20, 01/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот что автор пишет про свою СУБД:
    "libmdbx is extraordinarily fast ... in the case of libmdbx, a simple linear search may be more profitable than complex indexes"

    Просто перебирайте значения

     
     
  • 2.5, Аноним (2), 22:23, 01/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вот ещё:
    "In comparison to LMDB, libmdbx make things “just work” perfectly and out-of-the-box"
     
  • 2.6, Аноним (6), 22:23, 01/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Про асимптотическую сложность не слышал, чо. Действительно, нафига нам индексы.
     
  • 2.10, Аноним (7), 22:43, 01/08/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ага, и написано это в подразделе Gotchas.

    On the other hand, if you make something suboptimally, you can notice detrimentally only on sufficiently large data.

    Автор там похоже удачно стебёться над любителями кодить и читать по-верхам не вникая ;)

     

  • 1.8, Аноним (8), 22:32, 01/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пользуюсь, нареканий нет, спасибо автору!
     
  • 1.9, Аноним (2), 22:37, 01/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Ещё на его странице: "Donations are welcome to the Ethereum/ERC-20 ... Всё будет хорошо!"

    А для кого хорошо? Напомню, оплата товаров и услуг криптовалютой запрещена в России с 2021 года

     
     
  • 2.11, Аноним (7), 22:46, 01/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А причем тут донаты и продажа крипты?
     
     
  • 3.12, Аноним (2), 23:00, 01/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    "Since 2020 libmdbx is used in Ethereum"
     
     
  • 4.13, Аноним (7), 23:03, 01/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так логично что автор собирает донаты от индустрии.
    Но причем тут запрет на оплату криптой товаров и услуг?
     
     
  • 5.14, Аноним (2), 23:42, 01/08/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Так эти самые донейшены - разве не скрытая оплата товара?
     
  • 5.16, Аноним (7), 00:05, 02/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Нет тут никакой скрытой продажи, ведь вы не приобретаете ни товар, ни услугу.
    Исходники, документация, поддержка доступны вне зависимости от крипты.

    Причем приём платежей в крипте запрещен внутри РФ, но разрешен из-за рубежа.

     

  • 1.18, Аноним10084 и 1008465039 (?), 01:25, 02/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то баз данных ключ-значение много очень стало
     
     
  • 2.20, Анонима (?), 07:29, 02/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    десятилетиями блобы хранились в обычных реляционных субд, но кто-то с похмелья подумал что блобы в традиционных субд хранятся неоптимально, на страницах с обычными данными и оперативная память "забивается", и понеслась...
     
     
  • 3.22, Аноним (22), 08:56, 02/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Дидам хватало — и нам должно хватать, да.
     
  • 3.24, Аноним (24), 14:27, 02/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если "сводные таблицы" не планируются, то зачем заморачиваться с реляционностью?
     

  • 1.19, Аноним (19), 04:02, 02/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Чем она лучше dbm?
     
     
  • 2.23, Аноним (7), 09:06, 02/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ACID
    Доступ из нескольких процессов.
    Работа читателей без блокировок.
    Поддержка "дубликатов", когда с ключом связано очень много значений они хранятся во вложенном b-tree.
    Много key-value таблиц в одном файле.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру