top of page
Rechercher

Les concepts du Data Vault 2.0 sur Snowflake


Depuis 2020, nous constatons une ÉNORME augmentation de l'intérêt pour Data Vault.

Une partie de l'intérêt est le besoin d'agilité dans la construction d'une plate-forme de données moderne. L'un des avantages de la méthode Data Vault 2.0 est les modèles reproductibles qui se prêtent à l'automatisation.


La méthodologie Data Vault peut être appliquée à presque tous les entrepôts de données et être alimentée par presque tous les outils d'intégration de données ETL ou ELT.


"DV (Data Vault) a été développé spécifiquement pour résoudre les problèmes d'agilité, de flexibilité et d'évolutivité rencontrés dans les autres approches de modélisation de données courantes utilisées dans l'espace d'entreposage de données". Kent Graziano, évangéliste technique en chef de Snowflake

En d'autres termes, il vous permet de créer un entrepôt de données évolutif qui peut incorporer des sources de données disparates au fil du temps. L'entreposage de données traditionnel nécessite généralement une refactorisation pour intégrer de nouvelles sources, mais lorsqu'il est correctement mis en œuvre, Data Vault 2.0 ne nécessite aucune refactorisation.


Le Data Vault est une méthodologie de conception de bases de données qui vise à fournir une architecture de stockage de données historiques robuste et évolutive. Les concepts clés du Data Vault incluent :

  1. Les hubs : Les hubs sont des tables qui stockent des informations de base sur les entités clés du système, telles que les clients ou les produits. Les hubs contiennent des informations de base telles que les identifiants uniques et les noms.

  2. Les liens : Les liens sont des tables qui stockent des informations sur les relations entre les hubs. Par exemple, une table de liaison pourrait stocker des informations sur les relations entre les clients et les produits.

  3. Les satellites : Les satellites sont des tables qui stockent des informations détaillées sur les transactions ou les événements. Par exemple, une table satellite pourrait stocker des informations sur les détails d'une commande, tels que la date, le montant et les produits commandés.

  4. La séparation des données brutes et historiques : Les données brutes sont stockées dans des tables séparées des données historiques, de manière à ce que les données historiques soient protégées contre les erreurs ou les modifications accidentelles.

  5. La modélisation basée sur les données : le Data Vault se concentre sur la modélisation des données plutôt que sur les processus métier, de manière à ce que l'architecture de stockage de données soit adaptable aux changements dans les processus métier.

  6. La gestion des versions : Le Data Vault gère les versions des données pour s'assurer que les données historiques sont préservées même si les données brutes sont modifiées ou supprimées.

  7. L'utilisation de clefs de hash : Le Data Vault utilise des clefs de hash pour identifier les enregistrements de manière unique, de manière à ce que les données ne soient pas dupliquées lors de l'insertion de nouvelles données.


La structure de Data Vault est un modèle de stockage de données historiques qui se concentre sur la normalisation des données à l'aide de hubs, de liens et de satellites. Il est conçu pour gérer efficacement les données de grande taille, les données changeantes et les données historiques. Il est souvent utilisé pour les projets de data warehousing et de reporting.


La structure en étoile est un modèle de stockage de données qui se concentre sur la normalisation des données à l'aide de tables dimensionnelles et de tables de faits. Il est conçu pour gérer efficacement les données de grande taille et les charges de travail de reporting. Il est également utilisé pour les projets de data warehousing et de reporting.

En termes de comparaison, la structure en étoile et la structure de Data Vault ont des objectifs et des utilisations similaires, mais ils ont des approches différentes pour atteindre ces objectifs. La structure en étoile se concentre sur la normalisation des données à l'aide de tables dimensionnelles et de tables de faits, tandis que la structure de Data Vault se concentre sur la normalisation des données à l'aide de hubs, de liens et de satellites. La structure en étoile est plus simple à comprendre et à utiliser, tandis que la structure de Data Vault est plus robuste et adaptable pour gérer les données changeantes et historiques.


Les deux types de modélisation peuvent très bien cohabiter selon les besoins de l'entreprise.


Voici un exemple générique de mise en place d'un Data Vault sur Snowflake :

  1. Créer des tables de hubs pour les entités clés du système, telles que les clients ou les produits. Ces tables doivent contenir des informations de base telles que les identifiants uniques et les noms.

  2. Créer des tables de liens pour stocker des informations sur les relations entre les hubs. Par exemple, une table de liaison pourrait stocker des informations sur les relations entre les clients et les produits.

  3. Créer des tables satellites pour stocker des informations détaillées sur les transactions ou les événements. Par exemple, une table satellite pourrait stocker des informations sur les détails d'une commande, tels que la date, le montant et les produits commandés.

  4. Utiliser des vues pour séparer les données brutes et historiques. Par exemple, une vue pourrait être créée pour afficher les données brutes de la table des clients, tandis qu'une autre vue pourrait être créée pour afficher les données historiques de la table des clients.

  5. Utiliser des clefs de hash pour identifier les enregistrements de manière unique. Snowflake prend en charge cette fonctionnalité nativement.

  6. Utiliser des tâches planifiées pour automatiser les mises à jour de données historiques. Par exemple, une tâche planifiée pourrait être créée pour insérer les données de la vue "RAW_DATA.CUSTOMER_DETAILS" qui ont une date de transaction d'au moins 1 jour dans la table "HISTORY_DATA.CUSTOMER_DETAILS"

  7. Utiliser les fonctionnalités de Snowflake, telles que la gestion des versions, pour gérer les versions des données et s'assurer que les données historiques sont préservées même si les données brutes sont modifiées ou supprimées.



Voici un exemple de code SQL pour créer une table de hub pour les clients dans Snowflake :


CREATE TABLE HUB_CUSTOMER (
    HUB_CUSTOMER_KEY VARCHAR(100) NOT NULL,
    CUSTOMER_NAME VARCHAR(100) NOT NULL,
    CUSTOMER_EMAIL VARCHAR(100) NOT NULL,
    CUSTOMER_PHONE VARCHAR(100) NOT NULL,
    CREATED_AT TIMESTAMP NOT NULL,
    MODIFIED_AT TIMESTAMP NOT NULL,
    PRIMARY KEY (HUB_CUSTOMER_KEY)
);

Voici un exemple de code SQL pour créer une table de liens pour les relations entre les clients et les produits dans Snowflake :


CREATE TABLE LINK_CUSTOMER_PRODUCT (
    CUSTOMER_PRODUCT_KEY VARCHAR(100) NOT NULL,
    HUB_CUSTOMER_KEY VARCHAR(100) NOT NULL,
    HUB_PRODUCT_KEY VARCHAR(100) NOT NULL,
    CREATED_AT TIMESTAMP NOT NULL,
    MODIFIED_AT TIMESTAMP NOT NULL,
    PRIMARY KEY (CUSTOMER_PRODUCT_KEY),
    FOREIGN KEY (HUB_CUSTOMER_KEY) REFERENCES HUB_CUSTOMER (HUB_CUSTOMER_KEY),
    FOREIGN KEY (HUB_PRODUCT_KEY) REFERENCES HUB_PRODUCT (HUB_PRODUCT_KEY)
);

Voici un exemple de code SQL pour créer une table satellite pour stocker des informations détaillées sur les commandes dans Snowflake :


CREATE TABLE SAT_ORDER (
    SAT_ORDER_KEY VARCHAR(100) NOT NULL,
    CUSTOMER_PRODUCT_KEY VARCHAR(100) NOT NULL,
    ORDER_DATE TIMEST



Voici un exemple concret d'un modèle de Data Vault utilisant les concepts de Hub, Satellite et Link:

  • Hub (entité principale) : Patient

    • ID_Patient (clé primaire)

    • Nom

    • Prénom

    • Date_Naissance


  • Satellite (données détaillées) : Adresse

    • ID_Adresse (clé primaire),

    • ID_Patient (clé étrangère),

    • Adresse,

    • Ville,

    • Code Postal


  • Link (liaison entre les hubs) : Consultation

    • ID_Consultation (clé primaire)

    • ID_Patient (clé étrangère)

    • ID_Médecin (clé étrangère)

    • Date_Consultation


Dans ce modèle, le hub Patient contient les informations de base sur le patient, telles que son nom, prénom, date de naissance, et ID_Patient qui est la clé primaire. Le satellite Adresse contient les informations détaillées sur l'adresse du patient, telles que l'adresse, la ville, le code postal, et ID_Adresse qui est la clé primaire ainsi que ID_Patient qui est la clé étrangère liée à la clé primaire ID_Patient dans le hub Patient. Le lien Consultation relie les hubs Patient et Médecin pour montrer les consultations passées par un patient donné.





21 vues0 commentaire

Comments


bottom of page