Привет! Давайте разберёмся с тем, что такое линки (Links) в Data Vault и зачем они нужны. Если хабы отвечают за хранение уникальных сущностей, то линки связывают эти сущности между собой, создавая целостную картину данных.
Что такое линк (Link)?
Линк — это таблица, которая фиксирует отношения между двумя или более хабами. Каждый линк описывает связь между бизнес-сущностями, сохраняя историю изменений и обеспечивая масштабируемость модели.
Основные принципы линков
- Связь через хабы:
Линк не содержит бизнес-ключей напрямую. Вместо этого он ссылается на surrogate keys из соответствующих хабов. - Множественные связи:
Линк может связывать два или более хаба, что позволяет моделировать сложные отношения между сущностями. - Историчность:
Линк сохраняет информацию о том, когда и откуда была загружена связь. - Отсутствие атрибутов:
Линки содержат только ключи хабов и метаданные. Все атрибуты связи (например, тип или статус) выносятся в сателлиты.
Пример: Линк "Пассажиры и рейсы"
Представьте, что мы строим хранилище для авиакомпании. Нам нужно сохранить информацию о том, какие пассажиры летали на каких рейсах.
У нас есть два хаба:
- Hub_Passengers: Хаб с уникальными идентификаторами пассажиров.
- Hub_Flights: Хаб с уникальными идентификаторами рейсов.
Пример Hub_Passengers
Hub_Passengers — таблица для хранения уникальных идентификаторов пассажиров:
Surrogate Key | Business Key | Load Date | Source System |
---|---|---|---|
1 | 1234567890 | 2025-01-03 | BookingSystem |
2 | CUST001 | 2025-01-03 | CRMSystem |
- Surrogate Key: Уникальный ключ пассажира в хабе.
- Business Key: Уникальный идентификатор пассажира из источника данных.
- Load Date: Дата загрузки записи.
- Source System: Источник данных, откуда поступил ключ.
Пример Hub_Flights
Hub_Flights — таблица для хранения уникальных идентификаторов рейсов:
Surrogate Key | Business Key | Load Date | Source System |
---|---|---|---|
101 | FLIGHT123 | 2025-01-03 | FlightSystem |
102 | FLIGHT456 | 2025-01-03 | BookingSystem |
103 | FLIGHT789 | 2025-01-04 | FlightSystem |
- Surrogate Key: Уникальный ключ рейса в хабе.
- Business Key: Уникальный идентификатор рейса из источника данных.
- Load Date: Дата загрузки записи.
- Source System: Источник данных.
Для связи этих двух сущностей создаётся линк:
Структура Link_PassengerFlights
Link Key | Hub Passenger Key | Hub Flight Key | Load Date | Source System |
---|---|---|---|---|
1 | 1 | 101 | 2025-01-03 | BookingSystem |
2 | 2 | 102 | 2025-01-03 | CRMSystem |
3 | 1 | 103 | 2025-01-04 | FlightSystem |
-
Link Key: Уникальный ключ для записи в линке.
-
Hub Passenger Key: Ссылка на хаб с пассажирами.
-
Hub Flight Key: Ссылка на хаб с рейсами.
-
Load Date: Дата загрузки записи.
-
Source System: Источник данных.
-
1-й линк: Пассажир с ключом
1
(1234567890) из BookingSystem летал рейсомFLIGHT123
(101). -
2-й линк: Пассажир с ключом
2
(CUST001) из CRMSystem летал рейсомFLIGHT456
(102). -
3-й линк: Тот же пассажир с ключом
1
летал ещё одним рейсомFLIGHT789
(103).
Итог
Эти примеры демонстрируют, как хабы и линки взаимодействуют:
- Хабы концентрируются на уникальных бизнес-ключах.
- Линки фиксируют отношения между сущностями из хабов, создавая связную модель данных.