Привет! Давайте разберёмся с тем, что такое линки (Links) в Data Vault и зачем они нужны. Если хабы отвечают за хранение уникальных сущностей, то линки связывают эти сущности между собой, создавая целостную картину данных.


Что такое линк (Link)?

Линк — это таблица, которая фиксирует отношения между двумя или более хабами. Каждый линк описывает связь между бизнес-сущностями, сохраняя историю изменений и обеспечивая масштабируемость модели.


Основные принципы линков

  1. Связь через хабы:
    Линк не содержит бизнес-ключей напрямую. Вместо этого он ссылается на surrogate keys из соответствующих хабов.
  2. Множественные связи:
    Линк может связывать два или более хаба, что позволяет моделировать сложные отношения между сущностями.
  3. Историчность:
    Линк сохраняет информацию о том, когда и откуда была загружена связь.
  4. Отсутствие атрибутов:
    Линки содержат только ключи хабов и метаданные. Все атрибуты связи (например, тип или статус) выносятся в сателлиты.

Пример: Линк "Пассажиры и рейсы"

Представьте, что мы строим хранилище для авиакомпании. Нам нужно сохранить информацию о том, какие пассажиры летали на каких рейсах.

У нас есть два хаба:

  • 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).

Итог

Эти примеры демонстрируют, как хабы и линки взаимодействуют:

  • Хабы концентрируются на уникальных бизнес-ключах.
  • Линки фиксируют отношения между сущностями из хабов, создавая связную модель данных.