diff --git a/docs/architecture/dm.md b/docs/architecture/dm.md index d59881d..7371074 100644 --- a/docs/architecture/dm.md +++ b/docs/architecture/dm.md @@ -18,7 +18,7 @@ Правило выбрано учебной целью, а не ценой запроса. На объёмах стенда представлениями обошлось бы всё: условия сквозь цепочку представлений проходят ([исследование](../research/2026-08-22-view-predicate-pushdown.md)). -Но агрегат, пересобираемый партициями, — производственный паттерн, ради +Но пересборка агрегатов конвейером — производственный паттерн, ради которого стенд и строится, а пара «таблица рядом с представлением» показывает: форма — решение по роли витрины, у одного слоя законны обе. @@ -50,7 +50,7 @@ ## Ритм пересборки -Партиция витрины пересобирается, пока может измениться её источник, — +День витрины пересобирается, пока может измениться его источник, — поэтому ритмов три, по числу источников: - **от событий и сессий** — день замерзает сразу; пересборка догоняет @@ -63,8 +63,8 @@ Поэтому `daily_traffic` наследует у своего источника и ритм, и механику: полный пересчёт всех дней каждый прогон в `ReplacingMergeTree(_load_ts)`, -как у самой карты. Дневные партиции ей не положены — строка в дне одна, и -партиция на строку плодила бы микрокуски на ровном месте. Пересчёт дешёв: +как у самой карты. Дневных партиций у неё нет: партиция — единица замены, +а эта витрина заменяется только целиком. Пересчёт дешёв: витрина читает сессии и карту локальным соединением по ключу ко-локации. Пересчитывать точечно только затронутые дни не из чего: для этого надо знать, какие связки новые, а полный пересчёт карты этот след затирает — @@ -103,16 +103,15 @@ Airflow. Партиция — день данных; прогон звена DQ константы не прибиваются. В `dq_summary` даг не пишет: он инструмент лабы, а не история качества конвейера. -Приём проверен на соседнем учебном стенде Airflow + Greenplum: валидационный даг с -группами проверок по слоям давал менти обратную связь по каждому шагу -домашки, не трогая рабочий конвейер. +Приём проверен на соседнем учебном стенде Airflow + Greenplum: +валидационный даг с группами проверок по слоям давал менти обратную связь +по каждому шагу домашки, не трогая рабочий конвейер. ## Остаётся нарезке - Имена задач `dm_transform`, звена DQ и дага самопроверки. - Ключи шардирования остальных материализованных витрин — вместе с их - DDL; правило - партиции-донора — в [доке хранилища](storage.md). + DDL; правило партиции-донора — в [доке хранилища](storage.md). - Тексты учебных заданий и точный список проверок обоих контуров. - Механика сверки A+C в SQL — рамка в спеке, разделы 4 и 7. @@ -138,7 +137,7 @@ Airflow. Партиция — день данных; прогон звена DQ и протаскивает обратно «знание на дату», отвергнутое развилкой карты (#133). - **Инкрементальный пересчёт затронутых дней по `first_matched_at`.** - Производственный ход, но на объёмах стенда он экономит неизмеримое, а + Производственный ход, но на объёмах стенда его экономия неизмерима, а след новых связок требует вернуть колонку, выкинутую в #133. Стал лабой повышенной сложности — issue #149. - **Superset поверх DDS без слоя DM.** Терялся бы урок «витрина — контракт diff --git a/docs/architecture/etl.md b/docs/architecture/etl.md index cd8adea..4ce9370 100644 --- a/docs/architecture/etl.md +++ b/docs/architecture/etl.md @@ -63,7 +63,9 @@ вставка через Distributed раскладывает строки по шардам, — затем `REPLACE PARTITION` на кластере атомарно подменяет кусок каждого шарда. Эта механика — часть самих трансформаций и строится этапом 4: без неё дневной -прогон не повторяем. +прогон не повторяем. Сущности, пересчитываемые целиком, идемпотентны и без +замены: полная перезапись в `ReplacingMergeTree` — так живут карта +идентичностей и витрина `daily_traffic` ([слой DM](dm.md)). ## Не входит