Новая стратегия развития проекта libmdbx
Проект libmdbx представил новую стратегию развития, одновременно объявив о смене модели разработки и распространения кода. Исходный код libmdbx останется открытым и с качественной бесплатной поддержкой, но теперь разработка будет вестись внутри команды с публикацией результата только в амальгамированной форме. Стратегия развития декларирует движение к давно анонсированному проекту MithrilDB, с поддержкой нескольких форматов БД под фасадом общего API. Явно заявляется о поддержке старых БД, пока это будет необходимо пользователям.
Если раньше в публичном доступе был весь исходный код, включая тестовый фреймфорк и внутреннюю документацию, то теперь доступен только амальгамированный исходный код библиотеки. Обещано, что вскоре будет представлен расширенный пример использования C++ API, который одновременно будет простым smoke-тестом. Причины достаточно подробны объяснены в комментариях встроенных в слайды презентации. В частности, декларируется желание поставлять библиотеку в максимального готовом виде, без зависимостей, необходимых только для её разработки и глубокого тестирования.
Кроме раскрытия уже разрабатываемых и запланированных возможностей libmdbx, в опубликованной стратегии анонсированы основные черты нового формата БД и обеспечиваемые им возможности:
Усовершенствованное префиксное дерево, наложенное поверх дерева Меркла, образуемого базовой структурой B+tree. Структура будет похожа на Patricia Tree, но буквальный формат и технические детали совсем другие.
Поддержка длинных ключей и сжатие префиксов. Сквозная нумерация элементов для точной оценки мощности выборов. Поддержка больших BLOB-объектов в потоковом режиме.
Опциональное использование отображения файла БД в память. Поддержка шифрования и сжатия данных.
Предоставление нового API с интенсивным использованием SWIG для автоматической генерации привязок к востребованным языкам программирования.
- Поддержка репликации реализуемой с учётом опыта полученного при разработке ReOpenLDAP.
В ходе очной презентации также было заявлено о намерении попробовать совместить внутри MithrilDB несколько реализаций написанных на разных языках, в частности C, С++ и Rust, обеспечив при этом прозрачное перекрёстное взаимодействие (приложения на С/С++ смогут использовать реализацию на Rust и наоборот).
Из разрабатываемых сейчас возможностей, которые станут доступны в ближайшее время, стоит отметить «Поиск с кэшированием». Суть которого в хранении указателей на данные непосредственно внутрь БД, с предельно быстрой проверки их актуальности. При этом поиск от корня дерева к листовым страницам останавливается, как только доходит до страницы, не изменённой после последней проверки соответствующего элемента кэша. Таким образом, вместо полного поиска по B-tree, выполняется минимально возможное количество действий, в зависимости об объёма изменений после последнего получения данных. Всё вместе обеспечивает кардинальное ускорение до нескольких десятков тысяч раз. В худшем же случае такой поиск с «кэшированием» не медленнее обычного.
Источник: http://www.opennet.ru/opennews/art.shtml? num=64522
© OpenNet
