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
+12
-24
@@ -1,28 +1,16 @@
|
||||
-- DDS: подмена одного дня заказов собранной партицией двойника.
|
||||
-- Замена одного дня DDS готовой партицией донора.
|
||||
-- Повтор при неизменном источнике сохраняет деловые данные без дублей.
|
||||
--
|
||||
-- Это и есть идемпотентность слоя. Повтор прогона безопасен, а «дыхание»
|
||||
-- статусов внутри окна выражается сменой всей партиции, а не правкой строк.
|
||||
-- ON CLUSTER выполняет замену на обеих нодах по локальным таблицам.
|
||||
-- Донор и цель имеют одинаковую структуру и ключ шардирования
|
||||
-- (sql/ddl/45-dds-tables.sql); REPLACE PARTITION строки не перераспределяет.
|
||||
-- Замена атомарна внутри шарда. Между заменами на разных шардах читатель
|
||||
-- может увидеть часть прежних и часть новых данных. После сбоя этот период
|
||||
-- длится до успешного повтора. Пустая партиция донора удаляет день из цели.
|
||||
--
|
||||
-- Замена идёт по локальным таблицам, шард за шардом: ON CLUSTER рассылает её
|
||||
-- на обе ноды, а по Distributed то же самое не работает — операции с
|
||||
-- партициями отвечают кодом 48 (docs/architecture/storage.md, «Что
|
||||
-- проверено»). Правильность пошардовой замены держится на том, что двойник
|
||||
-- шардирован тем же ключом, что цель, — см. sql/ddl/45-dds-tables.sql.
|
||||
--
|
||||
-- Отсюда граница обещания: атомарность здесь пошардовая. Внутри шарда подмена
|
||||
-- мгновенна — читатель видит либо прежний день целиком, либо новый; но две
|
||||
-- локальные замены независимы, и в зазоре между ними чтение через Distributed
|
||||
-- соберёт ответ из нового дня одного шарда и прежнего дня другого. Зазор
|
||||
-- короткий, а отказ одной из двух замен растягивает его до повторного прогона.
|
||||
--
|
||||
-- Пустая партиция двойника — законный случай, а не сбой: день, в котором
|
||||
-- заказов нет, снимает день из цели, и слой перестаёт показывать то, чего в
|
||||
-- источнике больше нет.
|
||||
--
|
||||
-- День подставляет Jinja, а не параметр ClickHouse: в ALTER … PARTITION
|
||||
-- сервер параметров не подставляет — замерено, отвечает синтаксической
|
||||
-- ошибкой. Общее правило репозитория «параметры передаются отдельно, а не
|
||||
-- строкой» здесь не нарушено по существу: значение пришло из ответа самого
|
||||
-- ClickHouse на запрос объёма, а не снаружи стенда.
|
||||
-- День подставляет Jinja: параметры ClickHouse в ALTER ... PARTITION
|
||||
-- не поддерживаются в закрепленной версии 26.3. Значение получено
|
||||
-- из результата order_scope.sql; замер — docs/architecture/storage.md.
|
||||
|
||||
ALTER TABLE dds.order_rep ON CLUSTER clickstream_cluster
|
||||
REPLACE PARTITION '{{ params.day }}' FROM dds.order_stage_rep;
|
||||
Reference in new issue
Block a user