Основные понятия:

  • Хаб (Hub):
    Таблица, представляющая основную сущность или бизнес-объект, например, клиент, продукт или заказ. В хабе обычно содержатся стабильные и уникальные бизнес-идентификаторы.
  • Линк (Link):
    Таблица, представляющая связь между хабами. Она моделирует отношения, например, какой клиент сделал какой заказ.
  • Сателлит (Satellite):
    Таблица, привязанная к хабу или линку, которая хранит дополнительные атрибуты и временные данные.

Зачем нужны сателлиты?

  • Отделение изменяемых данных от неизменяемых: Хаб содержит уникальные данные, которые редко изменяются. Все остальные данные, которые могут меняться (например, имя клиента, его адрес или статус заказа), переносятся в сателлиты.
  • Историзация данных: Сателлиты поддерживают версионность, т.е. они хранят не только актуальное состояние данных, но и их историю. Это достигается за счет добавления колонок:
    • Дата начала действия версии (start_date).
    • Дата окончания действия версии (end_date).
    • Индикатор актуальной версии (например, is_current).
  • Разделение областей данных: Сателлиты позволяют разделить разные типы данных для более удобного хранения и обработки. Например:
    • Один сателлит может хранить адресную информацию.
    • Другой — контактные данные.
    • Третий — финансовую информацию
  • Облегчение загрузки данных: При использовании ETL (Extract, Transform, Load) сателлиты упрощают инкрементальную загрузку, так как можно обрабатывать только те записи, которые изменились.
  • Масштабируемость: За счет хранения данных в разных таблицах (сателлитах), можно легче управлять растущим объемом данных и делать хранилище более модульным.

Преимущества сателлитных таблиц:

  • Поддержка аудита: История изменений атрибутов сохраняется, что критично для аналитики и соблюдения нормативных требований.
  • Управление большими данными: Разделение на хабы, линки и сателлиты делает модель гибкой и позволяет обрабатывать большие объемы данных с меньшими затратами.
  • Удобство для интеграции: Модель легко расширяется за счет добавления новых сателлитов без изменения существующей структуры.

Недостатки:

  • Увеличение количества таблиц и сложности структуры.
  • Медленные запросы из-за множества JOIN-операций.
  • Увеличение объема данных из-за историзации.
  • Сложные и трудоемкие ETL/ELT процессы.
  • Требуется опыт и квалификация для работы с моделью.
  • Ограниченная поддержка в BI-инструментах.
  • Модель может быть избыточной для небольших проектов.

Пример

Предположим, у нас есть сущность “Клиент”. В Data Vault модель она будет представлена следующим образом:

Хаб (Hub_Client):

client_id | business_key | load_date | record_source

Сателлит (Satellite_Client_Demographics):

client_id | name | birth_date | start_date | end_date | is_current | record_source

Сателлит (Satellite_Client_Address):

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
Автор::

Дополнительные материалы

Дочерние заметки