Accéder au contenu principal

Star Schema vs Snowflake Schema : Différences et cas d'utilisation

Ce guide présente les schémas en étoile et les schémas Snowflake, deux façons courantes d'organiser les données dans les entrepôts. Vous apprendrez comment ils fonctionnent, en quoi ils sont différents et quand les utiliser pour répondre à vos besoins en matière de données.
Actualisé 20 janv. 2025  · 20 min de lecture

Si vous travaillez avec des entrepôts de données, vous savez combien il est important de structurer les données de manière efficace et facile à manipuler. Mais avez-vous déjàer réfléchi au schéma de base de données qui répond le mieux à vos besoins ? Il existe deux cadres principaux que vous pouvez utiliser pour cela : le schéma en étoile et le schéma Snowflake.

Le schéma en étoile est simple et rapide - idéal lorsque vous devez extraire rapidement des données à des fins d'analyse. En revanche, le schéma du Snowflake est plus détaillé. Il donne la priorité à l'efficacité du stockage et à la gestion de relations complexes entre les données. 

Dans cet article, je vous présenterai les structures de ces schémas, je soulignerai leurs différences et je décrirai leurs avantages. À la fin, vous saurez où se situe chaque schéma et comment choisir celui qui convient le mieux à vos projets de données.

Qu'est-ce qu'un Star Schema ?

Un schéma en étoile est une façon d'organiser les données dans une base de données, en particulierdans les entrepôts de données, afin de faciliter et d'accélérer leur analyse (). Au centre, il y a un tableau principal appelé fact table, qui contient des données mesurables telles que les ventes ou les revenus. Il est entouré detableaux de dimensions , qui ajoutent des détails tels que des noms de produits, des informations sur les clients ou des dates. Cette disposition forme une étoile.

Schéma en étoile.

Schéma en étoile. Image par l'auteur.

Examinons les principales caractéristiques du schéma en étoile :

  • Tableaux de dimension à un seul niveau: Les tableaux de dimensions se connectent directement au tableau des faits, sans couches supplémentaires. Chaque tableau se concentre sur un domaine, comme les produits, les régions ou l'heure, ce qui simplifie son utilisation.
  • Modèle dénormalisé: Dans un schéma en étoile, les données connexes sont stockées ensemble dans un tableau selon une approche dénormalisée. Par exemple, un tableau de produits peut contenir l'identifiant, le nom et la catégorie du produit au même endroit. Bien que cela puisse entraîner une certaine répétition des données, les requêtes sont traitées plus rapidement.
  • Courant dans l'entreposage de données: Le schéma en étoile est utilisé pour une analyse rapide. Il peut facilement filtrer ou calculer des totaux, ce qui en fait un bon choix pour les entrepôts de données nécessitant des informations rapides.

Comprenons-le à l'aide d'un simple schéma en étoile. Letableau des faits Sales se trouve au centre. Il contient les données numériques que vous souhaitez analyser, comme les ventes ou les bénéfices. Il est relié à par destableaux de dimensions contenant des détails descriptifs, tels que des noms de produits, des emplacements de clients ou des dates :

Exemple concret de schéma en étoile.

Exemple de schéma en étoile. Image par l'auteur. 

Voici un exemple SQL simple pour la mise en place d'un schéma en étoile avec une table de faits et des tables de dimensions pour les données de la base de données. Sales et des tableaux de dimensions pour Product, Customeret Date:

-- Fact table
CREATE TABLE Sales (
    Sales_ID INT PRIMARY KEY,
    Product_ID INT,
    Customer_ID INT,
    Date_ID INT,
    Sales_Amount DECIMAL(10, 2),
    FOREIGN KEY (Product_ID) REFERENCES Product(Product_ID),
    FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID),
    FOREIGN KEY (Date_ID) REFERENCES Date(Date_ID)
);

-- Dimension table: Product
CREATE TABLE Product (
    Product_ID INT PRIMARY KEY,
    Product_Name VARCHAR(100),
    Category VARCHAR(50)
);

-- Dimension table: Customer
CREATE TABLE Customer (
    Customer_ID INT PRIMARY KEY,
    Customer_Name VARCHAR(100),
    Location VARCHAR(50)
);

-- Dimension table: Date
CREATE TABLE Date (
    Date_ID INT PRIMARY KEY,
    Date DATE,
    Year INT,
    Month VARCHAR(20)
);

Cette disposition accélère les requêtes car il n'y a pas de jointures complexes. Par exemple, la requête suivante permet d'extraire le total des ventes groupées par emplacement du client, en tirant parti des jointures simples du schéma en étoile :

SELECT c.Location, SUM(s.Sales_Amount) AS TotalSales
FROM Sales s
JOIN Customer c ON s.Customer_ID = c.Customer_ID
GROUP BY c.Location;

Toutefois, vous devrez accepter une certaine redondance des données, car les tableaux de dimensions peuvent contenir des informations répétées.

Avantages et limites d'un schéma en étoile

Maintenant que vous savez ce qu'est un schéma en étoile, voyons pourquoi il se distingue :

  • Requêtes plus rapides: Le schéma en étoile simplifie la recherche de données en rendant les requêtes rapides. Par exemple, si je veux étudier les tendances des ventes, je joindrai le tableau des faits aux tableaux de dimensions appropriés. Et le plus beau, c'est que je ferai tout cela sans avoir à gérer des relations complexes. Mes requêtes seraient ainsi plus rapides et je gagnerais beaucoup de temps.
  • Facile à comprendre: Sa structure est logique et simple à comprendre, même pour les utilisateurs non techniques. Les nouveaux membres de l'équipe peuvent rapidement comprendre quels tableaux contiennent les données dont ils ont besoin, ce qui accélère l'analyse et simplifie la maintenance.

Malgré tous ces avantages, le schéma en étoile présente un inconvénient. Comme je l'ai déjà mentionné, en raison de la dénormalisation, les tableaux de dimensions contiennent souvent des informations répétées, ce qui augmente l'utilisation de l'espace de stockage. Par exemple, si plusieurs produits appartiennent à la même catégorie, le nom de chaque produit peut se répéter, ce qui occupe plus d'espace de stockage.

Qu'est-ce qu'un schéma Snowflake ?

Un schéma Snowflake est une autre façon d'organiser les données. Dans ce schéma, les tableaux de dimensions sont divisés en sous-dimensions plus petites afin que les données soient mieux organisées et détaillées - comme des snowflakes dans un grand lac. 

Disposition du schéma de Snowflake.

Disposition du schéma de Snowflake. Image par l'auteur.

Examinons les principales caractéristiques du schéma Snowflake qui le distinguent des autres schémas :

  • Tableaux de dimensions à plusieurs niveaux: Nous pouvons décomposer nos tableaux de dimensions en tableaux plus petits et plus spécifiques. Par exemple, si je veux suivre l'emplacement des magasins, au lieu de mettre tous les détails de l'emplacement dans un seul grand tableau, je peux les diviser en tableaux distincts pour les pays, les États et les villes. De cette manière, chaque tableau ne contiendrait que les informations dont il a besoin afin de réduire les redondances et d'améliorer l'organisation.
  • Normalisation pour l'efficacité du stockage: Contrairement au schéma en étoile, le schéma Snowflake pourpermet une conception normalisée,qui évite la duplication des données. Par exemple, plutôt que de répéter une catégorie de produits comme Electronics pour chaque produit, je peux stocker la catégorie dans un tableau séparé et la lier à des produits individuels.
  • Adaptation à des environnements de données complexes : Le schéma Snowflake est le plus adapté aux environnements de données complexes, car il utilise des tableaux à plusieurs niveaux pour gérer les relations complexes et les structures de données hiérarchiques.

Comprenons cela à l'aide d'un simple schéma de Snowflake. Au centre se trouve le tableau des faits, qui contient des données mesurables. Il est relié à des tableaux de dimensions qui décrivent les faits, et ces tableaux de dimensions se subdivisent en tableaux de sous-dimensions, formant une structure en forme de Snowflake. 

Par exemple, ici, j'ai divisé le tableau Product en Manufacturer et Category et letableau Customer en Transaction et Location :

Exemple concret du schéma de Snowflake.

Exemple de schéma Snowflake. Image par l'auteur.

Voici un exemple SQL illustrant un schéma Snowflake où la table Product est normalisé en tableau Category et Manufacturer tableaux :

-- Fact table remains the same
CREATE TABLE Sales (
    Sales_ID INT PRIMARY KEY,
    Product_ID INT,
    Customer_ID INT,
    Date_ID INT,
    Sales_Amount DECIMAL(10, 2),
    FOREIGN KEY (Product_ID) REFERENCES Products(Product_ID),
    FOREIGN KEY (Customer_ID) REFERENCES Customers(Customer_ID),
    FOREIGN KEY (Date_ID) REFERENCES Dates(Date_ID)
);

-- Dimension table: Product
CREATE TABLE Product (
    Product_ID INT PRIMARY KEY,
    Product_Name VARCHAR(100),
    Category_ID INT,
    Manufacturer_ID INT,
    FOREIGN KEY (Category_ID) REFERENCES Category(Category_ID),
    FOREIGN KEY (Manufacturer_ID) REFERENCES Manufacturer(Manufacturer_ID)
);

-- Sub-dimension table: Category
CREATE TABLE Category (
    Category_ID INT PRIMARY KEY,
    Category_Name VARCHAR(50)
);

-- Sub-dimension table: Manufacturer
CREATE TABLE Manufacturer (
    Manufacturer_ID INT PRIMARY KEY,
    Manufacturer_Name VARCHAR(100)
);

La requête suivante calcule les ventes totales par catégorie de produits. Bien qu'il implique plus de jointures que le schéma en étoile, il est plus efficace en termes de stockage :

SELECT cat.Category_Name, SUM(s.Sales_Amount) AS TotalSales
FROM Sales s
JOIN Product p ON s.Product_ID = p.Product_ID
JOIN Category cat ON p.Category_ID = cat.Category_ID
GROUP BY cat.Category_Name;

Avantages et limites d'un schéma Snowflake

Tout comme le schéma en étoile, le schéma Snowflake présente également ses propres avantages. Voyons ce qu'il en est :

  • Moins de redondance des données: La normalisation garantit que les mêmes données ne sont pas stockées plusieurs fois, ce qui réduit la duplication.
  • Stockage efficace pour les grands ensembles de données: Ce schéma permet d'économiser de l'espace de stockage en évitant les données répétées, ce qui le rend idéal pour la gestion de grands ensembles de données.

Cependant, malgré ses avantages, elle présente aussi quelques limites. Par exemple,les requêtes peuvent être plus lentes parce qu'il y a plus de jointures entre les tableaux. En outre, la structure à plusieurs niveaux est plusdifficile à concevoir et à gérer que les schémas plus simples comme le schéma en étoile. Par conséquent, n'optez pour cette solution que si vous disposez d'une équipe d'administrateurs de bases de données expérimentés.

Je vous recommande de consulter le cours sur la conception de bases de données si vous souhaitez en savoir plus sur la structuration efficace des données à des fins d'analyse. 

Différences entre Star Schema et Snowflake Schema

Les schémas en étoile et Snowflake sont tous deux largement utilisés dans l'entreposage de données, mais leurs caractéristiques uniques les rendent adaptés à des besoins différents. Voyons comment ces schémas diffèrent en termes de structure, de performances, de besoins de stockage et de cas d'utilisation.

Structure

Tous les tableaux de dimensions sont directement reliés à un tableau de faits central dans un schéma en étoile. Cela signifie que toutes vos données de référence se trouvent à un pas de vos données principales, ce qui les rend faciles à comprendre et à utiliser.

En comparaison, un schéma Snowflake divise les tableaux de dimensions en tableaux de sous-dimensions plus petits et plus spécifiques. Par exemple, vous pouvez avoir des tableaux distincts pour les pays, les États et les villes au lieu d'un seul tableau de localisation. Bien que cela crée une structure plus organisée et plus détaillée, cela signifie également que davantage de connexions (ou jointures) sont nécessaires pour accéder à vos données - une des principales raisons pour lesquelles le schéma Snowflake est plus complexe que le schéma en étoile.

Performance

En termes de rapidité, les schémas en étoile sont meilleurs. Étant donné que tous les tableaux de dimensions sont directement connectés au tableau des faits, les requêtes nécessitent moins de jointures, ce qui se traduit par des performances accrues. Supposons que vous souhaitiez analyser les ventes par région. Dans ce cas, vous pouvez utiliser le schéma en étoile pour récupérer les données avec un minimum de traitement.

À l'inverse, les schémas Snowflake sont plus lents car vous devez vous connecter à travers plusieurs tableaux pour récupérer les données. Chaque jointure ajoute du temps de traitement, ce qui rend les schémas Snowflake moins efficaces pour les tâches nécessitant des résultats de requête rapides.

Le cours Joining Data in SQL est une excellente introduction pour apprendre à joindre des tableaux, à appliquer la théorie des ensembles relationnels et à travailler avec des sous-requêtes.

Exigences en matière de stockage

Les schémas en étoile occupent plus d'espace de stockage car ils stockent des informations redondantes dans les tableaux de dimensions. Par exemple, si plusieurs produits appartiennent à la même catégorie, le nom de la catégorie se répète pour chaque produit, ce qui augmente les besoins de stockage.

Cependant, les schémas Snowflake normalisent les données afin de ne stocker toutes les informations qu'une seule fois. Par exemple, au lieu de répéter les noms des catégories, ils sont stockés dans un tableau distinct et liés au tableau des produits à l'aide de clés étrangères. Cette conception permet d'économiser de l'espace de stockage, ce qui en fait un outil idéal pour les grands ensembles de données.

Cas d'utilisation

Les schémas en étoile sont idéaux pour les systèmes de traitement analytique en ligne (OLAP), les rapports et les tâches de veille stratégique. Leur simplicité les rend parfaits pour les scénarios où la rapidité et la facilité d'utilisation sont importantes, comme la création de tableaux de bord ou de rapports de vente rapides.

Les schémas Snowflake sont souvent utilisés pour l'analyse financière ou les systèmes de gestion de la relation client (CRM). Dans ce cas, l'organisation de hiérarchies détaillées et l'économie d'espace de stockage sont plus importantes que la vitesse d'interrogation.

Quand utiliser un schéma en étoile ?

Si vous souhaitez avant tout organiser vos données de manière simple et rapide, le schéma en étoile est parfait. Voici quand vous pouvez l'utiliser :

  • Si vous souhaitez exécuter des requêtes simples, telles que la recherche des ventes totales par région, utilisez le schéma en étoile. Comme tous les tableaux de dimensions se connectent directement au tableau des faits, il évite toute complexité inutile et fournit des réponses plus rapidement.
  • Vous pouvez même utiliser le schéma en étoile lorsque la vitesse est votre priorité. Il minimise le nombre de jonctions de tableaux, ce qui accélère l'exécution de vos requêtes. Je l'ai utilisé une fois pour générer plusieurs rapports de vente, ce qui m'a permis de gagner beaucoup de temps par rapport à d'autres modèles.
  • Si votre jeu de données est petit ou moyen, la redondance du schéma en étoile ne posera pas de problème. Même avec des données répétées, cela fonctionnerait bien sans saturer votre espace de stockage.

Quand utiliser un schéma Snowflake ?

Le schéma Snowflake est plus adapté à la gestion des mises à jour fréquentes ou à l'organisation de hiérarchies détaillées. Voici quand vous pouvez l'utiliser :

  • Utilisez le schéma Snowflake si vous travaillez avec de grands ensembles de données et souhaitez économiser de l'espace de stockage. Il normalise les tableaux de dimensions pour éviter les données répétées, ce qui réduit les besoins en stockage.
  • Vous pouvez même utiliser le schéma Snowflake si vos données changent souvent, comme la mise à jour des noms de régions. Il maintient des mises à jour cohérentes pour toutes les données connexes afin de minimiser les erreurs et les efforts de maintenance.
  • Si votre analyse implique plusieurs niveaux de données, le schéma Snowflake peut vous aider à organiser et à représenter ces relations de manière simple.

Tableau récapitulatif : Star Schema vs. Schéma de Snowflake 

Voici une comparaison rapide des schémas en étoile et Snowflake pour vous aider à décider lequel correspond le mieux à vos besoins en matière de données. J'ai mis en évidence les principales différences dans ce tableau, en me concentrant sur leur structure, leurs performances, leur stockage et leurs cas d'utilisation :

Fonctionnalité

Schéma en étoile

Schéma de Snowflake

Structure

Tableau central des faits lié aux dimensions dénormalisées

Tableau central des faits lié aux dimensions normalisées

Complexité

Simple, avec moins de jonctions

Complexe, avec plus de jonctions

Redondance des données

Plus grande redondance en raison des dimensions dénormalisées

Moins de redondance grâce aux dimensions normalisées

Performances des requêtes

Requêtes plus rapides grâce à une structure plus simple

Requêtes plus lentes en raison des jointures supplémentaires

Stockage

Nécessite plus de stockage en raison de la redondance

Moins d'espace de stockage grâce à la normalisation

Facilité d'entretien

Plus facile à concevoir et à entretenir

Plus complexe à concevoir et à entretenir

Convient le mieux à

Ensembles de données de petite ou moyenne taille

Ensembles de données volumineux et complexes

Réflexions finales

Dans ce blog, j'ai abordé les différences entre les schémas en étoile et Snowflake, leurs points forts et le moment où il convient d'utiliser chacun d'entre eux. J'espère que vous aurez une compréhension claire et des conseils pratiques pour votre travail ! Si vous souhaitez en savoir plus, consultez ces ressources sur DataCamp :

Devenez ingénieur en données

Faites la preuve de vos compétences en tant qu'ingénieur en données prêt à l'emploi.
Accélérer ma carrière dans les données

FAQ

Quel est l'objectif de l'indexation dans ces schémas ?

L'indexation améliore les performances des requêtes dans les deux schémas en accélérant la recherche des données.

Qu'entend-on par tableaux de dimensions et tableaux de faits ?

Les tableaux de dimensions stockent des attributs descriptifs (tels que des noms de produits ou des dates) qui décrivent les données du tableau des faits.

D'autre part, les tableaux de faits stockent des données quantitatives, telles que les chiffres de vente ou les montants des transactions, et se connectent aux tableaux de dimensions.

Ces schémas sont-ils adaptés aux données non structurées ?

Non, ces schémas sont conçus pour des données structurées. Les données non structurées nécessitent des modèles différents, tels que NoSQL ou les lacs de données.

Comment concevoir des schémas en étoile et en Snowflake ?

Pour créer et visualiser ces schémas, vous pouvez utiliser des outils de modélisation des données (ERDPlus), des outils de BI (Tableau, Power BI, QlikView) ou des plateformes cloud (Databricks).

Existe-t-il des alternatives aux schémas en étoile et en Snowflake ?

Oui, vous pouvez utiliser les schémas Galaxy, la modélisation Data Vault ou des modèles dimensionnels plus complexes. Ces options diffèrent principalement au niveau de l'organisation des données et de la gestion des relations entre les différentes informations.


Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

Je suis un stratège du contenu qui aime simplifier les sujets complexes. J'ai aidé des entreprises comme Splunk, Hackernoon et Tiiny Host à créer un contenu attrayant et informatif pour leur public.

Sujets

Apprenez-en plus sur l'ingénierie des données avec ces cours !

Certification disponible

cours

Introduction à l'ingénierie des données

4 hr
115.9K
Découvrez le monde de l'ingénierie des données dans ce cours de courte durée, couvrant des outils et des sujets tels que l'ETL et le cloud computing.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow