Files
nis2/project-tasks/p21-dbsp-feldera.md
T
2026-09-06 19:26:12 +03:00

5.1 KiB
Raw Blame History

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 слишком тяжёл, обязательная часть использует самостоятельно реализованный набор операторов и проверяет эквивалентность результата пакетному вычислению.

Содержательные направления

  • запросы, данные и пакетный пересчёт.
  • инкрементальный конвейер и проверка корректности.
  • профилирование состояния, границы применимости и новый режим.

Возможное продолжение

Исследовать перекос ключей, размер пакета обновлений, поздние исправления, стоимость хранения состояния либо запрос, для которого автоматическая инкрементализация даёт неожиданно слабый результат.