Particionamento divide uma tabela em pedaços fisicamente separados, normalmente por data, para que uma consulta filtrada elimine partições inteiras e escaneie menos dados. Clustering ordena os dados no armazenamento pelas colunas escolhidas, para que o motor consiga pular blocos com base nesses predicados. Particione pela coluna que aparece em quase todo WHERE, tipicamente a data do evento; faça clustering pelas colunas de alta cardinalidade que as pessoas filtram ou usam em joins logo depois.
Por que os entrevistadores perguntam isso
Os entrevistadores querem instinto prático de custo e performance, já que o volume escaneado é a conta no BigQuery e a queima de créditos no Snowflake. Eles também estão checando os erros clássicos: particionar por uma coluna de alta cardinalidade, criar milhares de partições minúsculas e supor que clustering ajuda consultas que não filtram pelas chaves de clustering.
Como estruturar sua resposta
- Defina particionamento como poda física e clustering como ordenação dentro dos dados.
- Dê a regra para escolher cada coluna.
- Alerte sobre particionamento excessivo e o problema de arquivos pequenos.
- Explique como verificar o ganho em vez de presumi-lo.
- Amarre de volta ao custo, não só à velocidade.
Exemplo de resposta
Particionamento é grosso e físico: divide por dia, e uma consulta filtrada na última semana lê sete partições em vez da tabela inteira. Clustering é uma ordenação fina dentro dos dados, para que o motor consiga pular blocos com base nos valores mínimo e máximo que ele guarda por bloco. Minha regra é particionar pela coisa que está em quase toda consulta, que quase sempre é uma data de evento ou de ingestão, e depois fazer clustering pelo próximo um ou dois predicados, como id de cliente ou país. A falha que eu já limpei mais de uma vez é particionamento excessivo. Alguém particionou por id de cliente, acabou com quarenta mil partições de poucos kilobytes cada, e só o planejamento da consulta ficou mais lento do que o escaneamento que ele tentava evitar. O outro hábito que eu mantenho é verificar em vez de confiar. No BigQuery eu checo os bytes processados antes e depois com um dry run, porque se a estimativa não cai, a poda não está acontecendo, geralmente porque o filtro envolve a coluna de partição dentro de uma função.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Por que um filtro na coluna de partição pode não podar nada?
- Como o clustering se comporta conforme novos dados chegam?
- O que é o problema de arquivos pequenos e como você resolve?
Mais perguntas para Engenheiro de Dados
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas