Un schéma en étoile a une table de faits entourée de tables de dimension dénormalisées, si bien que la plupart des requêtes n'ont besoin que d'une jointure par dimension. Le flocon normalise une dimension en sous-tables, ce qui économise du stockage et centralise les attributs partagés, mais ajoute des jointures. Sur un entrepôt en colonnes, le stockage est bon marché et les jointures coûtent plus cher que la duplication : l'étoile est donc le choix par défaut. Passez au flocon quand la dimension est vraiment volumineuse, hiérarchique ou partagée entre de nombreux marts.
Pourquoi les recruteurs posent cette question
Les recruteurs s'en servent pour tester si vous savez raisonner sur des compromis physiques plutôt que réciter Kimball. Les meilleures réponses notent que la compression en colonnes rend les dimensions dénormalisées peu coûteuses, que les moteurs de requête gèrent bien les jointures par broadcast sur les petites dimensions, et que le véritable argument pour l'étoile est l'ergonomie pour les analystes plutôt que la performance brute.
Comment structurer votre réponse
- Décrivez la forme en étoile et pourquoi elle est agréable pour les analystes.
- Expliquez le flocon comme une normalisation des dimensions.
- Argumentez le compromis en termes de jointures contre stockage sur des moteurs en colonnes.
- Donnez un cas concret où le flocon est le bon choix.
- Mentionnez la granularité comme la décision qui précède les deux.
Exemple de réponse
Une étoile, c'est une table de faits à une granularité définie, avec des dimensions dénormalisées accrochées autour, si bien qu'un analyste écrit une jointure par dimension et obtient des noms de colonnes lisibles. C'est mon choix par défaut, parce que sur un entrepôt en colonnes, répéter un nom de pays sur deux millions de lignes se compresse à presque rien, et la petite dimension part en broadcast de toute façon. Le flocon prend du sens quand la dimension est réellement volumineuse et hiérarchique, par exemple une dimension produit avec un arbre de catégories que plusieurs marts doivent partager, puisque maintenir cette hiérarchie à un seul endroit vaut mieux que la dupliquer cinq fois. Le point que je soulèverais avant l'un ou l'autre, c'est la granularité. Décider que la table de faits est à une ligne par ligne de commande plutôt que par commande détermine tout en aval, et se tromper là-dessus produit le classique bug de revenus comptés deux fois. J'ai déjà dû reconstruire un mart parce que la granularité était mélangée, et c'est bien plus coûteux que n'importe quel débat sur la normalisation.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Comment décidez-vous la granularité d'une table de faits ?
- Qu'est-ce qu'une factless fact table et quand vous en serviriez-vous ?
- Comment modélisez-vous une relation plusieurs-à-plusieurs entre fait et dimension ?
Autres questions pour ingénieur data
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions