Идея лабы: инкрементальное обновление daily_traffic от first_matched_at #149

Closed
opened 2026-08-25 13:32:15 +03:00 by ddmitry · 1 comment
Owner

Идея из развилки #135 карты #127 (обсуждение горячего ревью), отложена до
проектирования лаб. Лаба повышенной сложности.

Идея

Стенд пересчитывает dm.daily_traffic целиком каждый прогон — вслед за
картой идентичностей, которая тоже пересчитывается целиком и не хранит,
когда связка появилась. Менти строит инкрементальную альтернативу:
восстанавливает момент первой связи first_matched_at (как в #145 —
минимум времени purchase-события, соединённого с заказом), по свежим
связкам находит затронутые дни визитов и точечно пересчитывает только их.

Учебный результат

Разница между пересчётом «по позиции» (партиционная переобработка) и
пересчётом «по изменениям» (инкремент): чтобы обновлять меньше, нужно
хранить больше — след изменений, который полная перезагрузка затирает.
Контроль корректности бесплатный: результат обязан совпасть с эталонной
витриной стенда.

Контекст

  • #145 — родственная лаба: там момент связи выводится запросом, здесь он
    работает на инкремент.
  • Техдолг #2 — общий вопрос инкрементальности поверх партиционной
    переобработки; стенд его не берёт, руки заняты студентами.
  • Резолюция #135 — почему стенд выбрал полный пересчёт.
Идея из развилки #135 карты #127 (обсуждение горячего ревью), отложена до проектирования лаб. Лаба повышенной сложности. ## Идея Стенд пересчитывает `dm.daily_traffic` целиком каждый прогон — вслед за картой идентичностей, которая тоже пересчитывается целиком и не хранит, когда связка появилась. Менти строит инкрементальную альтернативу: восстанавливает момент первой связи `first_matched_at` (как в #145 — минимум времени `purchase`-события, соединённого с заказом), по свежим связкам находит затронутые дни визитов и точечно пересчитывает только их. ## Учебный результат Разница между пересчётом «по позиции» (партиционная переобработка) и пересчётом «по изменениям» (инкремент): чтобы обновлять меньше, нужно хранить больше — след изменений, который полная перезагрузка затирает. Контроль корректности бесплатный: результат обязан совпасть с эталонной витриной стенда. ## Контекст - #145 — родственная лаба: там момент связи выводится запросом, здесь он работает на инкремент. - Техдолг #2 — общий вопрос инкрементальности поверх партиционной переобработки; стенд его не берёт, руки заняты студентами. - Резолюция #135 — почему стенд выбрал полный пересчёт.
Author
Owner

Резолюция спеки программы лаб: вошла в ветку «Инженерия стенда» как необязательная лаба «Инкремент против пересборки» с пометкой «повышенная сложность». docs/specs/2026-09-01-labs-program.md (спека принята владельцем, #202, PR #205)

Резолюция спеки программы лаб: вошла в ветку «Инженерия стенда» как необязательная лаба «Инкремент против пересборки» с пометкой «повышенная сложность». docs/specs/2026-09-01-labs-program.md (спека принята владельцем, #202, PR #205)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#149