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

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

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

Создавать темы news_bot ® написал(а)
14-Май-2021 01:32

После трех месяцев разработки состоялся выпуск библиотеки libmdbx 0.10.0 (MDBX) с реализацией высокопроизводительной компактной встраиваемой базы данных класса ключ-значение. Код libmdbx распространяется под лицензией OpenLDAP Public License. libmdbx является глубокой переработкой СУБД LMDB и по заявлению разработчиков превосходит своего прародителя по надежности, набору возможностей и производительности. Заявляется, что libmdbx до 20% быстрее LMDB в CRUD сценариях и до 30% быстрее, если при сборке libmdbx отключить внутренний контроль до сопоставимого с LMDB уровня.
Libmdbx предлагает ACID, строгую сериализацию изменений и неблокирующее чтение с линейным масштабированием по ядрам CPU. В libmdbx большое внимание уделяется качеству кода, стабильной работе API, тестированию и автоматическим проверкам. Поддерживается автокомпактификация, автоматическое управление размером БД, единый формат БД для 32-битных и 64-битных сборок, оценка объёма выборок по диапазонам (range query estimation).
Поставляется утилита проверки целостности структуры БД с некоторыми возможностями восстановления. C 2016 года проект финансируется компанией Positive Technologies и c 2017 года используется в её продуктах, а введённые правительством США санкции против Positive Technologies не оказывают какого-либо заметного влияния.
Основные новшества, доработки и исправления, добавленные после прошлого выпуска:
  • Доступны привязка для Ruby от Mahlon E. Smith и пробная версия привязок для Python от Noel Kuntze, обновлены привязки для GoLang от Алексея Шарова.
  • Для режима "MDBX_WRITEMAP", когда данные БД изменяются непосредственно в ОЗУ, реализовано "прозрачное сохранение" на диск измененных страниц БД. Теперь, после завершения каждой операции, такие страницы сразу полностью готовы для записи, и ядро ОС может самостоятельно сбрасывать их на диск, а фиксация транзакции не потребует их модификации. В результате в нагруженных сценариях с недостатком ОЗУ объем дисковых операций может сокращаться до 2 раз.
  • Реализовано вытеснение давно неиспользуемых теневых копий измененных страниц, с предпочтением вытеснения страниц с большими/длинными значениями, которые в подавляющем большинстве сценариев изменяются только один раз за транзакцию. В результате уменьшается объем обмена с диском и увеличивается производительность в сценариях с очень большими транзакциями.
  • Реализован "умный" режим разделения страниц при вставке ключей. Теперь при вставке упорядоченных последовательностей автоматически обеспечивается полное заполнение страниц, а в остальных случаях более оптимальная балансировка дерева. В результате, в среднем, страницы БД заполняются более оптимально, а B-дерево получается более сбалансированным, что положительно влияет на производительность.
  • Добавлена статистика операций со страницами, что позволяет точно оценивать стоимость модифицирующих операций с БД.
  • Устранено более десятка недочётов и ошибок, в том числе: решены проблемы со сборкой посредством MinGW, использования `std::filesystem::path` в iOS <= 13.0, сборка с таргетированием на старые версии Windows и т.д.
  • Суммарно внесено более 200 изменений в 66 файлах, добавлено ~6500 строк, удалено ~4500.
Отдельно хочется отметить выбор проектом Turbo-Geth (турбо-форк Go-Ethereum) libmdbx в качестве нового бекэнда хранения, а также поблагодарить команду проекта (в особенности Алексея Шарова, Артёма Воротникова и Алексея Ахунова) за большую помощь в тестировании в экстремальных сценариях использования. В частности, так был обнаружен и устранен дефект в управлении упреждающим чтением/кэшированием, который приводил к деградации производительности в сложно-воспроизводимых сценариях с большими БД.
===========
Источник:
OpenNet.RU
===========

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

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

Текущее время: 16-Май 02:57
Часовой пояс: UTC + 5