Concept 01
What is Data Vault 2.0?
🧠 ELI5 — Explain Like I'm Five
Imagine your company has 50 different apps — a CRM, an ERP, a website, a mobile app. Every one of them knows about your "Customer" differently. The CRM calls it CustomerID. The ERP calls it AccountNumber. The website calls it UserID.
Data Vault 2.0 is a way to store all that data in one place without destroying what makes each source special. It keeps a permanent, never-changing record of everything that ever happened — like a black box flight recorder for your business. You can always go back and see exactly what each system said at any point in time.
📚 Analogy
Think of a traditional data warehouse like a finished museum — curated, clean, beautiful, but hard to add new exhibits without rearranging everything. Data Vault is like a modular storage warehouse: every item has a precise location, you can add new items without moving the old ones, and you can always trace where any item came from.
The Formal Definition
Data Vault 2.0 (DV2) is a system of business intelligence that includes modeling, methodology, and architecture. It was formalized by Dan Linstedt and Michael Olschimke. The "2.0" adds ensemble modeling, NoSQL patterns, automation, and big data integration on top of the original Data Vault 1.0 specification.
At its core, DV2 is a detail-oriented, historized, uniquely linked set of normalized tables that support one or more functional areas of business. It is designed to be:
- Flexible — Add new sources and entities without redesigning existing structures.
- Scalable — Load data in parallel without cross-table dependencies.
- Auditable — Every row has load timestamp and source system metadata. Nothing is ever deleted.
- Resilient — Source system changes rarely break the vault; they add to it.
💡
Key insight: Data Vault is not a reporting system — it is an integration layer. Business users never query the Raw Vault directly. Reports are built on top of an Information Mart that transforms vault data into familiar star schemas or wide tables.
The Four Layers of a DV2 Architecture
A complete Data Vault 2.0 implementation has four distinct layers:
- Staging Layer — Raw data lands here from source systems. No transformation except adding metadata (hash keys, load dates). This layer is typically truncated after each load.
- Raw Vault — The permanent, insert-only integration store. Contains Hubs, Links, and Satellites loaded directly from staging. Data is never changed here.
- Business Vault — Optional layer for derived data, soft business rules, PIT tables, and Bridge tables that make querying easier without breaking auditability.
- Information Marts — Purpose-built reporting tables (star schemas, flat tables, OLAP cubes) consumed by BI tools and data scientists.
Concept 02
History & Evolution
🧠 ELI5
Data Vault wasn't invented overnight. Dan Linstedt spent 10+ years working in enterprise data warehousing, watching Kimball and Inmon approaches struggle with agility and auditability. He quietly developed Data Vault internally at the NSA and other agencies through the 1990s, published the first articles in 2000, and kept refining it. Version 2.0 came in 2013 to address cloud, automation, and big data.
1990–1999
Internal Development at NSA & Affiliates
Dan Linstedt develops the core concepts while solving real large-scale data integration problems. The "hub and spoke" model emerges as a way to integrate many source systems reliably.
2000
First Public Articles Published
Linstedt publishes "Data Vault Series" articles, introducing the terms Hub, Link, and Satellite to the public data warehousing community.
2002
Data Vault 1.0 Formalized
The first formal specification of Data Vault modeling is published. Early adopters in financial services and telecommunications begin implementations.
2013
Data Vault 2.0 Released
Co-authored with Michael Olschimke, DV2 adds: ensemble modeling for NoSQL/BigData, automation and metadata-driven development, SEI/CMMI-compliant methodology, and agile sprint integration.
2015–2020
Cloud Adoption Accelerates
Snowflake, BigQuery, and Databricks emerge. Community develops cloud-native DV patterns. Tools like dbt, WhereScape, and Datavault4dbt gain traction.
2021–Present
Mainstream Enterprise Adoption
Data Vault becomes a standard pattern in enterprise data strategy. CDVDM (Certified Data Vault Data Modeler) certification goes mainstream. The community adds streaming vault and AI/ML integration patterns.
Concept 03
Data Vault vs Kimball vs Inmon
🧠 ELI5
There are three main schools of thought for enterprise data warehousing. Inmon says build a normalized 3NF corporate warehouse first, then derive data marts. Kimball says build denormalized star-schema data marts first, and the warehouse emerges from joining them. Data Vault says separate the integration concerns from the reporting concerns completely — store everything raw and historized in the vault, then build any kind of reporting layer on top.
◆ Data Vault 2.0
- Insert-only, never delete or update
- Full historical auditability built-in
- Highly agile: add sources without redesign
- Parallel loading: no cross-table dependency
- Separates integration from reporting layers
- Excellent for regulatory compliance
- Steeper initial learning curve
- Requires information mart layer for BI
◆ Kimball (Dimensional)
- Star schema: Facts + Dimensions
- Business users can query directly
- Fast query performance out of the box
- SCD2 for slowly changing dimensions
- Adding new sources requires refactoring
- Limited auditability; history via SCD only
- Well-understood; large skill pool
- Best for stable, well-defined domains
◆ Inmon (3NF EDW)
- Normalized 3NF enterprise data warehouse
- Single source of truth at corporate level
- Subject-area data marts derived from EDW
- High data quality and consistency
- Longest time-to-first-report
- Expensive to build and maintain
- Very structured; good for stable enterprises
- Less flexible for agile environments
| Criterion |
Data Vault 2.0 |
Kimball |
Inmon |
| Historical Auditability |
✓ Full, automatic |
Partial (SCD2) |
Partial |
| Agility (add sources) |
✓ Non-breaking |
Requires refactor |
Major effort |
| Parallel Loading |
✓ Yes, by design |
Limited |
Limited |
| BI Query Simplicity |
Needs Info Mart |
✓ Direct star schema |
Via data marts |
| Regulatory Compliance |
✓ Excellent |
Moderate |
Moderate |
| Time to First Value |
Medium |
✓ Fast |
Slow |
| Suitable for NoSQL/BigData |
✓ Yes (DV2) |
Limited |
Limited |
Practical guidance: Data Vault excels when you have many source systems, strict regulatory requirements, or a need for full historical lineage. Kimball remains the best choice for bounded, well-understood domains with a small number of sources where time-to-market is critical. Many enterprises use both — DV for the integration layer, star schema for the reporting layer.
Concept 04
The Three Pillars: Hub, Link, Satellite
🧠 ELI5
Data Vault uses exactly three types of tables. Hubs are for things (a Customer, a Product, an Order). Links are for relationships between things (a Customer placed an Order). Satellites are for descriptive details that change over time (the Customer's address, the Order's status). That's it. Every piece of data in your entire enterprise fits into one of these three buckets.
◯
HUB
Stores unique business keys. One row per unique entity. Never changes. No descriptive data.
🔗
LINK
Stores relationships between hubs. One row per unique combination of business keys. Insert-only.
📡
SATELLITE
Stores descriptive attributes. Many rows per hub/link key. Each row captures a point-in-time snapshot.
Hub: The Identity Store
A Hub stores the business key (BK) — the unique identifier that the business uses to refer to a real-world entity. For a Customer, that might be a CustomerID, a Tax Number, or an Email Address depending on your business context.
Hubs contain: a surrogate hash key, the business key, load date, and record source. Nothing else. No names, addresses, or any descriptive data — that all goes in Satellites.
-- HUB_CUSTOMER: stores unique customer business keys
CREATE TABLE HUB_CUSTOMER (
HUB_CUSTOMER_HK CHAR(32) NOT NULL, -- SHA-256 hash of business key
CUSTOMER_BK VARCHAR(50) NOT NULL, -- the actual business key
LOAD_DATE TIMESTAMP NOT NULL, -- when first seen
RECORD_SOURCE VARCHAR(100) NOT NULL, -- which system sent this
CONSTRAINT pk_hub_customer PRIMARY KEY (HUB_CUSTOMER_HK)
);
-- Insert: only new business keys (no duplicates ever)
INSERT INTO HUB_CUSTOMER
SELECT
MD5(UPPER(TRIM(src.CUSTOMER_ID))) AS HUB_CUSTOMER_HK,
src.CUSTOMER_ID AS CUSTOMER_BK,
src.LOAD_DATE,
src.RECORD_SOURCE
FROM STG_CUSTOMER src
WHERE NOT EXISTS (
SELECT 1 FROM HUB_CUSTOMER h
WHERE h.HUB_CUSTOMER_HK = MD5(UPPER(TRIM(src.CUSTOMER_ID)))
);
Link: The Relationship Store
A Link records that a relationship exists between two or more hubs. Links are the key to Data Vault's flexibility — you can change how entities relate without touching the hub tables.
Links contain: a surrogate hash key (hash of all participating hub keys), the participating hub hash keys (as foreign keys), load date, and record source. No descriptive data.
-- LINK_CUSTOMER_ORDER: customer placed an order
CREATE TABLE LINK_CUSTOMER_ORDER (
LINK_CUSTOMER_ORDER_HK CHAR(32) NOT NULL,
HUB_CUSTOMER_HK CHAR(32) NOT NULL, -- FK to HUB_CUSTOMER
HUB_ORDER_HK CHAR(32) NOT NULL, -- FK to HUB_ORDER
LOAD_DATE TIMESTAMP NOT NULL,
RECORD_SOURCE VARCHAR(100) NOT NULL,
CONSTRAINT pk_lnk_co PRIMARY KEY (LINK_CUSTOMER_ORDER_HK)
);
-- Hash key = hash of all participating business keys combined
INSERT INTO LINK_CUSTOMER_ORDER
SELECT
MD5(
COALESCE(UPPER(TRIM(src.CUSTOMER_ID)),'-1') ||
'|' ||
COALESCE(UPPER(TRIM(src.ORDER_ID)),'-1')
) AS LINK_CUSTOMER_ORDER_HK,
MD5(UPPER(TRIM(src.CUSTOMER_ID))) AS HUB_CUSTOMER_HK,
MD5(UPPER(TRIM(src.ORDER_ID))) AS HUB_ORDER_HK,
src.LOAD_DATE,
src.RECORD_SOURCE
FROM STG_ORDER src
WHERE NOT EXISTS (
SELECT 1 FROM LINK_CUSTOMER_ORDER l
WHERE l.LINK_CUSTOMER_ORDER_HK = MD5(
COALESCE(UPPER(TRIM(src.CUSTOMER_ID)),'-1') || '|' ||
COALESCE(UPPER(TRIM(src.ORDER_ID)),'-1')
)
);
Satellite: The Descriptive Store
Satellites hold all the descriptive context — the attributes that describe a hub or a link. Because satellites are insert-only and each row carries a load date, you automatically get a full history of every change to every attribute. This is how Data Vault achieves effortless historical auditability.
Satellites contain: the parent hub/link hash key, a load date, an optional load end date, a HashDiff (hash of payload columns for change detection), the record source, and the actual descriptive columns.
-- SAT_CUSTOMER_DEMOGRAPHICS: descriptive attributes for HUB_CUSTOMER
CREATE TABLE SAT_CUSTOMER_DEMOGRAPHICS (
HUB_CUSTOMER_HK CHAR(32) NOT NULL, -- FK to HUB_CUSTOMER
LOAD_DATE TIMESTAMP NOT NULL, -- when this version was loaded
LOAD_END_DATE TIMESTAMP NULL, -- when the next version appeared
HASH_DIFF CHAR(32) NOT NULL, -- hash of all payload columns
RECORD_SOURCE VARCHAR(100) NOT NULL,
-- Payload columns (the actual data)
FIRST_NAME VARCHAR(100),
LAST_NAME VARCHAR(100),
EMAIL VARCHAR(200),
DATE_OF_BIRTH DATE,
COUNTRY_CODE CHAR(3),
CONSTRAINT pk_sat_cd PRIMARY KEY (HUB_CUSTOMER_HK, LOAD_DATE)
);
-- Only insert when payload has actually changed (HashDiff comparison)
INSERT INTO SAT_CUSTOMER_DEMOGRAPHICS
SELECT
src.HUB_CUSTOMER_HK,
src.LOAD_DATE,
NULL AS LOAD_END_DATE,
src.HASH_DIFF,
src.RECORD_SOURCE,
src.FIRST_NAME, src.LAST_NAME, src.EMAIL,
src.DATE_OF_BIRTH, src.COUNTRY_CODE
FROM STG_CUSTOMER_DEMOGRAPHICS src
LEFT JOIN SAT_CUSTOMER_DEMOGRAPHICS sat
ON sat.HUB_CUSTOMER_HK = src.HUB_CUSTOMER_HK
AND sat.LOAD_END_DATE IS NULL -- current record only
WHERE sat.HASH_DIFF IS NULL -- no existing record, OR
OR sat.HASH_DIFF != src.HASH_DIFF; -- payload has changed
Concept 05
When to Use Data Vault
🧠 ELI5
Data Vault isn't always the right tool. It shines in specific situations. If you have many source systems that change frequently, strict regulatory requirements for audit trails, or a need to integrate data from very different systems, Data Vault is probably your best choice. If you have one or two stable sources and just need fast reports, Kimball might be simpler.
🏠
Banking & Finance
Regulatory Reporting
Full audit trail for BCBS 239, GDPR, and AML compliance. Every data point traceable to source.
🌟
Insurance
Policy & Claims 360
Integrate policy, claims, customer, and agent data across dozens of legacy systems.
🛍
Retail & E-Commerce
Customer 360
Unify online, in-store, mobile, and loyalty system data into a single customer view.
📞
Telecom
Usage & Billing
Handle billions of CDRs (call detail records) with complete lineage for billing disputes.
🏥
Healthcare
Patient Data Integration
HIPAA-compliant integration of EHR, billing, lab, and claims data with full provenance.
The Data Vault Fit Criteria
Data Vault is a strong fit when your environment has three or more of these characteristics:
- 5+ source systems contributing to the data warehouse
- Regulatory requirement for full data lineage and auditability
- Frequently changing source systems and business rules
- Agile development with multiple parallel teams
- Multi-decade data retention requirements
- Need to detect and respond to source system changes quickly
- Large data volumes requiring parallel loading strategies
⚠
When NOT to use Data Vault: If you have 1-2 stable sources, a small team, and purely analytical workloads with no regulatory requirements — a star schema (Kimball) will get you to insights faster with less overhead. Data Vault has real complexity costs that only pay off at a certain scale and compliance pressure.