Проект libSQL начал развитие форка СУБД SQLite

@OpenNet
Проектом libSQL предпринята попытка создания форка СУБД SQLite, ориентированного на открытость для участия разработчиков из сообщества и продвижение новшеств, выходящих за рамки изначального назначения SQLite. В качестве причины создания форка называется достаточно жёсткая политика SQLite в отношении приёма стороннего кода от сообщества при наличии потребности в продвижении улучшений. Код форка распространяется под лицензией MIT (SQLite поставляется как общественное достояние). Создатели форка намерены поддерживать совместимость с основным SQLite и придерживаться того же уровня качества, сохраняя набор тестовых сценариев и постепенно расширяя его по мере добавления новшеств. Для разработки новой функциональности предлагается предоставить возможность использования языка Rust, сохраняя при этом базовую часть на языке Си. В качестве примера похожей инициативы, оказавшейся успешной и со временем преобразившей основной проект, упоминается форк qemu-kvm, созданный для добавления поддержки виртуализации в QEMU в ответ на новые потребности индустрии. Среди инициаторов проекта Пекка Энберг (Pekka Enberg) и Глаубер Коста (Glauber Costa), ранее занимавшиеся разработкой ядра Linux, ОС OSv и СУБД Scylladb, а ныне переключившиеся на создание платформы ChiselStrike и СУБД Chiselstore (распределённый вариант SQLite). В случае изменения политики основного проекта SQLite в отношении приёма патчей, разработчики libSQL намерены перенести накопленные изменения в основной проект и подключиться к его развитию. В текущем виде SQLite для исключения нарушения лицензий отказывается принимать сторонние патчи от людей, не подписавших соглашение о передаче кода как общественного достояния. Среди идей по возможному расширению функциональности SQLite упоминаются:
  • Интеграция средств для построения распределённых баз данных, работающих на уровне самой библиотеки, а не через репликацию изменений в файловой системе (LiteFS), и без развития отдельного продукта (dqlite, rqlite, ChiselStore).
  • Оптимизация для использования асинхронных API, таких как предоставляемый ядром Linux интерфейс io_uring.
  • Возможность использования SQLite в ядре Linux, по аналогии с поддержкой в ядре виртуальной машины eBPF, для ситуаций, когда требуется сохранять из ядра наборы данных, не умещающиеся в оперативную память.
  • Поддержка определяемых пользователем функций, написанных на любых языках программирования и скомпилированных в промежуточный код WebAssembly.

Анализ
×
Энберг Пекка