Documentation
🔗 Data Vault
Что такое Data Vault

Куратор раздела

Виндюков Евгений
Виндюков Евгений

Авторские права

Авторские права на данный материал принадлежат Шустикову Владимиру Александровичу и Виндюкову Евгению Владиславовичу.

Размещение материала в открытых источниках допускается только в рамках цитирования с обязательным указанием источника.

Полное или частичное размещение данного материала на платных ресурсах, а также его коммерческое использование запрещено без письменного разрешения правообладателей.


Data Vault

Data Vault — это подход к моделированию хранилища данных, который делает акцент на:

  • устойчивости к изменению источников;
  • полной историчности;
  • прозрачности загрузок;
  • разделении «связей» и «описаний».

Проще говоря, Data Vault помогает связать сущности, сохранить историю и не ломаться, когда бизнес меняется.

Data Vault


Зачем вообще нужен Data Vault

В реальных проектах источники данных меняются постоянно: добавляются новые поля, меняются правила, появляются новые системы.

Если строить витрины «в лоб», то каждый такой апдейт может ломать модель. Data Vault решает это так:

  • ключи и связи живут отдельно;
  • атрибуты живут отдельно;
  • история изменений сохраняется всегда.

Результат — стабильное хранилище, где изменения источника редко приводят к пересборке всей модели.


Основные элементы Data Vault

Важно понимать: Data Vault — это способ раскладывать данные по таблицам. Именно поэтому Hub, Link и Satellite — это реальные таблицы в базе, каждая со своей ролью.

Data Vault состоит из трёх типов таблиц:

Hub (Хаб)

Hub — это таблица, которая хранит уникальные бизнес-ключи сущности.

Примеры:

  • клиент (customer_id из CRM)
  • продукт (product_code)
  • заказ (order_number)

Хаб почти не меняется во времени — он фиксирует факт существования сущности.

Link (Линк)

Link — это таблица, которая хранит связи между хабами.

Примеры:

  • клиент сделал заказ
  • заказ содержит продукт
  • клиент закреплён за менеджером

Link позволяет сохранять историю связей и легко добавлять новые типы отношений.

Satellite (Сателлит)

Satellite — это таблица, которая хранит атрибуты сущности или связи, которые могут меняться.

Примеры:

  • имя клиента, телефон, статус
  • сумма заказа, адрес доставки
  • признак активности

Именно сателлиты дают полную историчность.


Как выглядят таблицы в Data Vault

Ниже пример, как это может выглядеть в реальных таблицах. Названия полей и типы могут отличаться на проекте — важна логика.

Hub таблица (пример)

hub_customer_keycustomer_idload_dtsrecord_source
HK_001CUST_0012024-01-01 10:00:00CRM
HK_002CUST_0022024-01-01 10:05:00CRM

Link таблица (пример)

link_order_customer_keyhub_customer_keyhub_order_keyload_dtsrecord_source
LK_001HK_001HO_10012024-01-02 12:00:00ERP
LK_002HK_002HO_10022024-01-02 12:05:00ERP

Satellite таблица (пример)

hub_customer_keycustomer_namecustomer_statusload_dtsrecord_source
HK_001Иван Петровactive2024-01-01 10:00:00CRM
HK_001Иван Петровinactive2024-03-01 09:00:00CRM

Мини-пример логики

Представим сущности: Клиент и Заказ.

  1. В Hub клиента пишем customer_id.
  2. В Hub заказа пишем order_id.
  3. В Link пишем связь customer_id + order_id.
  4. В Satellite кладём атрибуты: имя клиента, статус заказа и т.д.

Таким образом, при смене имени клиента меняется только сателлит — хабы и линк остаются стабильными.


Data Vault 1.0 и Data Vault 2.0

Data Vault 1.0

  • классические Hub/Link/Satellite
  • фокус на моделировании
  • ограничения по производительности

Data Vault 2.0

  • добавлены Hash Keys для ускорения загрузок
    Пояснение: вместо длинных натуральных ключей используется хэш (например, MD5/SHA), что ускоряет сравнение и join-ы.
    Преимущество: быстрее загрузка и связывание данных, меньше нагрузки на индексы.

  • рекомендованы Hub/Link/Sat Naming Standards
    Пояснение: единые правила именования таблиц и полей (например, HUB_CUSTOMER, LNK_ORDER_CUSTOMER, SAT_CUSTOMER_DETAILS).
    Преимущество: проще поддержка, меньше ошибок, быстрее онбординг новых участников команды.

  • практики параллельной загрузки
    Пояснение: хабы, линки и сателлиты грузятся независимо друг от друга там, где нет прямых зависимостей.
    Преимущество: сокращается время загрузки, проще масштабировать пайплайны.

  • введён слой Business Vault

Сегодня на практике почти всегда используют именно 2.0.


Слои хранилища в Data Vault

Чаще всего архитектура выглядит так:

  1. Staging — сырой слой, данные как есть из источников
  2. Raw Vault — Hub/Link/Sat, максимально нейтральная модель
  3. Business Vault — вычисления, бизнес-правила, агрегаты
  4. Data Marts — витрины под конкретные отчёты

Такой подход позволяет разделить техническую историю и бизнес-логику.


Плюсы Data Vault

  • устойчивость к изменениям источников
  • полная историчность
  • легко добавлять новые источники
  • чёткая трассировка, откуда взялись данные

Минусы Data Vault

  • сложнее понять без практики
  • больше таблиц и связей
  • требует дисциплины при загрузке

Когда использовать Data Vault

Data Vault подходит, если:

  • много источников данных
  • модель часто меняется
  • важна история
  • хранилище должно жить долго и развиваться

Если задача маленькая или временная — Data Vault может быть избыточен.


Итог

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

Если хочешь расти как Data Engineer — понимать Data Vault обязательно.