Batch vs stream: mental model e trade-offs reais
⏱ 12 min·⭐ 50 XP
Ao terminar: Você decide entre batch e streaming pela latência que o negócio de fato precisa, não pela ferramenta mais nova.
Comparação
| Aspecto | Batch | Stream |
|---|---|---|
| Dataset | Bounded (conhecido) | Unbounded (contínuo) |
| Latency | Minutos-horas | Milissegundos-segundos |
| Ferramenta | Spark, dbt, DuckDB | Kafka Streams, Flink, Kinesis |
| Accuracy | Total | Approximate (late data, windowing) |
| Debug | Fácil (replay determinístico) | Difícil (state, ordering) |
| Custo | Baixo (compute on-demand) | Alto (sempre rodando) |
| Failure recovery | Rerun | Complexo (state checkpointing) |
AspectoDataset
BatchBounded (conhecido)
StreamUnbounded (contínuo)
AspectoLatency
BatchMinutos-horas
StreamMilissegundos-segundos
AspectoFerramenta
BatchSpark, dbt, DuckDB
StreamKafka Streams, Flink, Kinesis
AspectoAccuracy
BatchTotal
StreamApproximate (late data, windowing)
AspectoDebug
BatchFácil (replay determinístico)
StreamDifícil (state, ordering)
AspectoCusto
BatchBaixo (compute on-demand)
StreamAlto (sempre rodando)
AspectoFailure recovery
BatchRerun
StreamComplexo (state checkpointing)
Origem
Banco operacional
Eventosclique, sensor, log
Caminho batch
Extração em loteagendada: hora, dia
OrquestradorAirflow, Dagster
Caminho streaming
CDCcaptura a mudança, sem varrer
Processamento contínuojanela, estado, watermark
Lakehouse
Bronzebruto, imutável
Silverlimpo, particionado
Goldagregado para consumo
- → SELECT completo
- → lê o log de transação
- → agenda
- → limpeza
- → agregação
- Conceito de arquitetura
Batch e streaming não competem: escolhem-se pela latência exigida e convergem no mesmo lakehouse. O que decide o custo de operação é quanto estado o caminho escolhido obriga você a gerenciar.
- A pergunta não é "qual é melhor". É "qual latência o negócio precisa e quanto custa entregá-la". Batch é mais simples, mais barato e reprocessável; streaming entrega frescor e cobra em complexidade de estado, janela e ordem.
- CDC é o que evita varrer a tabela toda. Extração em lote faz SELECT completo ou por marca d'água — pesado na origem. CDC lê o log de transação e captura só a mudança, com impacto mínimo e latência de segundos. É o caminho padrão para banco operacional hoje.
- Streaming traz três problemas que batch não tem. Estado (o que já vi), janela (como agrupo no tempo) e chegada fora de ordem (watermark). Cada um é uma decisão explícita — e ignorá-los produz agregação silenciosamente errada.
- Os dois caminhos pousam no mesmo lugar. Bronze recebe de batch e de streaming. Isso é o que permite reprocessar histórico e tempo real com a MESMA lógica de transformação — em vez de manter dois códigos que divergem, que era o problema da arquitetura Lambda clássica.
- Bronze é imutável de propósito. Guardar o dado como chegou é o que permite corrigir a regra e reprocessar. Sem bronze, um erro de transformação é perda permanente — e a pressão para "economizar armazenamento" apagando o bruto é o arrependimento mais comum em data lake.
Quando escolher stream
💡
Regra: latency real-time é REQUIREMENT do produto? Sim → stream. Não → batch. Não confunda "interessante" com "necessário". Stream é 10x mais caro operar. Justifique.
Quiz rápido
Qual pergunta decide entre processar em lote e em fluxo contínuo?
Perguntas frequentes
❓ Lote ou fluxo contínuo: como decidir?
Pela latência que o negócio exige, não pela modernidade da ferramenta. Se o resultado é consumido de manhã, lote é mais simples, mais barato e reprocessável. Fluxo quando a decisão depende de segundos. A maior parte do que se constrói em fluxo poderia ser lote de dez minutos.
❓ Fluxo contínuo é mais difícil de operar?
É, e por razões estruturais: estado em janela, evento fora de ordem, reprocessamento e entrega exatamente uma vez. Cada uma tem solução, e cada solução acrescenta complexidade. É por isso que a pergunta certa é se a latência justifica esse custo permanente.
❓ Dá para ter os dois na mesma plataforma?
Dá, e é o padrão atual: a mesma fonte alimenta o caminho de fluxo para o que precisa ser imediato e o de lote para o que precisa ser correto e reprocessável. O cuidado é a lógica não divergir entre os dois — quando divergem, os números não fecham e ninguém sabe qual está certo.
Fixando
Quiz rápido
Qual dificuldade é específica do processamento contínuo?
Quiz rápido
O que caracteriza a arquitetura que mantém os dois caminhos?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…