Traçabilité et Historisation avec Data Vault
- HANNACHI Mohamed Rafik
- 1 mai
- 4 min de lecture
Dernière mise à jour : 19 mai

Le modèle Data Vault est conçu pour gérer des données d’entreprise dans un entrepôt de données de manière flexible et évolutive. Il divise les données en trois composants principaux :
1. Hubs : Les entités de base.
2. Links : Les relations entre les entités.
3. Satellites : Les informations descriptives ou contextuelles associées aux Hubs et Links.
L'idée est d'assurer la traçabilité, l'historisation et l'évolutivité des données en les structurant autour de ces trois types d'objets.
1. Le Hub : Identité unique d'une entité
Le Hub contient l'identifiant principal (ou Business Key) d'une entité unique dans l'entreprise, comme un client, un produit, un fournisseur, etc. Il ne stocke que les informations essentielles pour identifier l’entité, sans ses attributs.
Fonctionnement technique du Hub :
- Chaque Hub a un identifiant unique généré dans l'entrepôt de données (souvent appelé Hash Key ou clé naturelle).
- Le Hub contient également la clé métier (Business Key) qui identifie de façon unique l'entité dans le monde réel (comme un numéro de client, un numéro de produit).
- Les Hubs sont immuables, ce qui signifie que les données ne changent jamais, sauf pour ajouter de nouvelles entités.
Structure technique typique d'un Hub :

Description :
- Hub_Key : Clé générée par l'entrepôt de données (souvent un hash).
- Business_Key : Clé métier unique (ex: numéro de client, produit, etc.).
- Load_Date : Date à laquelle l'enregistrement a été chargé.
- Record_Source : Source des données (ex: CRM, ERP, etc.).
2. Le Link : Relation entre entités
Le Link capture les relations entre deux ou plusieurs Hubs. Par exemple, un Link pourrait relier un client à une commande, ou un produit à une catégorie. Le Link représente les relations entre les entités de manière flexible.
Fonctionnement technique du Link :
- Chaque Link contient les clés des Hubs qu’il relie.
- Il peut également avoir sa propre clé unique pour identifier cette relation.
- Comme les Hubs, les Links sont immuables, ce qui signifie que les relations ne changent pas ; seules de nouvelles relations peuvent être ajoutées.
Structure technique typique d'un Link :

Description :
- Link_Key : Clé générée pour le lien (souvent un hash).
- Hub_Key_Customer : Clé du client dans le Hub des clients.
- Hub_Key_Order : Clé de la commande dans le Hub des commandes.
- Load_Date : Date de chargement de la relation.
- Record_Source : Source des données.
Le Satellite : Historisation des données descriptives
Les Satellites contiennent des informations descriptives, historiques et contextuelles sur les Hubs et les Links. C'est dans les Satellites que sont stockés les attributs qui peuvent changer au fil du temps, comme l'adresse d'un client ou le statut d'une commande.
Fonctionnement technique du Satellite :
- Chaque Satellite est lié à un Hub ou à un Link.
- Le Satellite contient les attributs d’une entité ou d’une relation (par exemple, le nom, l’adresse, ou le statut d’une commande).
- Les Satellites sont historisés, ce qui signifie que chaque changement d'attribut crée une nouvelle ligne, avec des horodatages pour indiquer la date de début et de fin de validité des données.
Structure technique typique d'un Satellite :

Description :
- Sat_Key : Clé unique générée pour la ligne du satellite.
- Hub_Key : Clé de Hub associée (ici un client).
- Customer_Name et Address : Attributs de l'entité.
- Load_Date : Date de chargement de cette version des attributs.
- End_Date : Date à laquelle cette version a cessé d'être valide.
- Record_Source : Source des données.
Scénario : Gestion d'un client et de ses commandes
Supposons que vous avez un système source qui enregistre les clients et leurs commandes. Nous allons voir comment ces données sont modélisées dans un modèle Data Vault.
Données en entrée :
Client 1 : John Doe avec l'adresse "123 Main St".
Commande 1 de ce client passée le 1er février 2022, contenant un Produit A.
Client 2 : Jane Smith avec l'adresse "789 Pine St".
Commande 2 pour le client Jane Smith, passée le 15 février 2022, contenant un Produit B.
Changement d'adresse du client John Doe au 1er juin 2022 vers "456 Oak St".
Nouvelle commande 3 pour John Doe passée le 1er juillet 2022, contenant à la fois Produit A et Produit B.
Modèle Data Vault
Hub : Hub_Customer
Stocke les identifiants uniques des clients.

Hub : Hub_Order
Stocke les identifiants uniques des commandes.

Hub : Hub_Product
Stocke les identifiants uniques des produits.

Link : Link_Customer_Order
Relie les clients et leurs commandes.

Link : Link_Order_Product
Relie les commandes aux produits commandés.

Satellite : Sat_Customer
Capture les attributs descriptifs des clients.

Satellite : Sat_Order
Capture les attributs des commandes.

Satellite : Sat_Product
Capture les informations des produits.

Comparaison des lignes (HK et HDIFF)
Dans un modèle Data Vault, pour garantir l'historisation et éviter la duplication des données, on utilise des techniques de Hash Key (HK) et Hash Diff (HDIFF) pour comparer les lignes.
1. Hash Key (HK)
Le Hash Key est une clé unique générée à partir de la Business Key (par exemple, le numéro de client, commande, ou produit) à l’aide d’un algorithme de hachage (comme SHA-256). Ce HK est utilisé comme identifiant unique dans le Hub et les Links. Il permet d'assurer l'unicité des enregistrements et d'éviter les doublons.
2. Hash Diff (HDIFF)
Le Hash Diff est un hachage des attributs descriptifs (par exemple, nom du client, adresse, etc.) stockés dans un Satellite. Il est utilisé pour détecter les changements d'attributs.
Fonctionnement du HDIFF :
- Lorsque de nouvelles données sont chargées dans un Satellite, un HDIFF est calculé sur tous les attributs décrits (par exemple, Customer_Name et Address pour les clients).
- Si le HDIFF d’une nouvelle ligne est différent du HDIFF de la dernière ligne stockée pour cette entité, cela indique qu'il y a eu un changement d'attributs, et une nouvelle ligne est alors insérée dans le Satellite.
Exemple avec John Doe :
Supposons que nous recevions une nouvelle version des informations de John Doe le 1er juin 2022, avec un changement d'adresse.
1. Calcul du Hash Diff sur la première ligne du Satellite :
- Attributs à hacher : Customer_Name = "John Doe", Address = "123 Main St".
- HDIFF généré pour cette ligne : HDIFF1 = Hash("John Doe", "123 Main St").
2. Nouvelle ligne d’entrée le 1er juin 2022 avec le changement d’adresse :
- Attributs à hacher : Customer_Name = "John Doe", Address = "456 Oak St".
- **HDIFF2 = Hash("John Doe", "456 Oak St")`.
3. Le HDIFF2 est différent de HDIFF1, donc une nouvelle ligne est insérée dans le Satellite pour capturer le changement d’adresse.
Exemple dans les satellites :
Sat_Customer

Dans cet exemple, deux lignes existent dans le Satellite pour John Doe en raison du changement d'adresse. Le Hash Diff permet de vérifier si les attributs ont changé, et de cette façon, seules les modifications sont ajoutées au Satellite.
Modèle Data Vault Final :

La Discipline Data Vault : clés en main pour un DataWarehouse agile
Le seule et unique livre francophone 100% dédié a Data Vault est disponible sur Amazon https://amzn.eu/d/gzAnCzo

Comments