Когда мы начинаем моделирование по методологии Data Vault, первой и основной составляющей модели становятся хабы (Hubs). Хаб — это сердце нашей модели, так как он представляет ключевые бизнес-сущности, которые мы хотим зафиксировать в хранилище данных.
Хаб (Hub) — это таблица, которая отвечает за уникальную идентификацию бизнес-сущностей в хранилище данных. Каждая запись в хабе представляет собой уникальный бизнес-ключ, поступивший из одного или нескольких источников.
Основные принципы работы с хабами:
-
Минимализм данных:
Хаб содержит только:- Уникальный бизнес-ключ (или surrogate key).
- Метаданные о дате загрузки данных (Load Date).
- Источник данных (Source System), если это требуется.
Все остальные данные (например, атрибуты сущности или связи между сущностями) хранятся в сателлитах и линках.
-
Гибкость и масштабируемость:
Хабы остаются неизменными, даже если добавляются новые источники или изменяются бизнес-правила. -
Фокус на уникальности:
Один бизнес-ключ всегда соответствует одной записи в хабе, независимо от того, из какого источника пришли данные.
Пример: Хаб "Пассажиры"
Представьте, что мы создаём хранилище данных для авиакомпании. Нам нужно учесть данные о пассажирах из различных систем:
- Система бронирования билетов (BookingSystem).
- CRM-система (CRMSystem).
- Система управления рейсами (FlightSystem).
Каждая из этих систем содержит уникальные бизнес-ключи для одного и того же пассажира:
- Номер паспорта из BookingSystem.
- Уникальный клиентский ID из CRMSystem.
- Номер брони (PNR) из FlightSystem.
Структура Hub_Passengers
Хаб "Пассажиры" хранит только уникальные бизнес-ключи и метаданные:
Surrogate Key | Business Key | Load Date | Source System |
---|---|---|---|
1 | 1234567890 | 2025-01-03 | BookingSystem |
1 | CUST001 | 2025-01-03 | CRMSystem |
1 | PNR12345 | 2025-01-03 | FlightSystem |
- Surrogate Key: Единый ключ, который связывает разные бизнес-ключи с одним пассажиром.
- Business Key: Уникальные идентификаторы пассажира в разных системах.
- Load Date: Дата, когда информация была загружена в хаб.
- Source System: Источник данных.
Атрибуты и связи:
Забежим немного вперёд...
Вся дополнительная информация (например, фамилия, дата рождения, контакты) о пассажире хранится в сателлитах, а отношения между пассажирами и их бизнес-ключами — в линках.
Пример таблицы сателлита:
Hub Key | Surname | Date of Birth | Source System | Load Date | End Date |
---|---|---|---|---|---|
1 | Smith | 1990-05-10 | CRMSystem | 2025-01-03 | NULL |
- В сателлите сохраняются все атрибуты сущности.
- Поддерживается историчность данных (через Load Date и End Date).
Тут может возникнуть вопрос: "почему Date of Birth ты отнёс в сателлит ? этот параметр не может измениться у клиента"
Ты абсолютно прав — Date of Birth (Дата рождения) — это неизменяемый атрибут клиента. На первый взгляд, его действительно можно было бы разместить в хабе, потому что он имеет статический характер. Однако в методологии Data Vault существуют определённые правила, которые объясняют, почему такие атрибуты лучше размещать в сателлитах:
1. Централизация бизнес-ключей в хабе
Хаб должен содержать только:
- Уникальный бизнес-ключ.
- Системный surrogate key (если используется).
- Метаданные для загрузки (Load Date и Source System, если это необходимо).
Все остальные атрибуты, даже неизменяемые, относятся к бизнес-данным, а не к идентификации сущности. По правилам Data Vault, все бизнес-данные (даже неизменяемые) помещаются в сателлиты.
2. Гибкость и масштабируемость
Хранение неизменяемых атрибутов в сателлите даёт возможность:
- Добавлять или модифицировать структуру данных без изменения хаба.
- Сохранять оригинальную информацию, даже если она была некорректной при первоначальной загрузке (например, дата рождения могла быть ошибочно введена).
3. Историчность и контроль качества данных
Даже неизменяемые атрибуты могут быть исправлены, если источник допустил ошибку. Например:
- Клиент мог указать неверную дату рождения.
- Источник данных мог предоставить некорректную информацию.
4. Разделение ответственности
Data Vault создаёт чёткое разделение между:
- Идентификацией сущностей (хабы).
- Хранением атрибутов (сателлиты).
Даже неизменяемые атрибуты лучше держать отдельно, чтобы хаб оставался максимально чистым и стабильным.
Когда дату рождения можно оставить в хабе?
В редких случаях, если:
- Вы точно знаете, что дата рождения всегда корректна.
- Вся архитектура Data Vault упрощена, и вы готовы принять на себя риск потерять историчность для неизменяемых данных.
Вывод
Хотя дата рождения практически не изменяется, её размещение в сателлите соответствует принципам Data Vault: минимализм в хабах, поддержка историчности и гибкость модели. Такой подход делает вашу архитектуру более масштабируемой и устойчивой к изменениям данных.
Заключение:
Хабы — это основа Data Vault. Они минималистичны, масштабируемы и сосредоточены на уникальной идентификации сущностей. Вся бизнес-логика, атрибуты и связи выносятся в сателлиты и линки, что позволяет строить гибкие, долговечные хранилища данных.