Um star schema tem uma tabela fato cercada por tabelas de dimensão desnormalizadas, então a maioria das consultas precisa de um join por dimensão. O snowflake normaliza uma dimensão em subtabelas, o que economiza armazenamento e centraliza atributos compartilhados, mas adiciona joins. Em um warehouse colunar, armazenamento é barato e joins custam mais do que duplicação, então star é o padrão. Use snowflake quando a dimensão é realmente grande, hierárquica ou compartilhada por muitos marts.
Por que os entrevistadores perguntam isso
Os entrevistadores usam isso para testar se você raciocina sobre trade offs físicos em vez de recitar Kimball. As melhores respostas notam que a compressão colunar deixa dimensões desnormalizadas baratas, que os motores de consulta lidam bem com broadcast joins em dimensões pequenas e que o argumento real a favor do star é a usabilidade para o analista, e não a performance bruta.
Como estruturar sua resposta
- Descreva o formato de estrela e por que ele é amigável para o analista.
- Explique o snowflake como normalização de dimensões.
- Argumente o trade off em termos de joins versus armazenamento em motores colunares.
- Dê um caso concreto em que o snowflake é a escolha certa.
- Mencione a granularidade como a decisão que antecede as duas.
Exemplo de resposta
Um star é uma tabela fato em uma granularidade definida com dimensões desnormalizadas penduradas nela, então o analista escreve um join por dimensão e recebe nomes de coluna legíveis. Eu adoto isso como padrão, porque em um warehouse colunar repetir o nome de um país em dois milhões de linhas comprime para quase nada, e a dimensão pequena vai por broadcast de qualquer jeito. O snowflake faz sentido quando a dimensão é de fato grande e hierárquica, por exemplo uma dimensão de produto com uma árvore de categorias que vários marts precisam compartilhar, já que manter essa hierarquia em um lugar só é melhor do que duplicá-la em cinco. O ponto que eu levantaria antes dos dois é a granularidade. Decidir que a tabela fato tem uma linha por item de pedido em vez de por pedido determina tudo o que vem depois, e errar isso é o que produz o clássico bug de receita contada em dobro. Eu já tive que reconstruir um mart porque a granularidade estava misturada, e isso é muito mais caro do que qualquer debate sobre normalizaçã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
- Como você decide a granularidade de uma tabela fato?
- O que é uma factless fact table e quando você usaria uma?
- Como você modela um relacionamento muitos para muitos entre fato e dimensão?
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