docs(ingestion): упрощены объяснения источников и приема данных
Зачем: помочь начинающему инженеру проследить событие и версию заказа от генератора до хранилища, включая ошибки и повторные поступления. Что: обновлены вводная генератора, справочники приема и модели заказа, разделы хранилища и комментарии SQL и дага. Сохранены технические условия; исполняемый код, схемы и поведение стенда не изменены. Проверка: make lint, git diff --check, 142 локальные ссылки и справка CLI. SQL без комментариев и Python AST без строк документации совпали с исходными. Генерация данных и сброс состояния не выполнялись. Refs #250
This commit is contained in:
1 parent
83434102d5
commit
75f28fe99f
13 files changed
+663
-974
No files matched your search
+11
-21
@@ -1,26 +1,16 @@
|
||||
-- STG: матвью приёма — из чтеца в таблицу STG.
|
||||
-- Прием событий из Kafka в STG.
|
||||
-- Подключение этого представления запускает чтение топика. Поэтому файл 40
|
||||
-- применяется после таблиц и представлений разбора из файлов 20 и 30:
|
||||
-- иначе часть сообщений сохранится в STG, но не попадет в ODS.
|
||||
--
|
||||
-- Номер 40, а не 11, и пропуск в нумерации намеренный. Файлы 20-ods-tables.sql
|
||||
-- и 30-ods-views.sql приносит #43, и матвью приёма обязана создаваться после
|
||||
-- матвью разбора: Kafka-движок начинает читать топик ровно тогда, когда к нему
|
||||
-- привязывают первую матвью. Создай её раньше разбора — и всё, что доедет в
|
||||
-- зазоре, ляжет в STG и не попадёт в ODS никуда, ни в событие, ни в ошибки.
|
||||
-- На пустом топике зазор безвреден, поэтому первый прогон о нём не скажет:
|
||||
-- проснётся он, когда тома ClickHouse снесены, а данные Kafka целы, то есть на
|
||||
-- обычной отладке. Нумерацию здесь не «приводить в порядок».
|
||||
-- Запись через stg.hits_raw_dist распределяет сообщения по ключу таблицы.
|
||||
-- Она фоновая; возможную потерю при сбое описывает раздел «Приём»
|
||||
-- в docs/architecture/storage.md.
|
||||
--
|
||||
-- Пишем в stg.hits_raw_dist, а не в локальную таблицу: раскладку по шардам
|
||||
-- обязан определять ключ шардирования, а не то, какая нода случайно читала
|
||||
-- топик. Вставка при этом фоновая — окно потери принято осознанно, довод
|
||||
-- целиком в docs/architecture/storage.md, раздел «Приём».
|
||||
--
|
||||
-- Служебные колонки заполняются выражением здесь, а не DEFAULT в таблице.
|
||||
-- Для consumer_host это обязательно: проверено на стенде 5 августа 2026 года —
|
||||
-- DEFAULT hostName() вычисляется на шарде-получателе и назвал бы не ту ноду,
|
||||
-- которая читала топик. hostName() в SELECT снимается на вставляющей ноде,
|
||||
-- то есть отвечает ровно на нужный вопрос.
|
||||
--
|
||||
-- Порядок колонок в SELECT совпадает с порядком в целевой таблице.
|
||||
-- Сведения о доставке вычисляются здесь, на ноде чтения Kafka.
|
||||
-- DEFAULT hostName() только в локальной таблице назвал бы шард-получатель.
|
||||
-- Порядок SELECT совпадает с порядком колонок цели.
|
||||
|
||||
CREATE MATERIALIZED VIEW IF NOT EXISTS stg.hits_raw_mv ON CLUSTER clickstream_cluster
|
||||
TO stg.hits_raw_dist
|
||||
AS
|
||||
|
||||
Reference in new issue
Block a user