Состоялся выпуск библиотеки libmdbx v0.12.5 «Динамо» с реализацией высокопроизводительной компактной встраиваемой базы данных класса ключ-значение. Код распространяется под лицензией OpenLDAP Public License.
Выпуск отмечен как стабилизирующий, с исправлением обнаруженных ошибок и устранением недочетов, в день 100-летнего юбилея спортивного общества «Динамо». При этом пользователи отмечают заметное увеличение производительности (видимо в сравнении с версиями v0.11.x).
Исправления:
- Поправлен экспорт из DSO/DLL устаревших функций, которые заменены на inline в текущем API.
- Устранено использование неверного компаратора при создании или пересоздании MainDB с флагами/опциями предполагающим использование специфического компаратора (не по-умолчанию).
Мелочи:
- Удалена дублирующая диагностика внутри
node_read_bigdata()
. - Исправлены ссылки в описании
mdbx_env_set_geometry()
. - Добавлен отдельный тест
extra/upsert_alldups
для специфического сценария замены/перезаписи одним значением всех multi-значений соответствующих ключу, т.е. замена всех «дубликатов» одним значением. - В C++ API добавлены варианты
buffer::key_from()
с явным именованием по типу данных. - Добавлен отдельный тест
extra/maindb_ordina
l для специфического сценария создания MainDB с флагами требующими использования компаратора не по-умолчанию. - Проведён рефакторинг проверки «когерентности» мета-страниц.
- Проведена корректировка
osal_vasprintf()
для устранения предупреждений статических анализаторов.
Кроме традиционного C API, в libmdbx предлагается развитый C++20 API, а также поддерживаемые энтузиастами привязки к языкам: Lua, Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.
Исторически libmdbx является глубокой переработкой Lightning Memory-Mapped Database (aka LMDB). По утверждению разработчиков, libmdbx превосходит своего прародителя по надёжности, набору возможностей и производительности. Больше внимание уделяется тестированию и автоматическим проверкам.
Уже более двух лет libmdbx используется проектом Erigon (17% узлов Ethereum и основа для других блокчейнов) в качестве движка хранения, а с сентября 2022 он выбран проектом Reth (реализация Ethereum на Rust, финансируемая Paradigm).
Разработка libmdbx финансируется компанией Positive Technologies и с 2017 года используется в её продуктах. В апреле 2022 года проект перенесен на Gitflic.