Le partitionnement découpe une table en morceaux physiquement séparés, en général par date, si bien qu'une requête filtrée élague des partitions entières et scanne moins de données. Le clustering trie les données dans le stockage selon des colonnes choisies, pour que le moteur puisse sauter des blocs sur ces prédicats. Partitionnez sur la colonne qui apparaît dans presque toutes les clauses WHERE, en général la date d'événement ; clusterisez sur les colonnes à forte cardinalité que les gens filtrent ou joignent ensuite.
Pourquoi les recruteurs posent cette question
Les recruteurs cherchent des réflexes concrets de coût et de performance, puisque le volume scanné, c'est la facture sur BigQuery et la consommation de crédits sur Snowflake. Ils vérifient aussi les erreurs classiques : partitionner sur une colonne à forte cardinalité, créer des milliers de partitions minuscules, et supposer que le clustering aide des requêtes qui ne filtrent pas sur les clés de clustering.
Comment structurer votre réponse
- Définissez le partitionnement comme un élagage physique et le clustering comme un ordonnancement dans les données.
- Donnez la règle de choix pour chaque colonne.
- Alertez sur le sur-partitionnement et le problème des petits fichiers.
- Expliquez comment vérifier le gain plutôt que le supposer.
- Reliez cela au coût, pas seulement à la vitesse.
Exemple de réponse
Le partitionnement est grossier et physique : découpez par jour, et une requête filtrée sur la semaine dernière lit sept partitions au lieu de toute la table. Le clustering est un ordonnancement fin à l'intérieur des données, pour que le moteur puisse sauter des blocs en s'appuyant sur les valeurs min et max qu'il stocke par bloc. Ma règle : partitionner sur ce qui est présent dans presque toutes les requêtes, presque toujours une date d'événement ou d'ingestion, puis clusteriser sur le ou les deux prédicats suivants, comme l'identifiant client ou le pays. L'échec que j'ai nettoyé plus d'une fois, c'est le sur-partitionnement. Quelqu'un avait partitionné par identifiant client, s'est retrouvé avec quarante mille partitions de quelques kilo-octets chacune, et la planification des requêtes à elle seule est devenue plus lente que le scan qu'elle cherchait à éviter. L'autre habitude que je garde, c'est de vérifier plutôt que de faire confiance. Sur BigQuery, je regarde les octets traités avant et après avec un dry run, parce que si l'estimation ne baisse pas, l'élagage n'a pas lieu, en général parce que le filtre enveloppe la colonne de partition dans une fonction.
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
- Pourquoi un filtre sur la colonne de partition peut-il ne pas élaguer ?
- Comment se comporte le clustering à mesure que de nouvelles données arrivent ?
- Qu'est-ce que le problème des petits fichiers et comment le corrigez-vous ?
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