5.1 KiB
5.1 KiB
P21. DBSP/Feldera: инкрементальное выполнение запросов
- Версия и дата проверки: 1.0, 05.09.2026.
- Статус: готово к назначению.
Статья и исходные материалы
- Основная статья: Mihai Budiu и соавт. — DBSP: Automatic Incremental View Maintenance for Rich Query Languages. PVLDB 2023.
- Кратко о статье: Повторное выполнение полного запроса после каждого изменения данных тратит работу на уже известный результат. DBSP задаёт алгебраическую модель потоковых вычислений и преобразует пакетную программу в инкрементальную, которая обновляет представление по дельте входа и состояния. В проекте такой план сравнивается с полным пересчётом при разных размерах обновлений.
- Почему результат актуален: DBSP перестал быть только теоретическим прототипом и развивается внутри Feldera. Механизм автоматической инкрементализации актуален для совмещения потоковой обработки, materialized views и аналитики над меняющимися данными.
- Артефакты и данные: идеи статьи реализованы в активно развиваемой системе Feldera, объединяющей SQL-компилятор и потоковую среду выполнения. Зафиксированная ревизия:
feldera/feldera@ab74092c6a0c(MIT для открытой редакции; лицензии сторонних компонентов и данных проверяются отдельно).
Обязательный результат
- Проверяемый вопрос или утверждение: инкрементальная программа выполняет работу, зависящую преимущественно от размера изменения и затронутого состояния, и поэтому выигрывает у полного пересчёта при достаточно малых обновлениях.
- Технический результат: Реализовать в Feldera или собственном малом инкрементальном движке зафиксированные запросы с фильтрацией, агрегацией и соединением. Добавить пакетный пересчёт как baseline, общий генератор обновлений и автоматическую проверку эквивалентности результатов после каждой серии.
- Эксперимент: на сериях обновлений сравнить инкрементальное выполнение с полным пересчётом для запросов с фильтрацией, агрегацией и соединением, измеряя время, память и порог, после которого преимущество исчезает.
- Границы выводов: преимущество инкрементального выполнения проверяется для выбранных операторов, запросов и серий обновлений; результат не характеризует полный SQL и распределённую производительность Feldera на производственных данных.
- Ресурсный профиль: локально, CPU, 8–16 ГБ памяти. Если полный стек Feldera слишком тяжёл, обязательная часть использует самостоятельно реализованный набор операторов и проверяет эквивалентность результата пакетному вычислению.
Содержательные направления
- запросы, данные и пакетный пересчёт.
- инкрементальный конвейер и проверка корректности.
- профилирование состояния, границы применимости и новый режим.
Возможное продолжение
Исследовать перекос ключей, размер пакета обновлений, поздние исправления, стоимость хранения состояния либо запрос, для которого автоматическая инкрементализация даёт неожиданно слабый результат.