From ee55515b5488aae6f8b05c8ef215aa3740688f83 Mon Sep 17 00:00:00 2001 From: Dmitrii Date: Fri, 7 Nov 2025 09:58:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B2=D0=B8=D1=82=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B8=D0=B4=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dwh-modeling-ds.md | 116 +++++++++++++++++++++++++++++++++------------ 1 file changed, 85 insertions(+), 31 deletions(-) diff --git a/dwh-modeling-ds.md b/dwh-modeling-ds.md index 936c982..7d099e5 100644 --- a/dwh-modeling-ds.md +++ b/dwh-modeling-ds.md @@ -2,7 +2,7 @@ --- -### **Структура статьи про хранилище данных ** +# **Структура статьи про хранилище данных ** 1. Введение. Проблема аналитики в OLTP 2. Учебный пример. Интернет-магазин @@ -17,7 +17,7 @@ --- -#### **1. Введение: Аналитика — это не оперативный учет** +# **1. Введение: Аналитика — это не оперативный учет** OLTP - Оперативный учет - CRM @@ -40,7 +40,7 @@ OLTP - Сложные JOIN -> Медленные отчеты -> Проблем --- -#### **2. Учебный пример: интернет-магазин** +# **2. Учебный пример: интернет-магазин** *(Оставляю вашу отличную ER-диаграмму без изменений)* @@ -51,11 +51,44 @@ erDiagram PRODUCT ||--o{ ORDER_ITEM : referenced PRODUCT ||--o{ PRICE : has PROMO ||--o{ ORDER_ITEM : applied + CUSTOMER { + int customer_id PK + string email + string phone + } + PRODUCT { + int product_id PK + string name + } + ORDER { + int order_id PK + date order_date + int customer_id FK + } + ORDER_ITEM { + int order_item_id PK + int order_id FK + int product_id FK + int qty + numeric price_at_sale + } + PRICE { + int product_id FK + date valid_from + date valid_to + numeric price + } + PROMO { + int promo_id PK + string code + } ``` +Описание примера текстом + --- -#### **3. Архитектура хранилища: зачем делить на слои?** +# **3. Архитектура хранилища: зачем делить на слои?** ```mermaid flowchart TD @@ -96,7 +129,7 @@ flowchart TD --- -#### **4. Путешествие данных по слоям** +## **4. Путешествие данных по слоям** ```mermaid flowchart LR @@ -127,9 +160,26 @@ flowchart LR DDS --> DM ``` +### 4.1 STG (Staging/Bronze) + +**Коротко**: «как пришло». Идемпотентность, дедупликация, неизменяемость/переигрузка. + +### 4.2 ODS (Operational Data Store/Silver) + +**Коротко**: чистка и выравнивание типов, базовая унификация кодов, ещё без тяжёлой бизнес-логики. +Несколько примеров из учебного примера + +### 4.3 DDS (Integrated/Conformed Layer) + +**Коротко**: интеграция источников, общие справочники, SK/BK, SCD. Здесь уже начинаются модели данных. Какие модели испольуют. + +### 4.4 DM (Data Marts/Gold) + +**Коротко**: модели под задачи BI (звезда/снежинка). Агрегаты, материализации. + --- -#### **5. Базовые понятия: Факты, Измерения, Ключи** +## **5. Базовые понятия: Факты, Измерения, Ключи** ```mermaid erDiagram @@ -157,6 +207,8 @@ erDiagram } ``` +Что из базвой модели данных + **SCD Type 2 - Визуализация истории**: ```mermaid @@ -174,12 +226,19 @@ gantt section Санкт-Петербург, new_premium@email.com Версия 3 :active, 2023-10-01, 2024-12-31 ``` +Краткое описание текстом. Указание, что подробно про scd можно почитать в соседней статье SCD.md --- -#### **6. Модели данных для DDS** +## **6. Модели данных для DDS** -**Data Vault 2.0**: +Варианты, как можно было бы разложить в dds учебный пример - придумать. + +### 3NF + +### Снежинка + +### **Data Vault 2.0**: ```mermaid erDiagram @@ -215,6 +274,16 @@ erDiagram } ``` +Описание текстом про хабы, сателлиты, связи. +Показать, как учебную БД можно разложить по схеме Data Vault. +Сказить, что здесь DV рассмотрен обзорно + +Упомянуть про DV 1 + +## Anchor Modeling + +Кратко + **Сравнение моделей**: ```mermaid @@ -227,11 +296,19 @@ quadrantChart "Data Vault": [0.8, 0.8] "Anchor": [0.9, 0.9] ``` +Рассказать, что выбор модели для данных далеко не всегда однозначен, и является компромисснным. + +3NF - преимущества и недостатки +Снежинка - преимущества и недостатки +DV +Anchor Modeling --- #### **7. Практикум: собираем витрину** +Раздел мне не нравится, надо бы переработать. + ```mermaid flowchart TD A[Источники] --> STG @@ -274,29 +351,6 @@ GROUP BY d.date, p.product_name, c.customer_segment; --- -#### **8. Выбор модели: дерево решений** - -```mermaid -flowchart TD - Start[Выбор модели DDS] --> Q1{Количество источников?} - - Q1 -->|Один источник| Q2{Требования к истории?} - Q1 -->|Несколько источников| Q3{Частота изменений схемы?} - - Q2 -->|Простая история| Model1[Звезда/Снежинка] - Q2 -->|Полная аудируемая история| Model2[Data Vault] - - Q3 -->|Редко| Model3[3NF] - Q3 -->|Часто| Model4[Data Vault] - - Model1 --> Final[Рекомендация] - Model2 --> Final - Model3 --> Final - Model4 --> Final -``` - ---- - #### **9. Эксплуатация: качество и эволюция** ```mermaid