Visualizações materializadas contínuas

Este documento oferece uma visão geral das visualizações materializadas contínuas e dos casos de uso comuns delas. Antes de ler esta página, familiarize-se com a visão geral do Bigtable.

No Bigtable, uma visualização materializada contínua é o resultado de um processo contínuo e totalmente gerenciado em segundo plano. Esse processo usa uma consulta SQL fornecida por você para criar e manter uma tabela pré-computada que o Bigtable atualiza de forma incremental à medida que os dados de origem mudam. A consulta SQL pode incluir agregações e transformações na tabela do Bigtable subjacente.

Os dados em uma visualização materializada contínua incluem o seguinte:

  • Valores agregados ou transformados derivados de dados na tabela de origem
  • Valores não agregados que definem a chave de agrupamento

Com as visualizações materializadas contínuas, é possível pré-agregar os dados à medida que são ingeridos. Além disso, uma visualização materializada contínua tem um esquema diferente da tabela de origem, apresentando os dados dessa tabela em uma estrutura otimizada para consultas com padrões de pesquisa diferentes das consultas usadas na tabela de origem.

Confira a seguir as principais características das visualizações materializadas contínuas no Bigtable:

  • Manutenção zero: uma visualização materializada contínua é pré-computada em segundo plano. As mudanças de dados na tabela de origem, incluindo atualizações e exclusões, são propagadas automaticamente em segundo plano para a visualização materializada contínua, sem a necessidade de uma ação do usuário.
  • Padrões de desenvolvimento de SQL: as visualizações materializadas contínuas são baseadas no GoogleSQL para consultas do Bigtable, incluindo funções, filtros e agregações de SQL.
  • Sincronização com a coleta de lixo: uma visualização materializada contínua permanece sincronizada com as políticas de coleta de lixo da tabela de origem, sendo atualizada automaticamente à medida que os dados da tabela expiram ou são excluídos.
  • A latência de leitura e gravação não é afetada: uma visualização materializada contínua tem um impacto mínimo no desempenho da tabela de origem quando os clusters da instância são provisionados adequadamente ou usam o escalonamento automático.
  • Consistência eventual:as visualizações materializadas contínuas são computadas em segundo plano. As atualizações de uma visualização materializada contínua podem ser atrasadas, mas os resultados materializados contínuos são sempre consistentes ao longo do tempo.

A chave de linha, o qualificador de coluna e os valores de coluna usados para definir uma visualização materializada contínua são tratados como dados de serviço. Por esse motivo, não crie uma visualização materializada contínua usando chave de linha, qualificador de coluna ou valores de coluna que contenham informações sensíveis. Para informações sobre como os dados de serviço são tratados, consulte o Google Cloud Aviso de privacidade.

É possível criar uma visualização materializada contínua usando a Google Cloud CLI, o editor de consultas do Bigtable Studio no Google Cloud console do Google Cloud ou as bibliotecas de cliente do Bigtable para Java e Go.

É possível ler uma visualização materializada contínua usando o seguinte:

Para mais informações, consulte Como ler uma visualização materializada contínua.

Quando usar visualizações materializadas contínuas

As visualizações materializadas contínuas permitem definir uma nova representação dos dados do Bigtable usando SQL. Depois de criada, uma visualização materializada contínua reestrutura de forma contínua e automática os dados da tabela de origem no formato definido pela consulta SQL. Em seguida, em vez de consultar a tabela e transformar ou agregar os dados depois de lê-los, é possível consultar a visualização materializada contínua.

As visualizações materializadas contínuas podem melhorar o desempenho das consultas nos seguintes casos de uso:

  • Pré-agregação de dados: é possível usar uma visualização materializada contínua para agregar dados recebidos em linhas. Isso permite recuperar dados resumidos e agregados, como métricas para painéis, rapidamente.
  • Automação de arquiteturas lambda e kappa: se o aplicativo exigir uma combinação de dados de pipeline de streaming em tempo real e dados de pipeline em lote que contenham dados históricos, use visualizações materializadas contínuas. Essas visualizações fornecem uma visão de todas as fontes de dados que é atualizada ao longo do tempo para refletir as mudanças nos dados subjacentes, sem a necessidade de ferramentas adicionais de processamento de stream ou jobs de ETL personalizados.
  • Padrões de acesso secundário: as visualizações materializadas contínuas criam uma representação alternativa dos dados. Essa representação pode ser otimizada para consultas com padrões de pesquisa diferentes daqueles usados em consultas na tabela de origem. Isso torna as visualizações materializadas contínuas uma ferramenta poderosa para criar o que é efetivamente um índice secundário assíncrono nos dados. Para mais informações sobre esses padrões, consulte Criar um índice secundário assíncrono.

Para comparar visualizações materializadas contínuas com outros tipos de visualizações do Bigtable, consulte Tabelas e visualizações.

Quando usar contadores

Outra maneira de pré-agregar os dados é criar contadores distribuídos usando células agregadas.

As gravações em células agregadas podem ser lidas imediatamente no cluster em que foram gravadas. As visualizações materializadas contínuas são processadas depois que os dados são gravados e acabam se tornando consistentes com a tabela de origem.

Use contadores em vez de visualizações materializadas contínuas para o seguinte:

  • Agregações que não exigem filtros e não precisam estar em linhas
  • Se você precisar ler imediatamente as gravações do cluster em que elas foram gravadas

Use visualizações materializadas contínuas quando quiser fazer o seguinte:

  • Gerar uma chave diferente para consultas nas agregações
  • Ver as mudanças na tabela base refletidas nas agregações
  • Combinar dados automaticamente em várias linhas

Use uma combinação de contadores e visualizações materializadas contínuas para casos de uso como quando quiser fazer o seguinte:

  • Capturar métricas recentes em uma célula agregada, mas manter os resumos históricos dessas métricas
  • Combinar métricas em uma visualização materializada contínua

Provisionamento de recursos e desempenho

O processamento contínuo de visualizações materializadas contínuas ocorre como um job em segundo plano de baixa prioridade. Como resultado, ele tem um impacto mínimo no desempenho do aplicativo e na latência de leitura e gravação na tabela de origem, desde que os clusters tenham tamanho adequado.

Como prática recomendada para garantir que os dados na visualização materializada contínua permaneçam atualizados, ative o escalonamento automático para os clusters na instância que contém a visualização materializada contínua. O escalonamento automático adiciona nós suficientes para lidar com a sobrecarga de processamento e os remove quando não são mais necessários. Isso ajuda a garantir que capacidade de computação suficiente esteja disponível durante a execução da consulta SQL contínua. O escalonamento automático também pode garantir que você tenha nós suficientes para atender às necessidades de armazenamento das visualizações materializadas contínuas.

As visualizações materializadas contínuas são contabilizadas no limite de 1.000 tabelas por instância.

Como criar visualizações materializadas contínuas em tabelas atuais

Ao criar uma visualização materializada contínua para uma tabela atual, o Bigtable inicia um processo único que preenche a visualização com dados da tabela. O tempo necessário para esse preenchimento inicial depende do tamanho da tabela e da complexidade da consulta. Durante esse período, a visualização não está disponível para consulta. Esse preenchimento inicial de dados é executado como um job em segundo plano de baixa prioridade para minimizar o efeito no desempenho do cluster. Para tabelas grandes, é possível adicionar temporariamente mais nós ao cluster para acelerar a criação da visualização.

O diagrama a seguir mostra o processo de criação de visualizações materializadas contínuas:

O processo de criação de visualizações materializadas contínuas no Bigtable.
Figura 1. O processo de criação de visualizações materializadas contínuas no Bigtable (clique para ampliar).

Por exemplo, suponha que a tabela de origem contenha linhas com chaves que seguem o padrão advertiser_id#region#ad_id e um grupo de colunas, data, que inclui um qualificador de coluna spend_usd com dados numéricos que representam gastos com publicidade:

Chave de linha data:spend_usd
adv1#us-east#ad1 100
adv1#us-west#ad2 150
adv2#us-east#ad3 200

Se você usar a consulta a seguir para definir uma visualização materializada contínua dessa tabela, o preenchimento inicial de 1 TB de dados será concluído em aproximadamente três horas em um cluster de 175 nós.

SELECT
          SPLIT(_key, "#")[SAFE_OFFSET(0)] AS advertiser_id,
          count(*) AS count,
          sum(cast(cast(data['spend_usd'] as string) as int64)) as sum_spend
        FROM `$0`
        GROUP BY advertiser_id

Como o Bigtable é escalonado linearmente, um cluster de 175 nós processa 2 TB de dados em aproximadamente seis horas e 10 TB em aproximadamente 30 horas, supondo que os dados tenham um formato semelhante. Para reduzir o tempo necessário para o preenchimento inicial, é possível adicionar temporariamente mais nós ao cluster ou, se estiver usando o escalonamento automático, aumentar temporariamente a contagem máxima de nós.

Armazenamento

Para cada visualização materializada contínua, o Bigtable armazena o seguinte:

  • Os dados na visualização materializada contínua
  • Armazenamento intermediário

Como qualquer tabela do Bigtable, uma visualização materializada contínua existe em todos os clusters da instância que a contém. Os clusters na instância precisam ter nós suficientes para armazenar a tabela de origem e todas as visualizações materializadas contínuas com base na tabela. O escalonamento automático permite que os clusters escalonar verticalmente ou diminuam de tamanho à medida que os requisitos de armazenamento mudam.

Uma visualização materializada contínua precisa ser criada na mesma instância da tabela de origem, mesmo que o armazenamento da visualização materializada contínua seja diferente da tabela de origem.

Armazenamento de visualização materializada contínua

Uma visualização materializada contínua contém dados resultantes da consulta SQL em que a visualização materializada contínua é baseada. Isso significa que ela contém valores agregados definidos por cláusulas de agregação na consulta SQL e valores não agregados que definem a chave de agrupamento.

Armazenamento intermediário

Para oferecer suporte à sincronização de uma visualização materializada contínua com a tabela de origem, o Bigtable usa o armazenamento intermediário para armazenar cópias dos dados necessários para atualizar incrementalmente a visualização materializada contínua.

A quantidade de dados no armazenamento intermediário é aproximadamente equivalente à quantidade de dados verificados na tabela de origem para gerar o resultado da consulta SQL que define a visualização materializada contínua. Por exemplo, se a consulta agregar dados em toda a tabela, o Bigtable manterá o equivalente a toda a tabela no armazenamento intermediário. Uma visualização materializada contínua baseada em uma consulta de intervalos ou colunas de chave de linha específicos mantém apenas essas linhas ou colunas no armazenamento intermediário.

O armazenamento intermediário persiste durante a vida útil da visualização materializada contínua para oferecer suporte eficiente a atualizações incrementais da visualização e propagar exclusões da tabela de origem para a visualização materializada contínua. Não é possível ler os dados no armazenamento intermediário. Para insights sobre o uso do armazenamento intermediário, consulte Métricas de visualização materializada contínua.

Replicação

Em instâncias que usam replicação, as visualizações materializadas contínuas não são replicadas da mesma forma que as tabelas. Em vez disso, cada cluster em uma instância processa a visualização materializada contínua de forma independente, usando a própria cópia da tabela de origem. Isso significa, por exemplo, que os dados gravados em uma tabela de origem no cluster A são replicados para a tabela no cluster B e, em seguida, para a visualização materializada contínua no cluster B.

Custos

Não há custo por recurso para usar visualizações materializadas contínuas. No entanto, a criação e a sincronização de visualizações materializadas contínuas exigem processamento e armazenamento, e você recebe cobranças pelas taxas padrão. Você pode esperar aumentos no seguinte ao criar uma visualização materializada contínua:

  • Armazenamento : você recebe cobranças para armazenar os dados na visualização materializada contínua e para o armazenamento intermediário. Para mais informações, consulte Armazenamento.
  • Computação: a sincronização contínua da tabela de origem e da visualização materializada contínua exige processamento de CPU, e os clusters podem precisar de mais nós para lidar com o trabalho em segundo plano adicional.

Ao mesmo tempo, você pode notar uma diminuição no processamento da tabela de origem, como quando não estiver mais realizando verificações de intervalo dos dados para executar cálculos repetidos e outras consultas menos eficientes. Você também pode eliminar a necessidade de executar jobs de pipeline, como Dataflow ou Spark, para agregar dados de origem e gravá-los de volta no Bigtable.

Para mais informações sobre preços, consulte Preços do Bigtable. Para métricas que podem ajudar a monitorar o uso da visualização materializada contínua, consulte Métricas.

Métricas

Uma visualização materializada contínua informa várias métricas importantes ao Cloud Logging que podem ser usadas para monitorar as visualizações materializadas contínuas.

Métrica Descrição
materialized_view/max_delay Limite superior do atraso de processamento para a visualização materializada contínua
materialized_view/storage Quantidade de dados usados para o armazenamento de visualização materializada contínua em bytes
materialized_view/intermediate_storage Quantidade de dados usados pelo processamento intermediário para a visualização materializada contínua em bytes
table/materialized_view_intermediate_storage Quantidade de dados usados pelo processamento intermediário para visualizações materializadas contínuas definidas nessa tabela
materialized_view/user_errors Número de erros de dados do usuário para a visualização materializada contínua. Os erros do usuário impedem que os dados sejam propagados para a visualização.
materialized_view/system_errors Número de erros do sistema para a visualização materializada contínua

Também é possível usar muitas métricas de tabela do Bigtable para monitorar uma visualização materializada contínua, usando o ID da visualização materializada contínua em vez do ID da tabela. Em particular, as visualizações materializadas contínuas são incluídas em o detalhamento das métricas de CPU, o que pode ajudar a entender o impacto delas. As métricas do Bigtable para solicitações por segundo, latência e capacidade de processamento são geradas quando você lê uma visualização materializada contínua usando o método ReadRows da API Data. Para mais informações, consulte Métricas.

Para começar a usar o Cloud Logging, consulte Visão geral de consultas e visualização de registros.

Limitações

  • É possível criar até cinco visualizações materializadas contínuas por tabela. Se necessário, é possível solicitar um aumento desse limite entrando em contato com o Cloud Customer Care.
  • Ao criar uma visualização sem um _key especificado, as colunas selecionadas na tabela de origem não podem ser NULL. Para mais informações, consulte Chaves de linha definidas pela GROUP BY cláusula.
  • Não é possível modificar a consulta SQL que define uma visualização materializada contínua. É necessário excluir a visualização materializada contínua e criar uma nova com as mudanças.
  • Não é possível criar uma visualização materializada contínua de outra visualização materializada contínua ou de uma visualização lógica.
  • Não é possível configurar políticas de coleta de lixo para uma visualização materializada contínua. Toda a retenção de dados é regida pelas políticas de coleta de lixo da tabela de origem, e a coleta de lixo da origem é refletida automaticamente na visualização materializada contínua.

A seguir