После трех месяцев разработки состоялся выпуск библиотеки 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 не оказывают какого-либо заметного влияния.
Основные новшества, доработки и исправления, добавленные после прошлого выпуска:
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=55114
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:ath` в iOS <= 13.0, сборка с таргетированием на старые версии Windows и т.д.
- Суммарно внесено более 200 изменений в 66 файлов, добавлено ~6500 строк, удалено ~4500.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=55114