Files
nis2/project-tasks/p21-dbsp-feldera.md
T

7.3 KiB
Raw Blame History

P21. DBSP/Feldera: инкрементальное выполнение запросов

  • Версия и дата проверки: 1.1, 07.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 предоставляет SQL-компилятор, инкрементальный движок, примеры и benchmarks, включая соединения и агрегации. Его разрешено использовать как сравниваемую систему и эталон; готовый движок не заменяет малую реализацию команды. Проверенные исходные материалы: проверка join и aggregate, benchmarks.

Обязательный результат

  • Проверяемый вопрос или утверждение: инкрементальная программа выполняет работу, зависящую преимущественно от размера изменения и затронутого состояния, и поэтому выигрывает у полного пересчёта при достаточно малых обновлениях.
  • Технический результат: Независимо реализовать малый инкрементальный движок для зафиксированных запросов с фильтрацией, агрегацией и соединением; хотя бы один запрос должен сочетать соединение и агрегацию. Добавить Feldera и полный пакетный пересчёт как сравниваемые варианты, общий генератор обновлений и автоматическую проверку эквивалентности после каждой серии.
  • Обязательное приращение команды: Независимо реализовать инкрементальное обслуживание хотя бы одного запроса, сочетающего соединение и агрегацию. Сопоставить его с Feldera и полным пакетным пересчётом на одинаковых обновлениях, проверяя эквивалентность после каждой серии.
  • Эксперимент: Сравнить собственное инкрементальное выполнение, Feldera и полный пересчёт на одинаковых запросах и сериях обновлений. Измерить время и память, проверить эквивалентность и определить режимы, в которых преимущество инкрементального подхода исчезает.
  • Границы выводов: преимущество инкрементального выполнения проверяется для выбранных операторов, запросов и серий обновлений; результат не характеризует полный SQL и распределённую производительность Feldera на производственных данных.
  • Ресурсный профиль: Локально, CPU, 8–16 ГБ памяти. При высокой стоимости стека Feldera уменьшить данные и запросы для контрольного сравнения трёх вариантов; основные серии собственного движка и полного пересчёта можно провести отдельно на большем объёме. Независимая реализация запроса с соединением и агрегацией сохраняется.

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

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

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

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

История уточнений

Дата Версия Основание Изменение обязательного результата
07.09.2026 1.1 Статический просмотр закреплённого артефакта: готовые сценарии частично покрывают задание. Собственный инкрементальный запрос с соединением и агрегацией обязателен; Feldera и полный пересчёт служат сравнению.