**Сателлитные таблицы (Satellite Tables)** — это концепция, часто используемая в методологии **Data Vault**, которая предназначена для моделирования данных в хранилищах. Их основная цель — хранение атрибутов, которые связаны с основными объектами (например, сущностями или событиями), но имеют динамическую природу или часто изменяются.
![[../../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 модель она будет представлена следующим образом: