Pergunta de entrevista para Engenheiro de Dados

Como particionamento e clustering diferem em um warehouse em nuvem, e como você os escolhe?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

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

Exemplo falado, em primeira pessoa

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 funciona

Perguntas 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

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot