Qu'est-ce qu'un link dans Data Vault ?
Un link enregistre une relation entre des business keys : cette commande appartient à ce client. Datavault Builder couvre le link Data Vault classique et y ajoute un link de transaction ancré sur un grain hub, qui fixe la granularité d'une transaction et permet de relier les transactions entre elles.
Cela vous semble familier ?
- Une ligne de commande apparaît deux fois dans le link après que la source l'a rattachée à un autre client, et personne ne peut dire quelle ligne est à jour.
- Une facture doit référencer la commande qu'elle facture, et le modèle n'offre aucun moyen propre de relier les deux.
- Un link à sept clés de hub que seul son auteur sait encore lire.
Les hubs vous disent quels clients, produits et commandes existent. Ils ne disent rien de la façon dont ces éléments sont liés entre eux. C’est le rôle du link.
En termes de modélisation classique, une relation devient un link. Pour le dire simplement, une
clé étrangère dans un modèle en troisième forme normale sert de base à un link. Là où la table
Order porte un customer_id, le Data Vault comporte un link entre le hub commande et le hub
client.
Le link classique
Un link enregistre une relation entre des business keys : cette commande appartient à ce client, ce contrat couvre ce produit. Comme un hub, il ne stocke aucune donnée descriptive.
Une table de link contient :
- Link hash key. La clé primaire, un hash calculé sur les business keys de tous les hubs qu’il relie.
- Hash keys des hubs. Une colonne par hub participant.
- Load Date. Le moment où la relation a été vue pour la première fois.
- Record Source. Le système qui l’a livrée.
Comme les hubs, les links sont alimentés en insertion seule. Une relation vue une fois reste dans le link : savoir si elle est encore valable aujourd’hui relève d’un effectivity satellite, qui fera l’objet d’un prochain article de cette série.
Dans le Data Vault tel que le décrivent les manuels, chaque link est modélisé en n:m, afin de ne jamais avoir à le reconstruire lorsqu’une relation 1:n devient n:m après une fusion ou l’arrivée d’un nouveau système. Une structure n:m ne signifie pas pour autant que les données le sont. Si une commande est rattachée à un autre client, elle ne se met pas à appartenir à deux clients : le nouveau client remplace l’ancien. Pour lire un link correctement, il faut connaître son côté directeur.
Dans Datavault Builder, le link classique est un link binaire entre deux hubs, et il porte sa cardinalité : 1:1, n:1, 1:n ou n:m. La cardinalité définit quel côté dirige la relation, si bien qu’un changement du côté directeur est interprété comme un remplacement, et non comme une relation supplémentaire.
Si vous connaissez la modélisation classique, vous connaissez déjà le link
| Modèle classique | Dans Data Vault |
|---|---|
| Une clé étrangère entre deux entités | Link binaire entre deux hubs, avec sa cardinalité |
| Une table d’association sans attributs | Link n:m |
| Une table d’association avec ses propres attributs | Hub avec un satellite, plus un link de transaction |
| Une transaction, comme une ligne de commande, avec sa propre clé | Grain hub, plus un link de transaction |
Le link de transaction
Pour les transactions, Datavault Builder ajoute un second type de link. Une transaction, comme une ligne de commande, un paiement ou une ligne de livraison, se rapporte à plusieurs hubs à la fois, et le Data Vault conventionnel la place souvent directement dans un link, parfois non historisé et doté de dependent child keys. La granularité reste alors implicite : c’est la combinaison de clés, quelle qu’elle soit, qui rend une ligne unique. Si la source rattache ensuite une ligne de commande à un autre client, ce link contient deux lignes pour la même ligne de commande, et rien dans le modèle n’indique laquelle décrit la transaction.
Le link de transaction rend la granularité explicite. La granularité la plus fine de la
transaction reçoit son propre hub, le grain hub (Hub_Sales_Order_Line,
Hub_Payment_Transaction), et le link est ancré sur lui. Le link de transaction acquiert ainsi
quatre propriétés, chacune avec sa raison d’être :
-
Une granularité fixe. Il y a une entrée de link par ligne de commande, et la granularité ne peut pas dériver.
-
Un côté directeur défini. Le grain hub dirige la relation. Si une ligne de commande reçoit un nouveau produit, le nouveau produit remplace l’ancien : la ligne ne se retrouve pas à pointer vers deux produits à la fois.
-
Des relations identifiantes et non identifiantes. Le grain hub est l’identité de la transaction. Le client, le produit et le magasin y participent en tant que références, selon la même distinction qu’en modélisation entité-association classique.
« La clé, toute la clé, rien que la clé, je le jure devant Codd. » Le résumé classique de la troisième forme normale de Codd vaut ici aussi : le grain hub est la clé de la transaction, et tout le reste la décrit ou renvoie à un autre concept.
-
Des attributs portés par un hub. La quantité, le prix et le statut vont dans un satellite ordinaire rattaché au grain hub. Ils peuvent être chargés en delta comme ceux de n’importe quel autre satellite, et d’autres attributs peuvent être ajoutés plus tard sans remodélisation. Data Vault autorise aussi les link satellites pour cela : notre expérience montre qu’un hub s’y prête mieux, et il en va de même pour une table d’association qui porte des attributs, comme un rôle ou un pourcentage dans l’affectation d’un client à un contrat.
Résoudre le problème des links entre links
La première règle de Data Vault veut que les links relient des hubs. Un link ne peut pas référencer un autre link.
Or, dans la réalité, les transactions se rapportent sans cesse à d’autres transactions : une ligne de facture correspond à une ligne de livraison, un paiement solde une facture, un retour référence une ligne de commande. Le contournement habituel consiste à tout aplatir dans un seul link composite à six clés de hub ou plus, difficile à lire et qui fait de chaque chargement une unité de travail volumineuse.
Avec les links de transaction, le problème disparaît. Chaque transaction possède déjà un grain hub, si bien qu’une relation entre deux transactions est un link ordinaire entre deux hubs :
Hub_Delivery_Line ↔ Link_Delivery_To_Invoice ↔ Hub_Invoice_Line
Aucune référence d’un link vers un autre, aucun contournement par dependent child keys, et chaque link reste suffisamment petit pour être lisible.
Ce pattern remonte à 2017, lorsque je l’ai décrit pour la première fois dans « À propos des Links », en le comparant au standard Data Vault 2.0.
Ce qui change avec Datavault Builder
- Les deux types de link, dans un seul modèle. Des links binaires pour les relations entre données de référence, des links de transaction lorsque la relation est une transaction.
- La cardinalité et la granularité sont des décisions de modélisation. Vous indiquez la cardinalité d’un link binaire, ou ce qu’est une transaction, et l’outil construit à partir de là le link et ses chargements.
- Le code est généré. Les hash keys, l’unité de travail et le chargement en insertion seule suivent le même pattern pour chaque link, sur Snowflake, Databricks, BigQuery, SQL Server, Fabric, Oracle ou PostgreSQL.
Ce qu’il faut décider
Prenez vos trois transactions les plus importantes et notez, pour chacune, ce qui en constitue une occurrence. Si la réponse est une combinaison de client, de produit et de date plutôt qu’un numéro de ligne ou de document, la granularité est implicite, et c’est là qu’un link de transaction stabilisera le modèle.
Voyez-le fonctionner sur l'une de vos sources
Réservez une démo gratuite et apportez le connecteur qui vous coûte le plus cher, en argent ou en temps.
Trois étapes pour créer un link
-
Partir de la relation
Chaque clé étrangère et chaque table d’association de votre modèle source est un link potentiel entre deux hubs.
-
Définir la cardinalité
1:1, n:1, 1:n ou n:m. La cardinalité détermine quel côté dirige la relation.
-
Utiliser un link de transaction pour les transactions
Les lignes de commande, les paiements et les livraisons reçoivent un grain hub et un link de transaction. Datavault Builder génère les chargements.
Comment Datavault Builder supprime les frictions de l'ingestion
-
L'ingestion est intégrée
Chargements batch, delta et CDC depuis les bases de données, les fichiers, les API REST, les sources NoSQL et Python, les flux comme Kafka arrivant en micro-batches. La même plateforme qui génère le warehouse, sans seconde facture.
-
Votre schéma, pas celui du fournisseur
Les tables source sont mappées vers un modèle Data Vault 2.0 que vous avez conçu. Une nouvelle colonne ou une table renommée change un mapping, pas une chaîne de scripts post-chargement.
-
Seuls les deltas circulent
Les Hubs, Links et Satellites chargent ce qui a changé. Les rechargements complets restent en staging au lieu d’être retraités en aval chaque nuit.
-
L'historique est conservé par conception
Chaque changement est conservé tel qu’il arrive, donc le reporting historique fonctionne même là où la source écrase ses propres lignes.
-
Du code que vous n'écrivez jamais
Le chargement, l’historisation et la traçabilité sont générés depuis le modèle en temps réel et s’exécutent nativement sur Snowflake, Databricks, BigQuery, SQL Server, Fabric, Oracle ou PostgreSQL.
-
Une plateforme, jusqu'à neuf outils en moins
Modélisation, ETL, CI/CD, documentation et traçabilité au même endroit. C’est ce qui rend possible les 14,7 minutes entre le besoin et la production.
Rencontrez notre expert
Vingt minutes avec notre Sales Director et une réponse honnête sur l’adéquation avec votre stack.
Matt Collett
Sales Director
Parfait, choisissez un créneau qui vous convient :
Les autres problèmes traités par cette série
-
Clés techniques versus clés métier dans Data Vault
Les systèmes sources conservent la business key dans l’enregistrement de référence, mais toutes les relations reposent sur des clés techniques. Quatre façons de gérer cette situation, ce que coûte chacune, et le pattern que nous utilisons : un PSA hub pour les clés techniques, mappé sur le hub de la business key.
-
Qu'est-ce qu'une business key dans Data Vault ?
Une business key est l’identifiant que vos collaborateurs et vos clients utilisent réellement : le numéro de client, le numéro de facture, le numéro de contrat. Elle est stable, elle est partagée entre les systèmes, et c’est sur elle que repose chaque hub d’un Data Vault.
-
Qu'est-ce qu'un satellite dans Data Vault ?
Un satellite contient tout ce qui décrit un hub : noms, statuts, montants, ainsi que chacune de leurs modifications, ajoutées sans jamais être mises à jour. C’est une Slowly Changing Dimension de type 2 sans UPDATE, avec une piste d’audit complète intégrée.
-
Qu'est-ce qu'un hub dans Data Vault ?
Un hub représente un concept métier central, comme le client, le produit ou le compte, sous la forme de la liste de ses clés : toutes celles que l’entrepôt a jamais reçues, chacune une seule fois. Il stocke l’identité, pas l’état, et c’est cette sobriété qui en fait le point où les silos des systèmes sources disparaissent.
Questions et réponses
- Dan Linstedt. Il a développé la méthode dans les années 1990 et l’a publiée vers 2000. Data Vault 2.0, qui ajoute au modèle les hash keys, une méthodologie et une architecture, a suivi en 2013.
- L’ouvrage de référence est Building a Scalable Data Warehouse with Data Vault 2.0 de Dan Linstedt et Michael Olschimke (Morgan Kaufmann, 2015).
- Non. Bill Inmon considère Data Vault comme une évolution de sa vision de l’entrepôt de données d’entreprise en troisième forme normale, et non comme une approche concurrente.
- Non. Une couche de restitution dimensionnelle fait souvent partie d’une implémentation Data Vault : le vault conserve l’historique intégré, et les schémas en étoile sont construits au-dessus pour le reporting. Le même vault peut aussi fournir des tables plates ou un Unified Star Schema.
- Avec l’automatisation, une vue en troisième forme normale au-dessus d’un Data Vault peut être générée de manière entièrement déterministe. Le vault contient les données une seule fois, et la couche 3FN est dérivée du modèle. Comment cela fonctionne.
- S’y lancer sans automatisation. Data Vault repose sur un petit nombre de patterns stricts et répétitifs : c’est précisément ce qui le rend fastidieux et source d’erreurs quand on l’écrit à la main, et simple à générer. C’est pourquoi il vaut mieux utiliser Datavault Builder.
- Oui. Répartir les clés, les relations et l’historique entre hubs, links et satellites produit plus de tables qu’un modèle normalisé ou dimensionnel. C’est pourquoi la couche physique doit être masquée par une approche pilotée par le modèle comme Datavault Builder : vous travaillez sur le modèle métier, et les tables sont générées.
- Demandez une démo et voyez un Data Vault construit sur vos propres sources, ou commandez un environnement de formation pour l’essayer vous-même.
- Ici. Datavault Builder est une solution d’automatisation Data Vault : consultez les tarifs ou demandez une démo.
- Datavault Builder est concédé sous licence annuelle d’utilisation. Des licences perpétuelles sont disponibles sur demande. Les éditions et leur contenu figurent sur la page des tarifs.