Выпуск высокопроизводительной встраиваемой СУБД libmdbx 0.10.4 и libfpta 0.3.9

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
11-Окт-2021 23:30

Состоялся выпуск библиотек libmdbx 0.10.4 (MDBX) с реализацией высокопроизводительной компактной встраиваемой базы данных класса ключ-значение, и связанной библиотеки libfpta 0.3.9 (FPTA), реализующей поверх MDBX табличное представление данных с вторичными и составными индексами. Обе библиотеки распространяются под лицензиями одобренными OSI. Поддерживаются все актуальные операционные системы и архитектуры, включая российский Эльбрус.
Исторически libmdbx является глубокой переработкой СУБД LMDB и превосходит своего прародителя по надёжности, набору возможностей и производительности. В сравнении с LMDB, в libmdbx большое внимание уделяется качеству кода, стабильной работе API, тестированию и автоматическим проверкам. Поставляется утилита проверки целостности структуры БД с некоторыми возможностями восстановления.
Технологически libmdbx предлагает ACID, строгую сериализацию изменений и неблокирующее чтение с линейным масштабированием по ядрам ЦПУ. Поддерживается автокомпактификация, автоматическое управление размером БД, оценка объёма выборок по диапазонам (range query estimation). С 2016 года проекты финансируется компанией Positive Technologies и c 2017 года используется в её продуктах.
Для libmdbx предлагается C++ API, а также поддерживаемые энтузиастками привязки к языкам Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. Для libfpta публично доступно только описание API в виде заголовочного файла C/C++.
Основные новшества, доработки и исправления, добавленные после предыдущей новости от 9 мая:
  • Обеспечена возможность воспроизводимых сборок.
  • Устранена ошибка, из-за которой при очень редком стечении обстоятельств в ходе фиксации транзакции могло происходить зацикливание/зависание. Проблема выявлена специалистами Positive Tecnologies при внутреннем тестировании собственных продуктов.
  • Доработаны тесты и расширены тестовые сценарии для проверки всех достижимых не изоморфных состояний дерева страниц и содержимого GC внутри БД.
  • В C++ API исправлен лишний "noexcept", добавлены дополнительные перегрузки для метода "cursor::erase()", реализация буферов избавлена от использования "std::string" для обеспечения выравнивания (актуально для CLANG libstdc++).
  • Устранён регресс в алгоритме спиллинга грязных страниц (избирательное вытеснение изменённых страниц БД) проявлявшейся редкой неожиданной ошибкой MDBX_PROBLEM при изменении данных в огромных транзакциях.
  • Проведена проверка фазингом с добавлением ряда проверок для обеспечения стабильности при намеренном повреждении БД.
  • Устранены незначительные предупреждения UndefinedBehaviorSanitizer и Coverity Scan issues.
  • Исправлена проверка устаревшего и уже неиспользуемого внутреннего флага "P_DIRTY" во вложенных страницах внутри образов БД созданных старыми версиями библиотеки.
  • В скриптах CMake доработан поиск компонентов компилятора необходимых для LTO (link-time optimization).
  • Максимальное кол-во одновременных читателей увеличено до 32767.
  • Ускорена работа при использовании Valgrind и AddressSanitizer.
  • На Windows устранено рекурсивное использование SRW-lock при работе в режиме MDBX_NOTLS (без использования thread local storage), исправлена генерация bootid в случае изменении системного времени, доработано детектирование WSL1 и WSL2, добавлена возможность открытия БД на Plan 9 смонтированной посредством DrvFS.
  • Суммарно внесено более 160 изменений в 57 файлов, добавлено ~5000 строк, удалено ~2500.
Отдельно хочется поблагодарить команду проекта Erigon (экосистема Ethereum) за помощь в тестировании в экстремальных сценариях использования. Показательно, что за пять месяцев с момента выхода libmdbx v0.10.0, при объёме БД 1-2 Тб в каждой инсталляции Erigon, от пользователей поступило только три сообщения о повреждении БД, которые произошли из-за внешних причин: в двух случаях причиной были сбои ОЗУ, в третьем ошибка обнуления данных в специфической конфигурации подсистемы хранения с использованием BTRFS.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_libmdbx, #_database
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 07:20
Часовой пояс: UTC + 5