The OpenNET Project / Index page

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

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

14.01.2025 22:18

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

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

Основные изменения:

  • Ветка 0.13.x получила статус стабильной. Началась разработка ветки 0.14.x.
  • В C API добавлена функция mdbx_cursor_count_ex(), позволяющая получить как количество мульти-значений соответствующих текущему ключу, так и информацию о вложенном дереве, хранящем эти значения.
  • В C++ API добавлен метод mdbx::txn::make_broken() аналогичный mdbx_txn_break().
  • В утилитах mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat реализовано логирование ошибок, предупреждений и важных сообщений от libmdbx.
  • Изменение поведения:
    • При включении профилирования сборщика мусора (сборка с опцией MDBX_ENABLE_PROFGC=ON) теперь подсчитываются затраты времени CPU на слияние списков страниц, т.е. на работу функции pnl_merge().
    • В утилите тестирования значение режима данных переименовано из data.dups в data.multi.
    • Доработан контроль длины ключа внутри cursor_seek().
    • Если посредством mdbx_env_set_option(MDBX_opt_txn_dp_limit) пользователем не задано собственно значение, то выполняется подстройка dirty-pages-limit при старте каждой не вложенной пишущей транзакций, исходя из объёма доступного ОЗУ и размера БД.
    • В режиме MDBX_NOSTICKYTHREADS допускается commit/abort вложенных транзакций из любого треда/потока.
    • При попытке запуска вложенных транзакций в режиме MDBX_WRITEMAP производится логирование и возврат ошибки MDBX_INCOMPATIBLE.
    • В C++ API в конструкторах/инициализаторах и методах, связанных с формированием геометрии БД, по умолчанию используются только default-значения.
    • Внутри mdbx_env_set_geometry() доработаны эвристики для подбора параметров геометрии БД запрошенных пользователем "по умолчанию".
  • Исправления:
    • Устранён регресс неразблокировки мьютекса при попытки повторного закрытия dbi-дескриптора, в том числе при попытке явно закрыть дескриптор после удаления связанной с ним таблицы.
    • Устранён регресс состояния вложенного/dupsort курсора после вставки данных в MDBX_APPEND-режиме.
    • Поддержка получения boot_id при работе внутри LXC-контейнера.
    • Устранёна ошибка неверной обработки попытки запуска вложенной читающей транзакции. Теперь в таких ситуациях возвращается ошибка MDBX_EINVAL, так как вложенность поддерживается только для транзакций чтения-записи.
    • Устранён SIGSEGV-регресс обращения к нулевому адресу при работе в режиме только-чтение без использования LCK-файла, например при размещении БД на носителе доступном только для чтения.


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


Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.7, Аноним (7), 05:44, 15/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чем она лучше gdbm?
     
     
  • 2.8, Аноним (8), 07:14, 15/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Как я понял к ней могут подключаться несколько клиентов, причём и на чтение и на запись.
     
  • 2.10, mos87 (ok), 08:04, 15/01/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    тем же чем ext4 лучше fat32
     
  • 2.14, Димыч (??), 09:08, 15/01/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Абсолютно буквально в каждой новости про libmdbx вылезет какой-то зануда с вопросами "а чем она лучше ..."?
     
     
  • 3.17, Аноним (17), 12:34, 15/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Обоснуй.
    Иначе: Абсолютно буквально в каждой новости про libmdbx вылезет какой-то занудаь против вопросов "а чем она лучше ..."?
     
     
  • 4.18, Димыч (??), 13:18, 15/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Обосновать? Зочем? (с)
     
  • 2.16, fi (ok), 09:53, 15/01/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нет поддержки perl - закапываем ))))
     

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



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

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