Проект libmdbx представил новую стратегию развития, одновременно объявив о смене модели разработки и распространения кода. Исходный код libmdbx останется открытым и с качественной бесплатной поддержкой, но теперь разработка будет вестись внутри команды с публикацией результата только в амальгамированной форме. Стратегия развития декларирует движение к давно анонсированному проекту MithrilDB, с поддержкой нескольких форматов БД под фасадом общего API. Явно заявляется о поддержке старых БД, пока это будет необходимо пользователям.
Если раньше в публичном доступе был весь исходный код, включая тестовый фреймфорк и внутреннюю документацию, то теперь доступен только амальгамированный исходный код библиотеки. Обещано, что вскоре будет представлен расширенный пример использования C++ API, который одновременно будет простым smoke-тестом. Причины достаточно подробны объяснены в комментариях встроенных в слайды презентации. В частности, декларируется желание поставлять библиотеку в максимального готовом виде, без зависимостей, необходимых только для её разработки и глубокого тестирования.
Кроме раскрытия уже разрабатываемых и запланированных возможностей libmdbx, в опубликованной стратегии анонсированы основные черты нового формата БД и обеспечиваемые им возможности:
В ходе очной презентации также было заявлено о намерении попробовать совместить внутри MithrilDB несколько реализаций написанных на разных языках, в частности C, С++ и Rust, обеспечив при этом прозрачное перекрёстное взаимодействие (приложения на С/С++ смогут использовать реализацию на Rust и наоборот).
Из разрабатываемых сейчас возможностей, которые станут доступны в ближайшее время, стоит отметить «Поиск с кэшированием». Суть которого в хранении указателей на данные непосредственно внутрь БД, с предельно быстрой проверки их актуальности. При этом поиск от корня дерева к листовым страницам останавливается, как только доходит до страницы, не изменённой после последней проверки соответствующего элемента кэша. Таким образом, вместо полного поиска по B-tree, выполняется минимально возможное количество действий, в зависимости об объёма изменений после последнего получения данных. Всё вместе обеспечивает кардинальное ускорение до нескольких десятков тысяч раз. В худшем же случае такой поиск с «кэшированием» не медленнее обычного.
Источник: opennet.ru
