Vues matérialisées continues
Ce document présente les vues matérialisées continues et leurs cas d'utilisation courants. Avant de lire cette page, vous devez avoir pris connaissance de la présentation de Bigtable.
Dans Bigtable, une vue matérialisée continue est un résultat précalculé entièrement géré d'une requête SQL exécutée en continu, qui met à jour de manière incrémentielle la vue matérialisée continue. La requête SQL peut inclure des agrégations et des transformations sur la table Bigtable sous-jacente. L'utilisation de vues matérialisées continues peut améliorer les performances et l'efficacité.
Les données d'une vue matérialisée continue incluent les éléments suivants :
- Valeurs agrégées ou transformées dérivées des données de la table source
- Valeurs non agrégées qui définissent la clé de regroupement
Les vues matérialisées continues vous permettent de pré-agréger vos données à mesure que vous les ingérez. De plus, une vue matérialisée continue a un schéma différent de sa table source, qui présente les données de la table source dans une structure optimisée pour les requêtes avec des modèles de recherche différents de ceux utilisés sur la table source.
Voici les principales caractéristiques des vues matérialisées continues dans Bigtable :
- Aucune maintenance : une vue matérialisée continue est précalculée en arrière-plan. Les modifications apportées aux données de la table source, y compris les mises à jour et les suppressions, sont automatiquement propagées en arrière-plan à la vue matérialisée continue, sans aucune action de l'utilisateur.
- Schémas de développement SQL : les vues matérialisées continues sont basées sur GoogleSQL pour les requêtes Bigtable, y compris les fonctions, les filtres et les agrégations SQL.
- Synchronisation avec la récupération de mémoire : une vue matérialisée continue reste synchronisée avec les règles de récupération de mémoire de sa table source. Elle se met à jour automatiquement lorsque les données de la table expirent ou sont supprimées.
- La latence de lecture et d'écriture n'est pas affectée : une vue matérialisée continue a un impact minimal sur les performances de la table source lorsque les clusters de l'instance sont correctement provisionnés ou utilisent l'autoscaling.
- Cohérence à terme : les vues matérialisées continues sont calculées en arrière-plan. Les mises à jour d'une vue matérialisée continue peuvent être retardées, mais les résultats de la vue matérialisée continue sont toujours cohérents au fil du temps.
La clé de ligne, le qualificatif de colonne et les valeurs de colonne que vous utilisez pour définir une vue matérialisée continue sont traités comme des données de service. Pour cette raison, ne créez pas de vue matérialisée continue à l'aide de clés de ligne, de qualificatifs de colonne ou de valeurs de colonne contenant des informations sensibles. Pour en savoir plus sur le traitement des données de service, consultez l'Avis de confidentialitéGoogle Cloud .
Vous pouvez créer une vue matérialisée continue à l'aide de Google Cloud CLI, de l'éditeur de requêtes Bigtable Studio dans la console Google Cloud ou des bibliothèques clientes Bigtable pour Java et Go.
Vous pouvez lire une vue matérialisée continue à l'aide des éléments suivants :
- Éditeur de requête Bigtable Studio
- Les bibliothèques clientes Bigtable compatibles avec les requêtes SQL
- Appel d'API
ReadRows
à l'aide des bibliothèques clientes Bigtable pour Java et Go
Pour en savoir plus, consultez Lire à partir d'une vue matérialisée continue.
Quand utiliser des vues matérialisées continues
Les vues matérialisées continues vous permettent de définir une nouvelle représentation de vos données Bigtable à l'aide de SQL. Une fois créée, une vue matérialisée continue restructure en continu et automatiquement les données de la table source dans le format défini par la requête SQL. Ensuite, au lieu d'interroger votre table et de transformer ou d'agréger les données après les avoir lues, vous pouvez interroger la vue matérialisée continue.
Les vues matérialisées continues peuvent améliorer les performances des requêtes pour les cas d'utilisation suivants :
- Pré-agrégation des données : vous pouvez utiliser une vue matérialisée continue pour agréger les données entrantes sur plusieurs lignes. Cela vous permet de récupérer rapidement des données résumées et agrégées, telles que des métriques pour les tableaux de bord.
- Automatisation des architectures lambda et kappa : si votre application nécessite un mélange de données de pipeline de streaming en temps réel et de données de pipeline par lot contenant des données historiques, utilisez des vues matérialisées continues. Ces vues fournissent une vue de toutes les sources de données qui est mise à jour au fil du temps pour refléter les modifications apportées aux données sous-jacentes, sans avoir besoin d'outils de traitement de flux supplémentaires ni de jobs ETL personnalisés.
- Schémas d'accès secondaires : les vues matérialisées continues créent une autre représentation de vos données. Cette représentation peut être optimisée pour les requêtes avec des modèles de recherche différents de ceux que vous utilisez dans les requêtes sur la table source. Pour en savoir plus sur ces modèles, consultez Créer un index secondaire global.
Pour comparer les vues matérialisées continues avec d'autres types de vues Bigtable, consultez Tables et vues.
Quand utiliser des compteurs ?
Une autre façon de pré-agréger vos données consiste à créer des compteurs distribués à l'aide de cellules d'agrégation.
Les écritures dans les cellules agrégées sont immédiatement lisibles à partir du cluster dans lequel elles sont écrites. Les vues matérialisées continues sont traitées après l'écriture des données et finissent par devenir cohérentes avec la table source.
Utilisez des compteurs au lieu de vues matérialisées continues pour les éléments suivants :
- Agrégations qui ne nécessitent pas de filtres et qui ne doivent pas s'étendre sur plusieurs lignes
- Si vous devez lire immédiatement vos écritures à partir du cluster dans lequel elles sont écrites
Utilisez des vues matérialisées continues lorsque vous souhaitez effectuer les opérations suivantes :
- Générer une clé différente pour les requêtes sur vos agrégations
- Afficher les modifications apportées à la table de base dans vos agrégations
- Combiner automatiquement les données de plusieurs lignes
Utilisez une combinaison de compteurs et de vues matérialisées continues pour les cas d'utilisation tels que ceux où vous souhaitez effectuer les opérations suivantes :
- Capturer des métriques récentes dans une cellule agrégée, mais conserver les cumuls historiques de ces métriques
- Combiner des métriques dans une vue matérialisée continue
Provisionnement et performances des ressources
Le traitement continu des vues matérialisées se fait en tant que job en arrière-plan de faible priorité. Par conséquent, l'impact sur les performances des applications et la latence de lecture et d'écriture sur la table source est minime, à condition que vos clusters soient de taille appropriée.
Pour vous assurer que les données de la vue matérialisée continue restent à jour, il est recommandé d'activer l'autoscaling pour les clusters de l'instance contenant votre vue matérialisée continue. L'autoscaling ajoute automatiquement suffisamment de nœuds pour gérer les frais généraux de traitement, puis les supprime lorsqu'ils ne sont plus nécessaires. Cela permet de s'assurer qu'une capacité de calcul suffisante est disponible lors de l'exécution de la requête SQL en cours d'exécution. L'autoscaling peut également vous assurer de disposer de suffisamment de nœuds pour répondre aux besoins de stockage de vos vues matérialisées continues.
Les vues matérialisées continues sont comptabilisées dans la limite de 1 000 tables par instance.
Stockage
Pour chaque vue matérialisée continue, Bigtable stocke les éléments suivants :
- Données de la vue matérialisée continue
- Stockage intermédiaire
Comme toute table Bigtable, une vue matérialisée continue existe sur tous les clusters de l'instance qui la contient. Les clusters de votre instance doivent disposer de suffisamment de nœuds pour stocker la table source et les vues matérialisées continues basées sur la table. L'autoscaling permet à vos clusters d'augmenter ou de diminuer en taille en fonction de l'évolution des besoins de stockage.
Une vue matérialisée continue doit être créée dans la même instance que la table source, même si le stockage de la vue matérialisée continue est distinct de celui de la table source.
Stockage des vues matérialisées continues
Une vue matérialisée continue contient les données résultant de la requête SQL sur laquelle elle est basée. Cela signifie qu'elle contient des valeurs agrégées définies par des clauses d'agrégation dans la requête SQL et des valeurs non agrégées qui définissent la clé de regroupement.
Stockage intermédiaire
Pour permettre la synchronisation d'une vue matérialisée continue avec sa table source, Bigtable utilise un stockage intermédiaire pour stocker des copies des données dont il a besoin pour mettre à jour de manière incrémentielle la vue matérialisée continue.
La quantité de données dans le stockage intermédiaire est à peu près équivalente à la quantité de données analysées dans la table source pour générer le résultat de la requête SQL qui définit la vue matérialisée continue. Par exemple, si votre requête agrège des données sur l'ensemble de la table, Bigtable conserve l'équivalent de l'intégralité de la table dans un espace de stockage intermédiaire. Une vue matérialisée continue basée sur une requête de plages de clés de ligne ou de colonnes spécifiques ne conserve que ces lignes ou colonnes dans le stockage intermédiaire.
Le stockage intermédiaire persiste pendant toute la durée de vie de la vue matérialisée continue pour prendre en charge efficacement les mises à jour incrémentielles de la vue et propager les suppressions de la table source à la vue matérialisée continue. Vous ne pouvez pas lire les données dans le stockage intermédiaire. Pour obtenir des insights sur votre utilisation du stockage intermédiaire, consultez Métriques des vues matérialisées continues.
Réplication
Dans les instances qui utilisent la réplication, les vues matérialisées continues ne sont pas répliquées de la même manière que les tables. Au lieu de cela, chaque cluster d'une instance traite la vue matérialisée continue de manière indépendante, en utilisant sa propre copie de la table source. Cela signifie, par exemple, que les données écrites dans une table source du cluster A sont répliquées dans la table du cluster B, puis dans la vue matérialisée continue du cluster B.
Coûts
L'utilisation de vues matérialisées continues n'entraîne aucun coût par ressource. Toutefois, la création et la synchronisation de vues matérialisées continues nécessitent du traitement et du stockage, et vous sont facturées aux tarifs standards. Lorsque vous créez une vue matérialisée continue, vous pouvez vous attendre à une augmentation des éléments suivants :
- Stockage : le stockage des données dans la vue matérialisée continue et le stockage intermédiaire vous sont facturés. Pour en savoir plus, consultez Stockage.
- Calcul : la synchronisation continue de la table source et de la vue matérialisée nécessite un traitement du processeur. Vos clusters peuvent avoir besoin de plus de nœuds pour gérer le travail en arrière-plan supplémentaire.
En même temps, vous constaterez peut-être une diminution du traitement de la table source, par exemple lorsque vous n'effectuez plus d'analyses de plage des données pour effectuer des calculs répétés et d'autres requêtes moins efficaces. Vous pouvez également éliminer la nécessité d'exécuter des jobs de pipeline, tels que Dataflow ou Spark, pour agréger les données sources et les réécrire dans Bigtable.
Pour en savoir plus sur les tarifs, consultez la page Tarifs de Bigtable. Pour obtenir des métriques qui peuvent vous aider à surveiller l'utilisation de vos vues matérialisées continues, consultez Métriques.
Métriques
Une vue matérialisée continue signale plusieurs métriques clés à Cloud Logging que vous pouvez utiliser pour surveiller vos vues matérialisées continues.
Métrique | Description |
---|---|
materialized_view/max_delay |
Limite supérieure du délai de traitement pour la vue matérialisée continue |
materialized_view/storage |
Quantité de données utilisées pour le stockage de la vue matérialisée continue (en octets) |
materialized_view/intermediate_storage |
Quantité de données utilisées par le traitement intermédiaire pour la vue matérialisée continue (en octets) |
table/materialized_view_intermediate_storage |
Quantité de données utilisées par le traitement intermédiaire pour les vues matérialisées continues définies dans ce tableau |
materialized_view/user_errors |
Nombre d'erreurs provenant des données utilisateur pour la vue matérialisée continue. Les erreurs utilisateur empêchent les données de se propager à la vue. |
materialized_view/system_errors |
Nombre d'erreurs système pour la vue matérialisée continue |
Vous pouvez également utiliser de nombreuses métriques de table Bigtable pour surveiller une vue matérialisée continue, en utilisant l'ID de la vue matérialisée continue à la place de l'ID de la table. En particulier, les vues matérialisées continues sont incluses dans la répartition des métriques du processeur, ce qui peut vous aider à comprendre leur impact. Les métriques Bigtable pour les requêtes par seconde, la latence et le débit sont générées lorsque vous lisez une vue matérialisée continue à l'aide de la méthode ReadRows
de l'API Data. Pour en savoir plus, consultez Métriques.
Pour commencer à utiliser Cloud Logging, consultez la présentation de l'interrogation et de l'affichage des journaux.
Limites
- Vous ne pouvez créer qu'une seule vue matérialisée continue par table.
- Lorsque vous créez une vue sans
_key
spécifié, les colonnes sélectionnées dans la table source ne doivent pas êtreNULL
. Pour en savoir plus, consultez Clés de ligne définies par la clauseGROUP BY
. - Vous ne pouvez pas modifier la requête SQL qui définit une vue matérialisée continue. Vous devez supprimer la vue matérialisée continue et en créer une autre avec vos modifications.
- Vous ne pouvez pas créer de vue matérialisée continue à partir d'une autre vue matérialisée continue ni à partir d'une vue logique.
- Vous ne pouvez pas configurer de stratégies de récupération de mémoire pour une vue matérialisée continue. La conservation des données est régie par les règles de récupération des données inutiles pour la table source. La récupération des données inutiles de la source est automatiquement reflétée dans la vue matérialisée continue.
Étapes suivantes
- Requête continue sur une vue matérialisée
- Créer et gérer des vues matérialisées continues
- Créer un index secondaire global
- Bonnes pratiques relatives à la conception de schémas
- Comptage distribué dans Bigtable