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

Авторские права
Авторские права на данный материал принадлежат Шустикову Владимиру Александровичу и Виндюкову Евгению Владиславовичу.
Размещение материала в открытых источниках допускается только в рамках цитирования с обязательным указанием источника.
Полное или частичное размещение данного материала на платных ресурсах, а также его коммерческое использование запрещено без письменного разрешения правообладателей.
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_key | customer_id | load_dts | record_source |
|---|---|---|---|
| HK_001 | CUST_001 | 2024-01-01 10:00:00 | CRM |
| HK_002 | CUST_002 | 2024-01-01 10:05:00 | CRM |
Link таблица (пример)
| link_order_customer_key | hub_customer_key | hub_order_key | load_dts | record_source |
|---|---|---|---|---|
| LK_001 | HK_001 | HO_1001 | 2024-01-02 12:00:00 | ERP |
| LK_002 | HK_002 | HO_1002 | 2024-01-02 12:05:00 | ERP |
Satellite таблица (пример)
| hub_customer_key | customer_name | customer_status | load_dts | record_source |
|---|---|---|---|---|
| HK_001 | Иван Петров | active | 2024-01-01 10:00:00 | CRM |
| HK_001 | Иван Петров | inactive | 2024-03-01 09:00:00 | CRM |
Мини-пример логики
Представим сущности: Клиент и Заказ.
- В Hub клиента пишем
customer_id. - В Hub заказа пишем
order_id. - В Link пишем связь
customer_id + order_id. - В 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
Чаще всего архитектура выглядит так:
- Staging — сырой слой, данные как есть из источников
- Raw Vault — Hub/Link/Sat, максимально нейтральная модель
- Business Vault — вычисления, бизнес-правила, агрегаты
- Data Marts — витрины под конкретные отчёты
Такой подход позволяет разделить техническую историю и бизнес-логику.
Плюсы Data Vault
- устойчивость к изменениям источников
- полная историчность
- легко добавлять новые источники
- чёткая трассировка, откуда взялись данные
Минусы Data Vault
- сложнее понять без практики
- больше таблиц и связей
- требует дисциплины при загрузке
Когда использовать Data Vault
Data Vault подходит, если:
- много источников данных
- модель часто меняется
- важна история
- хранилище должно жить долго и развиваться
Если задача маленькая или временная — Data Vault может быть избыточен.
Итог
Data Vault — это не просто набор таблиц, а способ построить устойчивое, расширяемое хранилище, которое выдержит рост компании и изменения бизнес-логики.
Если хочешь расти как Data Engineer — понимать Data Vault обязательно.