--- aliases: - Таблицы сателиты tags: - maturity/🌱 date: 2024-11-25 --- ![[../../meta/files/images/Снимок экрана 2024-11-25 в 13.57.23.png]] **Основные понятия:** - **Хаб (Hub):** Таблица, представляющая основную сущность или бизнес-объект, например, клиент, продукт или заказ. В хабе обычно содержатся стабильные и уникальные бизнес-идентификаторы. - **Линк (Link):** Таблица, представляющая связь между хабами. Она моделирует отношения, например, какой клиент сделал какой заказ. - **Сателлит (Satellite):** Таблица, привязанная к хабу или линку, которая хранит дополнительные атрибуты и временные данные. **Зачем нужны сателлиты?** - **Отделение изменяемых данных от неизменяемых:** Хаб содержит уникальные данные, которые редко изменяются. Все остальные данные, которые могут меняться (например, имя клиента, его адрес или статус заказа), переносятся в сателлиты. - **Историзация данных:** Сателлиты поддерживают версионность, т.е. они хранят не только актуальное состояние данных, но и их историю. Это достигается за счет добавления колонок: - Дата начала действия версии (`start_date`). - Дата окончания действия версии (`end_date`). - Индикатор актуальной версии (например, `is_current`). - **Разделение областей данных:** Сателлиты позволяют разделить разные типы данных для более удобного хранения и обработки. Например: - Один сателлит может хранить адресную информацию. - Другой — контактные данные. - Третий — финансовую информацию - **Облегчение загрузки данных:** При использовании ETL (Extract, Transform, Load) сателлиты упрощают инкрементальную загрузку, так как можно обрабатывать только те записи, которые изменились. - **Масштабируемость:** За счет хранения данных в разных таблицах (сателлитах), можно легче управлять растущим объемом данных и делать хранилище более модульным. **Преимущества сателлитных таблиц:** - **Поддержка аудита:** История изменений атрибутов сохраняется, что критично для аналитики и соблюдения нормативных требований. - **Управление большими данными:** Разделение на хабы, линки и сателлиты делает модель гибкой и позволяет обрабатывать большие объемы данных с меньшими затратами. - **Удобство для интеграции:** Модель легко расширяется за счет добавления новых сателлитов без изменения существующей структуры. **Недостатки:** - Увеличение количества таблиц и сложности структуры. - Медленные запросы из-за множества JOIN-операций. - Увеличение объема данных из-за историзации. - Сложные и трудоемкие ETL/ELT процессы. - Требуется опыт и квалификация для работы с моделью. - Ограниченная поддержка в BI-инструментах. - Модель может быть избыточной для небольших проектов. ## Пример Предположим, у нас есть сущность "Клиент". В Data Vault модель она будет представлена следующим образом: Хаб (Hub_Client): ```plaintext client_id | business_key | load_date | record_source ``` Сателлит (Satellite_Client_Demographics): ```plaintext client_id | name | birth_date | start_date | end_date | is_current | record_source ``` Сателлит (Satellite_Client_Address): ```plaintext client_id | address | city | country | start_date | end_date | is_current | record_source ``` Здесь: - **Hub_Client** хранит уникальный идентификатор клиента (например, ID из CRM). - **Satellite_Client_Demographics** хранит демографические данные клиента, которые могут изменяться (например, имя при смене паспорта). - **Satellite_Client_Address** хранит адресные данные клиента, включая исторические изменения адресов. *** ## Мета информация **Область**:: **Родитель**:: **Источник**:: **Создана**:: [[2024-11-25]] **Автор**:: ### Дополнительные материалы - [Введение в Data Vault / Хабр](https://habr.com/ru/articles/348188/) ### Дочерние заметки