Модель заказа в DDS: зерно, связи, материализация #130

Closed
opened 2026-08-22 10:26:21 +03:00 by ddmitry · 1 comment
Owner

Part of #127.

Вопрос

Каким объектом заказ живёт в DDS: зерно (заказ, версия заказа,
позиция?), состав атрибутов и связи (события purchase,
identity_map), движок, ключи и шардирование, как читается версионный
ods.order_v — и судьба служебных колонок: _load_id выше ODS
решается здесь, при названном читателе (наследство #85, закрыт wontfix).

Спека отложила это сюда явно: «зерно, связи и материализация
проектируются на этапе DDS» (§7); читатели модели — витрина выручки и
сверка A+C (§4).

Сначала прочитать

  • docs/architecture/orders/ (README и ingestion);
  • docs/architecture/storage.md, раздел «Версии заказов»;
  • ADR 0010 (версии заказов в ODS), резолюция #85;
  • мастер-спека, разделы 2, 4 и 7.
Part of #127. ## Вопрос Каким объектом заказ живёт в DDS: зерно (заказ, версия заказа, позиция?), состав атрибутов и связи (события `purchase`, `identity_map`), движок, ключи и шардирование, как читается версионный `ods.order_v` — и судьба служебных колонок: `_load_id` выше ODS решается здесь, при названном читателе (наследство #85, закрыт wontfix). Спека отложила это сюда явно: «зерно, связи и материализация проектируются на этапе DDS» (§7); читатели модели — витрина выручки и сверка A+C (§4). ## Сначала прочитать - `docs/architecture/orders/` (README и ingestion); - `docs/architecture/storage.md`, раздел «Версии заказов»; - ADR 0010 (версии заказов в ODS), резолюция #85; - мастер-спека, разделы 2, 4 и 7.
ddmitry added the wayfinder:grilling label 2026-08-22 10:26:24 +03:00
ddmitry added a new dependency 2026-08-22 10:27:09 +03:00
ddmitry added a new dependency 2026-08-22 10:27:11 +03:00
ddmitry self-assigned this 2026-08-24 15:05:54 +03:00
Author
Owner

Резолюция развилки #130 карты #127.

Спроектирована модель заказа в DDS и заведён дом architecture-доков этапа 4 — набор docs/architecture/dds/ по ADR 0011 (README — карта модели и правила слоя, файл на сущность).

Решение коротко:

  • зерно — заказ в текущем состоянии, ключ order_id; истории версий нет (читателя нет, ODS её не обещает);
  • позиции — типизированные массивы в строке заказа, разбор items один раз на границе ODS → DDS; ARRAY JOIN остаётся витрине;
  • времена — в поясе счётчика, день заказа — колонка order_date;
  • движок — MergeTree без версий, партиция по order_date, ORDER BY order_id, шардирование cityHash64(order_id); идемпотентность — замена партиции (Replacing менти уже отыграл в ODS);
  • служебные колонки — свои _load_id/_load_ts запуска трансформации; ярлыки ODS не переезжают (произвол ярлыков, замер #137) — этим закрыто наследство #85;
  • механика запуска и замены на кластере — #134, контур DQ — отдельный разговор этапа 4.

Дока: docs/architecture/dds/order.md. Отклонённые варианты — там же.

Резолюция развилки #130 карты #127. Спроектирована модель заказа в DDS и заведён дом architecture-доков этапа 4 — набор `docs/architecture/dds/` по ADR 0011 (README — карта модели и правила слоя, файл на сущность). Решение коротко: - зерно — заказ в текущем состоянии, ключ `order_id`; истории версий нет (читателя нет, ODS её не обещает); - позиции — типизированные массивы в строке заказа, разбор `items` один раз на границе ODS → DDS; `ARRAY JOIN` остаётся витрине; - времена — в поясе счётчика, день заказа — колонка `order_date`; - движок — `MergeTree` без версий, партиция по `order_date`, `ORDER BY order_id`, шардирование `cityHash64(order_id)`; идемпотентность — замена партиции (Replacing менти уже отыграл в ODS); - служебные колонки — свои `_load_id`/`_load_ts` запуска трансформации; ярлыки ODS не переезжают (произвол ярлыков, замер #137) — этим закрыто наследство #85; - механика запуска и замены на кластере — #134, контур DQ — отдельный разговор этапа 4. Дока: `docs/architecture/dds/order.md`. Отклонённые варианты — там же.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: ddmitry/clickstream-data-platform#130