AWS · tema 19 de 40
Redshift e a camada de consumo analítico
35 min · 2 vídeos · 12 cards · 1 drill
Por que cai
Na sabatina de Analytics, a pergunta não é o que é Redshift: é por que a sua consulta demora e o que você faria. Chave de distribuição errada é a resposta certa na maioria das vezes, e quem não sabe explicar embaralhamento entre nós não consegue defender nenhuma escolha de modelagem.
Pré-teste · 1 de 2
responda antes de verUma junção entre uma tabela de fato grande e outra tabela grande ficou muito lenta no Redshift. Qual é a primeira hipótese a investigar?
Vídeo · português · 5 min
Em uma frase
O Redshift é colunar e paralelo: o que decide o desempenho não é índice, é onde cada linha mora (distribuição), em que ordem (ordenação) e quanto dado a consulta precisa ler.
Por que colunar muda a conversa
Num banco por linha, ler um registro é ler tudo dele junto — ótimo para cadastro. Num banco colunar, cada coluna é guardada separada: uma consulta que soma valor por mês lê duas colunas de milhões de linhas, e não as linhas inteiras. Some a isso que valores parecidos ficam vizinhos e comprimem muito melhor, e você tem a razão de relatórios voarem e cadastros sofrerem.
É por isso que a otimização muda de vocabulário: índice por linha perde sentido, e entram distribuição e ordenação.
As duas decisões que decidem o tempo
| Estilo de distribuição | O que faz | Quando usar |
|---|---|---|
| KEY | Linhas com o mesmo valor da chave vão para o mesmo nó | Tabelas grandes que se juntam sempre pela mesma coluna |
| ALL | A tabela inteira é replicada em todos os nós | Dimensão pequena e estável que entra em quase toda consulta |
| EVEN | Espalha por rodízio, sem critério | Tabela que não participa de junção relevante |
| AUTO | O serviço escolhe e ajusta com o tempo | Padrão razoável quando o padrão de consulta ainda não é claro |
Spectrum: o warehouse lendo o lake
Redshift Spectrum— Consulta arquivos no S3 direto do cluster, sem carregá-los, cobrando por dado lido. Permite juntar tabela interna com histórico externo na mesma consulta.O desenho que a sabatina espera: quente dentro, frio fora. Meses recentes em tabelas internas, modeladas para as consultas que existem; histórico em Parquet particionado no S3, consultável por Spectrum. Você para de pagar armazenamento de warehouse por dado que ninguém lê, sem tirar o acesso de ninguém.
O trade-off precisa ser dito: consulta externa é mais lenta e cobra por dado lido, então formato colunar e particionamento deixam de ser detalhe e viram requisito.
A camada que o negócio vê
QuickSight— Ferramenta de BI da AWS. Conecta a Redshift, Athena, S3 e bancos, e tem o SPICE, um motor em memória que guarda uma cópia do conjunto para o painel responder sem consultar a origem a cada clique.O SPICE resolve o painel lento e cria uma pergunta que o engenheiro de analytics precisa saber responder: de que momento é esse número? Ele é do último refresh, não de agora. É a mesma conversa de Source of Record e Source of Truth, aplicada à ferramenta.
Como responder isso em voz alta
Para qualquer pergunta de lentidão: plano de execução primeiro, para ver se há redistribuição; chaves de distribuição alinhadas com a junção; chave de ordenação cobrindo o filtro; e só então capacidade. Para custo: separar quente de frio, com Spectrum sobre Parquet particionado. Quem começa por "aumento o cluster" está oferecendo a solução mais cara antes de entender o problema.
Se quiser outro ângulo1 vídeo
Como cai na sabatina
“Uma consulta que junta fato e dimensão ficou lenta depois que a tabela cresceu. O que você investiga?”
Erros comuns
- Tratar o Redshift como um banco relacional maior. Ele é colunar e massivamente paralelo: a otimização que importa é distribuição e ordenação entre nós, não índice por linha.
- Deixar a distribuição no padrão para tabelas grandes que se juntam. Chaves mal escolhidas fazem o dado atravessar a rede entre nós a cada junção, e é isso que aparece como lentidão.
- Usar distribuição ALL numa tabela grande. Replicar em todos os nós só compensa para dimensão pequena e estável; numa tabela grande, multiplica armazenamento e o custo de carga.
- Achar que Spectrum substitui a carga. Ele lê direto do S3, o que é ótimo para dado frio ou eventual; consulta frequente e sensível a desempenho continua melhor dentro do cluster.
- Esquecer a chave de ordenação. Sem ela, filtros por data varrem blocos que poderiam ser descartados; é o ganho mais barato numa tabela de fato.
- Modelar no Redshift como se fosse OLTP, normalizando tudo. Junção demais em colunar custa caro; a modelagem dimensional existe por isso.
Flashcards
Card 1 de 12
0 certos · 0 a reverDrill
Qual decisão resolve?
Para cada sintoma, diga a decisão de modelagem ou de arquitetura esperada.
1.Junção entre duas tabelas grandes redistribui dados entre nós toda vez.
2.Consulta filtra sempre pelos últimos 30 dias e ainda assim varre a tabela toda.
3.Uma tabela de 500 linhas de categorias entra em quase toda consulta.
4.Cinco anos de histórico em Parquet no S3, consultados uma vez por trimestre.
5.O painel da diretoria fica lento porque cada filtro dispara consulta no warehouse.
Quiz · 1 de 2
Qual afirmação sobre armazenamento colunar é mais defensável numa sabatina?
Explique para um gerente
Explique em um minuto por que guardar os dados por coluna, e não por linha, deixa um relatório mais rápido e um cadastro mais lento.
Se travar numa palavra técnica, é sinal de que ainda não entendeu essa parte.
Prefiro falar em voz alta
00:00
Toque para gravar, ou responda em voz alta sem gravar
Perguntas de sabatina deste tema2
- · Uma consulta que junta a tabela de fato de transações com a de clientes ficou lenta depois que o volume cresceu. Como você investiga e o que provavelmente encontra?
- · O time quer manter cinco anos de histórico disponível para consulta, mas o custo do cluster está alto. Que arquitetura você propõe?