libmdbx является трёхгодичным форком Lightning Memory-Mapped Database (LMDB). Но только с 2017 года развитие проекта не сдерживается необходимостью совместимости с прародителем, в том числе по формату файлов БД.
В 2017 году libmdbx получил новый импульс развития. С одной стороны, были выполнены обязательства по сохранению совместимости. С другой стороны, был задействован в «Позитивных таблицах» компании Positive Technologies.
Исходя из свойств и внутренних механизмов libmdbx можно выделить три группы областей применений или сценариев использования: подходящие, пограничные, противопоказанные. Однако, практика показывает что такое подразделение достаточно условно и правильнее оценивать сумму факторов, каждый из которых вытекает из отдельного свойства libmdbx и может быть как положительным, так и отрицательным в каждом конкретном случае.
Кратко рассмотрим самые важные свойства и связанные с ними плюсы/минусы:
- Встраиваемый движок:
- Встраиваемость становится весомым плюсом когда отдельный серверный процесс не требуется, тем более если этого хочется избежать.
С другой стороны, при встраивании, со стороны остального кода, есть неизбежный риск повреждения внутренних структур данных движка. Что может приводить к повреждению БД.
Основные новшества, доработки:
- Доступны привязки для Nim (автор Jens Alfke, архитектор в Couchbase) и Rust (автор Clément Renault, основатель MeiliSearch).
- Доступен пакет для buildroot (ожидается обновление).
- Устранено более 20 ошибок и недочетов, в том числе обеспечена работа на Windows 2000/XP (для Miranda NG).
- Добавлены функции копирования курсоров, безопасного удаления файлов БД в многопроцесной среде и функционал поиска lowerbound для multimap (с поддержкой сортировки multi-value элементов). Ускорено завершение вложенных транзакций.
- Расширены внутренние тесты, в том числе для применения библиотеки в TurboGeth/Ethereum.