# Слой DDS: бизнес-модель хранилища Устройство детального слоя: сущности, которыми хранилище говорит с витринами, их связи и правила слоя. Набор собирается развилками карты #127 (этап 4) и правится по мере постройки. Рамки заданы мастер-спекой [«Боевой реализм стенда (v2)»](../../specs/2026-07-30-stand-v2-realism.md): карта таблиц и витрины — раздел 7, сверка — раздел 4, склейка идентичностей — раздел 5. Дом выбран на первой развилке карты: резолюции этапа 4 живут здесь, по хранилищную сторону границы «источник | хранилище». Устройство источников остаётся их собственным наборам ([заказы бэкенда](../orders/README.md)) — генератор переносим и о нашем DDS не знает. ## Карта модели Целостность модели — связи и ко-локация — живёт в этом разделе; файлы сущностей держат глубину и на карту ссылаются. - **Заказ** (`dds.order`) — физическая сущность: одна строка — заказ в текущем состоянии, позиции массивами в строке, наполняется заменой партиций — [модель заказа](order.md). - **Сессия** (`dds.session`) — зерно и правила сборки решает развилка #131. - **Событие** (`dds.event_v`) — контракт над ODS, а не копия: язык бизнес-модели событию даёт развилка #132. - **Карта идентичностей** (`dds.identity_map`) — кука ↔ пользователь магазина; сборку решает развилка #133. Связи держатся двумя ключами моста (спека, разделы 4 и 5): `purchaseID[1]` события равен `order_id` заказа — по нему идут сверка и сборка склейки; `user_id` заказа связывает куки одного человека. Ко-локацию задаёт шардирование: события и карта идентичностей раскладываются одним выражением от куки, заказы — от `order_id`. Поэтому обогащение витрин склейкой локально, а сверка и сборка карты ходят через GLOBAL JOIN с обеими сторонами-подзапросами ([исследование соединений](../../research/2026-08-22-distributed-join.md)). ## Правила слоя - DDS обслуживает человека с дашбордом: время лежит в поясе счётчика, пересчёт — один раз при наполнении слоя ([дока хранилища](../storage.md), «Часовые пояса»). - Служебные колонки — координаты собственной загрузки слоя; чужие ярлыки не переносятся, а спрашиваются у их слоя по ключу сущности. Вывод правила и цепочка расследования — [модель заказа](order.md). ## Открытые решения - Сессии, контракт `dds.event_v`, сборка `dds.identity_map` — развилки #131–#133 карты #127. - Запуск трансформаций и механика замены партиций на кластере — #134 и этап 5. - Витрины DM — #135. ## Родословная Дом набора и первая сущность собраны развилкой #130 карты #127; форма набора — [ADR 0011](../../adr/0011-component-docs.md).