Introdução às tabelas em cluster

Neste documento, você encontra 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 de dados agregados baseada nos valores das colunas em cluster, há uma melhora no desempenho porque os blocos classificados colocalizam 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:

  • Os dados já estão particionados em uma coluna de data, carimbo de data/hora ou número inteiro.
  • Os filtros ou agregação em colunas específicas são normalmente usados nas consultas.

É possível fazer o clustering 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 cluster

Em uma tabela particionada, os dados são armazenados em blocos físicos, cada um contendo uma partição de dados. 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), instruções de linguagem de definição de dados (DDL), jobs de carregamento e de cópia. Isso requer que o BigQuery mantenha mais metadados do que uma tabela não particionada. Com o aumento do número de partições, aumenta também a quantidade de sobrecarga de metadados.

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 job 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.

Próximas etapas