Модель данных: широкое событие и второй источник #18
Notifications
Due Date
No due date set.
Blocks
#14 Кластер: где живёт опыт менти и какая топология
ddmitry/clickstream-ch-kafka-superset-demo
Reference: ddmitry/clickstream-ch-kafka-superset-demo#18
Reference in New Issue
Block a user
Part of #10
Question
Решить целевую модель данных стенда: переходить ли с четырёх топиков
(склейка по event_id/click_id) на широкое событие кликстрима
(Snowplow-подобное, одна Kafka-таблица) — и чем сохранить интеграционную
учебную ценность.
Рабочие гипотезы владельца и координатора:
(все джойны DDS/DM становятся локальными на будущем кластере);
и/или каталог товаров) вместо «осколков одного трекера»; сверка
«клиентский purchase против бэкенд-заказа» — учебный сюжет;
и определяет форму purchase;
исполняется после фичи mentee-path.
Фактура: границы применимости стенда (#11), цена кластера (#13),
ресурсный бюджет (#12).
Тело восстановлено дословно из транскрипта сессии; перенос с GitHub 2026-07-26.
Резолюция (дословный перенос с GitHub, автор dementev-dev):
Ответ
Да, переходим на широкое событие. Четыре топика-осколка уходят;
модель одна, целевая (двух моделей «для дефолта и для кластера» не держим).
Мотив — реализм: менти должен узнавать в стенде тот кликстрим, с которым
столкнётся на работе. Кластер — побочный довод, не причина.
Форма события — по образцу Яндекс Метрики (фактура — #27,
docs/research/2026-07-26-yandex-clickstream-format.md): плоское широкоеядро плюс параллельные массивы для многозначного (товары, цели, свои
параметры) плюс одно сырое поле-строка
ecommerce. Вложенных объектов встиле Segment/Amplitude не делаем. Таксономия
event_typeвместо «толькоpageview». Точный состав полей — в спеку (#17), опора — таблица 53 полей
из исследования.
Интеграционная учебная ценность (взамен склейки осколков):
учебный сюжет — сверка клиентского purchase против заказа, расхождения,
отмены. Форма события заказа и сверка — тикет #15.
раз в модельный день, с опозданиями и отменами. Одна труба, два режима —
как в бою, где батчи льют в брокер из удобства. Открывает темы, которых
у менти нет после курсовой airflow-greenplum: согласование потока и
батча, поздние данные, кросс-источниковые проверки, сенсоры/Datasets
(DAG слоя DDS ждёт дневной батч).
тот же файл использует генератор — расхождений нет по построению).
Даёт
dictGetи политику обновления словаря.Ландшафт итогом: Kafka — единственная труба (кликстрим потоком,
заказы пачками); Postgres остаётся только служебной базой Airflow;
смешанность ландшафта выражена режимами и частотами, а не второй трубой.
Отклонено по дороге:
словарь из БД) — анти-приём: нагрузка на прод и связность; в документе
о реализме зафиксировать как явный учебный пункт «в бою — реплика или
выгрузка»;
следующего стенда (Lakehouse); остаются теорией («настоящий Logs API —
это скачанный TSV»);
Честность к Яндексу: у Метрики кликстрим — батч (Logs API), потока в
общем доступе нет; наша Kafka — учебная замена, так и называем в
docs/generator-realism.md.Что это открывает дальше: #15 (purchase и форма заказа) и #14
(кластер: с широким событием склейка осколков исчезает, ключ шардирования
решается там) разблокированы; новые приёмы стенда — ARRAY JOIN, словари,
сенсоры/Datasets, кросс-источниковый DQ; кандидат — версии записи через
Sign (механика CollapsingMergeTree из потока Метрики Про).