Présentation des tables en cluster

Ce document offre un aperçu des capacités du clustering des tables dans BigQuery.

Présentation

Lorsque vous créez une table en cluster dans BigQuery, les données de la table sont automatiquement organisées en fonction du contenu d'une ou plusieurs colonnes du schéma de la table. Les colonnes que vous spécifiez sont utilisées pour rapprocher les données associées. Lorsque vous mettez une table en cluster à l'aide de plusieurs colonnes, l'ordre des colonnes que vous spécifiez est important. Il détermine l'ordre de tri des données.

Le clustering peut améliorer les performances de certains types de requêtes, telles que les requêtes utilisant des clauses de filtre et celles agrégeant des données. Lorsque des données sont écrites dans une table en cluster par une tâche de requête ou de chargement, BigQuery trie les données à l'aide des valeurs des colonnes de clustering. Ces valeurs permettent d'organiser les données en plusieurs blocs dans le stockage BigQuery. Lorsque vous soumettez une requête contenant une clause qui filtre les données en fonction des colonnes de clustering, BigQuery utilise les blocs triés pour éliminer les analyses de données superflues. Vous n'observerez sans doute pas de différence significative en matière de performances des requêtes entre une table en cluster et une table non mise en cluster si la table ou la partition est inférieure à 1 Go.

De même, lorsque vous soumettez une requête qui agrège des données sur la base des valeurs des colonnes de clustering, les performances sont améliorées car les blocs triés rapprochent les lignes avec des valeurs similaires.

Quand utiliser le clustering

Le partitionnement et le clustering peuvent améliorer les performances et réduire le coût des requêtes.

Utilisez le clustering dans les cas suivants :

  • Vous n'avez pas besoin de garanties de coûts strictes avant d'exécuter la requête.
  • Vous avez besoin de plus de précision que le partitionnement seul ne le permet. Pour bénéficier des avantages du clustering en plus des avantages du partitionnement, vous pouvez utiliser la même colonne pour le partitionnement et le clustering.
  • Vos requêtes utilisent généralement des filtres ou des agrégations sur plusieurs colonnes spécifiques.
  • La cardinalité du nombre de valeurs dans une colonne ou dans un groupe de colonnes est importante.

Utilisez le partitionnement dans les cas suivants :

  • Vous souhaitez connaître le coût des requêtes avant leur exécution. L'élimination des partitions est effectuée avant l'exécution de la requête, ce qui vous permet de connaître le coût après l'opération d'élimination au moyen d'une simulation. L'élimination du cluster est effectuée lors de l'exécution de la requête. Par conséquent, le coût n'est connu qu'une fois la requête terminée.

  • Vous avez besoin d'une gestion au niveau de la partition. Par exemple, vous souhaitez définir un délai d'expiration de partition, charger des données dans une partition spécifique ou supprimer des partitions.

  • Vous souhaitez spécifier le mode de partitionnement des données et les données de chaque partition. Par exemple, vous souhaitez définir la précision temporelle ou définir les plages utilisées pour partitionner la table pour le partitionnement par plages d'entiers.

Préférez le clustering au partitionnement dans les cas suivants :

  • Le partitionnement génère une petite quantité de données par partition (environ moins de 1 Go).
  • Le partitionnement entraîne un grand nombre de partitions au-delà des limites imposées sur les tables partitionnées.
  • Suite au partitionnement, vos opérations de mutation modifient fréquemment la majorité des partitions de la table (par exemple, toutes les quelques minutes).

Vous pouvez également combiner le partitionnement avec le clustering. Les données sont d'abord partitionnées, puis les données de chaque partition sont mises en cluster sur la base des colonnes de clustering.

Lorsque la table est interrogée, le partitionnement définit une limite supérieure du coût de la requête en fonction de l'élimination de la partition. D'autres économies de coût peuvent s'appliquer lors de l'exécution effective de la requête grâce à l'élimination de cluster.

Mettre en cluster des tables partitionnées

Dans une table partitionnée, les données sont stockées dans des blocs physiques, chacun contenant une partition de données. Une table partitionnée conserve ces propriétés dans toutes les opérations qui la modifient : tâches de requête, instructions LMD (langage de manipulation de données), instructions LDD (langage de définition de données), tâches de chargement et tâches de copie. Cela nécessite que BigQuery gère plus de métadonnées qu'une table non partitionnée. À mesure que le nombre de partitions augmente, la quantité de métadonnées croît également.

Bien qu'il soit nécessaire de gérer davantage de métadonnées, BigQuery, en s'assurant que les données sont partitionnées globalement, peut estimer avec plus de précision la quantité d'octets traités par une requête avant qu'elle ne soit exécutée. Ce calcul des coûts permet de définir un plafond de coût final de la requête.

Dans une table en cluster, BigQuery trie automatiquement les données en fonction des valeurs des colonnes de clustering et les organise dans des blocs de stockage de taille optimale. Vous pouvez réaliser un tri plus fin en créant une table à la fois mise en cluster et partitionnée. Une table en cluster conserve les propriétés de tri dans le contexte de chaque opération qui la modifie. Par conséquent, BigQuery risque de ne pas pouvoir estimer avec précision les octets traités par la requête ni son coût. Lorsque des blocs de données sont éliminés lors de l'exécution d'une requête, BigQuery permet de réduire au mieux les coûts de cette dernière.

Remettre automatiquement en cluster

Lorsque des données sont ajoutées à une table en cluster, les données nouvellement insérées peuvent être écrites dans des blocs contenant des plages de clés qui chevauchent celles des blocs déjà écrits. Ce chevauchement des clés affaiblit la propriété de tri de la table.

Pour préserver les caractéristiques de performance d'une table en cluster, BigQuery effectue une remise en cluster automatique en arrière-plan afin de restaurer la propriété de tri de la table. Pour les tables partitionnées, le clustering est maintenu pour les données comprises dans le champ d'application de chaque partition.

Quotas et limites des tables en cluster

Lorsque vous utilisez la fonctionnalité de table en cluster avec une table partitionnée, vous êtes soumis aux limites imposées sur les tables partitionnées.

Les quotas et les limites s'appliquent également aux différents types de tâches que vous pouvez exécuter sur des tables en cluster, comme par exemple :

Pour plus d'informations sur les quotas et les limites, consultez la section Quotas et limites.

Tarifs des tables en cluster

Lorsque vous créez et utilisez des tables en cluster dans BigQuery, vos frais sont basés sur la quantité de données stockées dans les tables et sur les requêtes que vous exécutez sur les données :

  • Pour plus d'informations sur la tarification du stockage, consultez la section Tarifs de stockage.
  • Pour en savoir plus sur la tarification relative aux requêtes, consultez la section Tarifs des requêtes.

De nombreuses opérations sur les tables en cluster sont gratuites, telles que le chargement de données dans les tables en cluster, la copie de tables et de partitions, et l'exportation de données. Ces opérations sont toutefois soumises aux quotas et limites propres à BigQuery. Pour en savoir plus sur toutes les opérations gratuites, consultez la section Opérations gratuites de la page des tarifs.

Pour obtenir un exemple détaillé de tarif de tables en cluster, consultez la page des Tarifs.

Sécurité des tables

Pour savoir comment contrôler l'accès aux tables dans BigQuery, consultez la page Présentation des contrôles d'accès aux tables.

Étapes suivantes