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.

Qu'est-ce qu'un link dans Data Vault ?

La plateforme d'automatisation de data warehouse à laquelle les équipes data font confiance

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.

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.

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

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.

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

  1. 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.

  2. Définir la cardinalité

    1:1, n:1, 1:n ou n:m. La cardinalité détermine quel côté dirige la relation.

  3. 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.

Reconnu par BARC dans The Data Fabric Survey 26

Rencontrez notre expert

Vingt minutes avec notre Sales Director et une réponse honnête sur l’adéquation avec votre stack.

Matt Collett

Matt Collett

Sales Director

Que recherchez-vous ?

En soumettant, vous acceptez notre Politique de confidentialité.

Les autres problèmes traités par cette série

  • Clés techniques vs clés métier

    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.

  • 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.

  • Satellite

    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.

  • Hub

    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