Introdução às tabelas em cluster

Neste documento, você terá uma visão geral sobre os recursos de clustering de tabelas no BigQuery.

Visão geral

Quando você cria uma tabela em cluster no BigQuery, os dados são organizados automaticamente com base no conteúdo de uma ou mais colunas no esquema da tabela. As colunas especificadas são usadas para colocar dados relacionados. Quando você cria uma tabela em cluster usando várias colunas, a ordem das colunas especificadas é importante. A ordem das colunas especificadas determina a ordem de classificação dos dados.

O agrupamento em cluster melhora o desempenho de determinados tipos de consultas, como as que usam cláusulas de filtro e as que agregam dados. Numa tabela em cluster, quando os dados são gravados por um job de consulta ou carregamento, o BigQuery os classifica pelos valores das colunas em cluster. Esses valores são usados para organizar os dados em diversos blocos no armazenamento do BigQuery. Quando você envia uma consulta contendo uma cláusula que filtra dados com base nas colunas de clustering, o BigQuery usa os blocos classificados para eliminar verificações de dados desnecessários.

Da mesma forma, em uma consulta com dados agregados de acordo com os valores das colunas em clustering, há uma melhora no desempenho porque os blocos classificados colocam linhas com valores semelhantes.

Quando usar o clustering

Atualmente, o BigQuery permite o clustering em uma tabela particionada. Use esse clustering em uma tabela particionada quando:

  • seus dados já estão particionados em uma coluna de data ou de carimbo de data/hora;
  • filtros ou agregação em colunas específicas forem normalmente usados nas consultas.

O clustering de tabelas é possível para tabelas particionadas por:

Atualmente, o clustering não é permitido em tabelas não particionadas.

Ao usar em conjunto o clustering e o particionamento, os dados são particionados por uma coluna de data ou de carimbo de data/hora e, depois, agrupados em um conjunto diferente de colunas. Nesse caso, os dados de cada partição são agrupados no cluster com base nos valores das colunas de clustering. O particionamento fornece uma maneira de ter estimativas de custo precisas para consultas (com base nas partições que são verificadas).

Tabelas particionadas em clustering

Em uma tabela particionada por uma coluna de data ou de carimbo de data/hora, cada partição contém um único dia de dados. Quando os dados são armazenados, o BigQuery garante que todos os dados em um bloco pertençam a uma única partição. Uma tabela particionada mantém essas propriedades em todas as operações que a modificam: jobs de consulta, instruções de linguagem de manipulação de dados (DML, na sigla em inglês), instruções de linguagem de definição de dados (DDL, na sigla em inglês), jobs de carregamento e de cópia. Isso requer que o BigQuery mantenha mais metadados do que uma tabela não particionada. À medida que o número de partições aumenta, a quantidade de sobrecarga de metadados aumenta.

Mais metadados precisam ser mantidos para garantir que os dados sejam particionados globalmente. No entanto, o BigQuery faz uma estimativa mais precisa dos bytes processados por uma consulta antes de executá-la. Esse cálculo de custo inclui um limite superior no custo final da consulta.

Em uma tabela em cluster, o BigQuery classifica automaticamente os dados com base nos valores das colunas em clustering e os organiza em blocos de armazenamento com o tamanho ideal. É possível ter uma classificação mais granulada criando uma tabela em cluster e particionada. Ela mantém as propriedades de classificação no contexto de cada operação que a modifica. Como resultado, o BigQuery talvez não consiga estimar com precisão os bytes processados pela consulta ou pelos custos dela. Quando os blocos de dados são eliminados durante uma consulta, o BigQuery oferece uma melhor redução de esforço dos custos da consulta.

Reclustering automático

À medida que os dados são adicionados a uma tabela em cluster, os dados recém-inseridos podem ser gravados em blocos que contêm intervalos de chaves que se sobrepõem aos dos blocos gravados anteriormente. Essas chaves sobrepostas enfraquecem a propriedade de classificação da tabela.

Para manter as características de desempenho de uma tabela em cluster, o BigQuery executa o reclustering automático em segundo plano para restaurar a propriedade de classificação da tabela. Em tabelas particionadas, o armazenamento em cluster é mantido para dados no escopo de cada partição.

Cotas e limites da tabela em cluster

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

As cotas e limites também se aplicam aos diferentes tipos de jobs executados em tabelas em cluster, incluindo:

Para mais informações sobre o assunto, consulte Cotas e limites.

Preços de tabelas em cluster

Ao criar e usar tabelas em cluster no BigQuery, a base para as cobranças está na quantidade de dados armazenados nas tabelas e nas consultas de dados executadas:

  • Para informações sobre preços de armazenamento, veja esta página.
  • Para informações sobre preços de consulta, veja esta página.

Muitas operações de tabela em cluster não incorrem em encargos, incluindo o carregamento de dados em tabelas em cluster, a cópia de tabelas e partições e a exportação de dados. Essas operações estão sujeitas a limites e quotas do BigQuery. Para mais informações, consulte Operações gratuitas na página de preços.

Para ver um exemplo detalhado dos preços da tabela em cluster, consulte a página "Preços".

Recursos em desenvolvimento

Os recursos a seguir estão sendo desenvolvidos e não estão disponíveis atualmente:

  • Agrupamento de tabelas não particionadas.

A seguir

  • Para saber como criar e usar tabelas em cluster, consulte esta página.
  • Para informações sobre como consultar tabelas em cluster, consulte esta página.
  • Para uma visão geral sobre tabelas particionadas no BigQuery, consulte Introdução a tabelas particionadas.
  • Para saber como criar e usar tabelas particionadas por tempo de ingestão, clique aqui.
  • Para saber como criar e usar tabelas particionadas de data/carimbo de data/hora, consulte esta página.
  • Para saber como criar e usar tabelas particionadas por intervalo de números inteiros, consulte esta página.