Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Introdução às tabelas em cluster

As tabelas em cluster no BigQuery são tabelas que têm uma ordem de classificação de colunas definida pelo usuário usando colunas em cluster. As tabelas em cluster podem melhorar o desempenho da consulta e reduzir os custos dela.

No BigQuery, uma coluna em cluster é uma propriedade de tabela definida pelo usuário que classifica blocos de armazenamento com base nos valores nas colunas em cluster. Os blocos de armazenamento são dimensionados de modo adaptável com base no tamanho da tabela. Ela mantém as propriedades de classificação no contexto de cada operação que a modifica. As consultas que filtram ou agregam pelas colunas em cluster só verificam os blocos relevantes com base nas colunas em cluster, e não em toda a tabela ou na partição da tabela. Como resultado, talvez o BigQuery não consiga estimar com precisão os bytes a serem processados pela consulta ou os custos dela, mas tenta reduzir o total de bytes na execução.

Quando você cria uma tabela em cluster usando várias colunas, a ordem das colunas determina quais colunas têm precedência quando o BigQuery classifica e agrupa os dados em blocos de armazenamento. O exemplo a seguir compara o layout do bloco de armazenamento lógico de uma tabela não em cluster com o layout de tabelas em cluster que têm uma ou várias colunas em cluster:

O BigQuery classifica dados em tabelas em cluster para melhorar o desempenho da consulta.

Ao consultar uma tabela em cluster, você não receberá uma estimativa precisa de custo de consulta antes da execução da consulta porque o número de blocos de armazenamento a serem verificados não é conhecido antes da execução da consulta. O custo final é determinado após a conclusão da execução da consulta e é baseado nos blocos de armazenamento específicos que foram verificados.

Quando usar o clustering

Considere o clustering nos seguintes cenários:

  • Geralmente, as consultas são filtradas em colunas específicas. O clustering acelera consultas porque a consulta verifica apenas os blocos que correspondem ao filtro.
  • Suas consultas filtram colunas que têm muitos valores distintos. O clustering acelera essas consultas fornecendo ao BigQuery metadados detalhados sobre onde conseguir dados de entrada.
  • Não é preciso ter estimativas de custo rígidas antes da execução da consulta.

Considere alternativas ao clustering nas seguintes circunstâncias:

  • É necessário ter uma estimativa rigorosa de custo de consulta antes de executar uma consulta. O custo de consultas em tabelas em cluster só pode ser determinado depois que a consulta é executada.
  • Suas tabelas de consulta têm menos de 1 GB. Normalmente, o clustering não oferece ganhos de desempenho significativos em tabelas com menos de 1 GB.

Como o clustering aborda como uma tabela é armazenada, ela costuma ser uma boa opção para melhorar o desempenho da consulta. Se você precisar de métodos diferentes ou adicionais, considere o particionamento de tabelas.

Como o clustering, o particionamento usa colunas de partição definidas pelo usuário para especificar como os dados são particionados e quais são armazenados em cada partição. Ao contrário do clustering, o particionamento fornece estimativas de custo de consulta granulares antes de executar uma consulta. Como o clustering, o particionamento não reduz necessariamente o volume de dados verificados em uma consulta. O volume depende do que você define como as colunas de partição e como essas colunas são usadas como filtros de consulta durante a execução.

Outro método é combinar clustering e particionamento de tabelas. Nessa abordagem, primeiro você segmenta os dados em partições e, em seguida, agrupa os dados em cada partição pelas colunas de clustering. Para mais informações, consulte Tabelas em clustering e particionadas neste documento.

Tipos e ordem das colunas do cluster

Nesta seção, descrevemos os tipos de coluna e como a ordem das colunas funciona no clustering de tabelas.

Tipos de coluna de clusters

As colunas de cluster precisam ser de nível superior, não repetidas e que sejam de um dos seguintes tipos:

  • STRING
  • INT64
  • NUMERIC
  • BIGNUMERIC
  • DATE
  • DATETIME
  • TIMESTAMP
  • BOOL
  • GEOGRAPHY

Para mais informações sobre tipos de dados, consulte Tipos de dados do SQL padrão do Google.

Ordem das colunas do cluster

A ordem das colunas em cluster afeta o desempenho da consulta. Para aproveitar o clustering, a ordem do filtro de consulta precisa corresponder à ordem das colunas em cluster e precisa incluir pelo menos a primeira coluna em cluster.

No exemplo a seguir, a tabela de pedidos é agrupada usando uma ordem de classificação de colunas de Order_Date, Country e Status. Uma consulta que filtra Order_Date e Country é otimizada para clustering, mas uma consulta que filtra apenas Country e Status não está otimizada. Para otimizar os resultados em clustering, é preciso filtrar das colunas em cluster para começar a partir da primeira coluna em cluster.

As consultas em tabelas em cluster precisam incluir colunas em cluster na ordem inicial.

Tabelas em cluster e particionadas

É possível combinar o clustering de tabelas com o particionamento de tabelas para alcançar uma classificação precisa e otimizar ainda mais a consulta.

Em uma tabela particionada, os dados são armazenados em blocos físicos, cada um contendo uma partição de dados. Cada tabela particionada mantém vários metadados sobre as propriedades de classificação em todas as operações que a modificam. Com os metadados, o BigQuery faz uma estimativa mais precisa dos custos de consulta antes de executá-la. No entanto, o particionamento requer que o BigQuery mantenha mais metadados do que com uma tabela não particionada. À medida que o número de partições aumenta, a quantidade de metadados para manter aumenta.

Ao criar uma tabela em cluster e particionada, é possível alcançar uma classificação mais refinada, como mostra o diagrama a seguir:

Comparar tabelas não agrupadas ou particionadas com tabelas em cluster e particionadas.

Reclustering automático

Conforme os dados são adicionados a uma tabela em cluster, os novos dados são organizados em blocos, o que pode criar novos blocos de armazenamento ou atualizar os blocos existentes. A otimização de bloqueio é necessária para um desempenho ideal de consulta e armazenamento, porque novos dados podem não ser agrupados com dados que tenham os mesmos valores de cluster.

Para manter as características de desempenho de uma tabela em cluster, o BigQuery faz o reclustering automático em segundo plano. Em tabelas particionadas, o clustering é mantido para dados no escopo de cada partição.

Limitações

  • A consulta a tabelas em cluster e a gravação de resultados de consultas a tabelas em cluster são compatíveis apenas com o SQL padrão do Google.
  • É possível especificar até quatro colunas de clustering. Se você precisar de mais colunas, combine o clustering com o particionamento.
  • Ao usar colunas com tipo STRING para clustering, o BigQuery usa apenas os primeiros 1.024 caracteres para agrupar os dados. Os valores nas colunas podem ser maiores que 1.024.
  • Se você alterar uma tabela não em cluster atual para que ela seja agrupada, os dados atuais não serão agrupados. Apenas dados novos são armazenados usando as colunas em cluster e estão sujeitos ao reclustering automático.

Cotas e limites da tabela em cluster

O BigQuery restringe o uso de recursos compartilhados do Google Cloud por cotas e limites, incluindo limitações em determinadas operações de tabela ou o número de jobs executados em um dia.

Quando você usa o recurso da tabela em cluster com uma tabela particionada, está sujeito aos limites das tabelas particionadas.

As cotas e limites também se aplicam aos diferentes tipos de jobs que podem ser executados em tabelas em cluster. Para informações sobre as cotas de jobs que se aplicam às tabelas, consulte Jobs em "Cotas e limites".

Preços de tabelas em cluster

Quando você cria e usa tabelas em cluster no BigQuery, as cobranças são baseadas na quantidade de dados armazenados nas tabelas e nas consultas de dados executadas. Para mais informações, consulte Preços de armazenamento e Preços de consulta.

Assim como outras operações de tabela do BigQuery, as operações de tabela em cluster aproveitam as operações gratuitas do BigQuery, como carregamento em lote, cópia da tabela, reclustering automático e exportação de dados. Essas operações estão sujeitas a cotas e limites do BigQuery. Para mais informações sobre operações gratuitas, consulte Operações gratuitas.

Para um exemplo detalhado dos preços da tabela em cluster, consulte Estimativa de custos de armazenamento e consulta.

Segurança de tabelas

Para controlar o acesso a tabelas no BigQuery, consulte Introdução aos controles de acesso a tabelas.

A seguir

  • Para saber como criar e usar tabelas em cluster, consulte esta página.
  • Para mais informações sobre como consultar tabelas em cluster, consulte esta página.