Data Vault 2.0: flexibilidade e rastreabilidade para warehouses modernos
João Barros
13 de August de 2025
1 min de leitura
O Data Vault 2.0 é uma metodologia de modelação para raw data vaults que prioriza auditabilidade, paralelismo de carga e adaptabilidade a mudanças de negócio. Não substitui o Kimball — os dois coexistem: Data Vault na camada raw/silver, dimensional na camada gold/apresentação.
Os 3 tipos de tabela
HUB — identidade de negócio única
Contém: hash key + business key + metadata de carga
Ex: HUB_Cliente (hk_cliente, nk_cliente_erp, load_dts, rec_src)
LINK — relações entre Hubs
Contém: hash key do link + hk de cada Hub relacionado + metadata
Ex: LNK_Venda (hk_venda, hk_cliente, hk_produto, load_dts, rec_src)
SATELLITE — atributos descritivos e histórico
Contém: hk do pai + hash diff + atributos + metadata
Ex: SAT_Cliente_CRM (hk_cliente, load_dts, hash_diff, nome, email, segmento)
Implementação do Hub
CREATE TABLE dbo.HUB_Cliente (
hk_cliente BINARY(16) NOT NULL PRIMARY KEY, -- MD5/SHA-1 da business key
nk_cliente INT NOT NULL,
load_dts DATETIME2 NOT NULL DEFAULT SYSDATETIME(),
rec_src VARCHAR(50)NOT NULL -- sistema de origem
);
-- Inserir apenas novos (sem updates — Data Vault é insert-only)
INSERT INTO dbo.HUB_Cliente (hk_cliente, nk_cliente, rec_src)
SELECT HASHBYTES('MD5', CAST(nk_cliente AS VARCHAR)), nk_cliente, 'ERP_SAP'
FROM stg.Clientes src
WHERE NOT EXISTS (SELECT 1 FROM dbo.HUB_Cliente WHERE hk_cliente = HASHBYTES('MD5', CAST(src.nk_cliente AS VARCHAR)));
Satellite com detecção de alterações
-- Só insere quando os atributos mudam (hash_diff)
INSERT INTO dbo.SAT_Cliente_CRM (hk_cliente, load_dts, hash_diff, nome, email, segmento, rec_src)
SELECT
HASHBYTES('MD5', CAST(src.nk_cliente AS VARCHAR)) AS hk_cliente,
SYSDATETIME(),
HASHBYTES('MD5', CONCAT(src.nome, '|', src.email, '|', src.segmento)) AS hash_diff,
src.nome, src.email, src.segmento, 'CRM'
FROM stg.Clientes src
LEFT JOIN (SELECT hk_cliente, hash_diff FROM dbo.SAT_Cliente_CRM WHERE load_dts = (SELECT MAX(load_dts) FROM dbo.SAT_Cliente_CRM s2 WHERE s2.hk_cliente = dbo.SAT_Cliente_CRM.hk_cliente)) latest
ON HASHBYTES('MD5', CAST(src.nk_cliente AS VARCHAR)) = latest.hk_cliente
WHERE latest.hash_diff IS NULL OR latest.hash_diff <> HASHBYTES('MD5', CONCAT(src.nome, '|', src.email, '|', src.segmento));
Conclusão
Data Vault 2.0 brilha em ambientes com muitas fontes, requisitos de auditoria fortes e schemas que mudam frequentemente. O modelo insert-only com hash keys permite carga paralela de centenas de tabelas e rastreabilidade completa. Combine com uma camada dimensional para consumo por BI.