LINUXTALKS.CO

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

 

L


0

1

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

Исторически 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-файла, например при размещении БД на носителе доступном только для чтения.

>>> Подробности



Проверено: Aleksandra ()

Лично считаю, что СУБД не нужны, а базой данных должна быть файловая система, каждый параметр должен храниться в отдельном файле параметр.txt, а сортироваться это всё должно по каталогам. Примером подражания выступает, например, Nocord.

MrSugoma    

Последнее исправление: MrSugoma (всего исправлений: 1)

Linux / Firefox (BE)
Ответ на: комментарий от MrSugoma

Примером подражания выступает, например, Nocord.

Твоя ссылка ведет на небезопасный ресурсресурс

odalist    
★★★★★★★
Последнее исправление: odalist (всего исправлений: 3)

NetBSD / Chrome (LT)
Ответ на: комментарий от odalist

Твоя ссылка ведет на небезопасный ресурс

Потому что я из принципа не сделаю HTTPS, чтобы не быть зависимым от западных сервисов халявных сертификатов, а самоподписанные браузеры не любят.

MrSugoma    

Linux / Firefox (BE)
Ответ на: комментарий от MrSugoma

Потому что я из принципа не сделаю HTTPS, чтобы не быть зависимым от западных сервисов халявных сертификатов

Понял, спасибо.

odalist    
★★★★★★★
NetBSD / Chrome (LT)