Introdução às tabelas em cluster

Neste documento, você terá uma visão geral sobre a compatibilidade de tabelas em cluster 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. Em uma consulta com cláusula que filtra dados de acordo com o agrupamento de colunas em cluster, 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 cluster, há uma melhora no desempenho porque os blocos classificados colocam linhas com valores semelhantes.

Quando usar o agrupamento em cluster

Atualmente, o BigQuery é compatível com o agrupamento em cluster em uma tabela particionada. Use esse agrupamento 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 é compatível com tabelas particionadas por tempo de ingestão e particionadas em uma coluna DATE ou TIMESTAMP. Atualmente, o agrupamento em cluster não é compatível com tabelas não particionadas.

Quando você usa em conjunto o agrupamento em cluster 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 em cluster. O particionamento oferece uma maneira de receber estimativas precisas de custos para consultas com base nas partições verificadas.

Tabelas particionadas em cluster

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, declarações Data Manipulation Language (DML), declarações Data Definition Language (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, os dados no BigQuery são classificados automaticamente de acordo com os valores das colunas em cluster e organizados em blocos de armazenamento de 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 a execução da consulta, o BigQuery oferece uma redução de melhor esforço dos custos dela.

Com o tempo, conforme cada vez mais operações modificam uma tabela, o grau de classificação dos dados começa a enfraquecer e a tabela se torna parcialmente classificada. Em uma tabela com classificação parcial, talvez as consultas que usam colunas em cluster precisem verificar mais blocos em comparação a uma tabela totalmente classificada. Com uma consulta SELECT * é possível agrupar novamente os dados na tabela inteira. Ela realiza a seleção na tabela e a substitui. Isso também pode ser feito em qualquer partição específica. Além disso, qualquer parte arbitrária da tabela pode ser re-clustered com uma declaração DML MERGE.

Cotas e limites de tabela em cluster

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 executados em tabelas particionadas, incluindo:

Para mais informações sobre todas as cotas e limites, 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:

Muitas operações de tabela em cluster são gratuitas, como o carregamento de dados, a cópia de tabelas e partições e a exportação de dados. Essas operações são gratuitas, mas estão sujeitas a Cotas e limites 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, mas não estão disponíveis atualmente:

  • Compatibilidade com clustering de tabelas não particionadas.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.