Apache Druid: Banco Analítico em Tempo Real para Consultas Subsegundo em Escala de Petabytes

O que é Apache Druid?
Apache Druid é um banco de dados analítico em tempo real projetado especificamente para consultas OLAP (Online Analytical Processing) subsegundo sobre grandes volumes de dados. Diferente de bancos relacionais tradicionais ou soluções NoSQL, o Druid combina ingestão de dados em tempo real, armazenamento columnar, indexação pré-agregada e distribuição automática para entregar performance analítica excepcional.
Criado originalmente na MetaMarkets (2011) e doado para a Apache Foundation, o Druid é usado em produção por empresas como Netflix, Airbnb, Walmart, Lyft, Cisco e Confluent para alimentar dashboards analíticos que processam bilhões de eventos por dia.
Arquitetura do Druid
O Druid possui uma arquitetura de microsserviços com componentes especializados:
- Overlord: Gerencia a ingestão de dados e coordena workers de indexação.
- MiddleManager: Executa tarefas de ingestão de dados em processos Peon isolados.
- Broker: Recebe consultas dos clientes e as distribui para os servidores históricos e reais.
- Historical: Armazena e consulta dados imutáveis já segmentados.
- Coordinator: Gerencia distribuição de segmentos entre servidores históricos.
- Router: Roteia requisições para Brokers, Coordinators e Overlords.
Segmentação e Indexação
O segredo da performance do Druid está na segmentação: dados são particionados em segmentos (tipicamente alguns milhões de linhas), que são arquivos columnar imutáveis. Cada segmento contém:
- Dados em formato columnar (similar a Parquet) para scans rápidos.
- Bitmaps invertidos (Roaring Bitmaps) para filtros ultra-rápidos.
- Pré-agregações para consultas comuns.
- Índices de min/max para poda de segmentos irrelevantes.
Ingestão de Dados em Tempo Real
// Exemplo de especificação de ingestion (JSON)
{
"type": "kafka",
"dataSchema": {
"dataSource": "eventos_web",
"timestampSpec": {
"column": "timestamp",
"format": "iso"
},
"dimensionsSpec": {
"dimensions": ["pagina", "usuario", "navegador", "pais"]
},
"metricsSpec": [
{"type": "count", "name": "visitas"},
{"type": "longSum", "name": "tempo_total", "fieldName": "tempo_gasto"},
{"type": "doubleSum", "name": "receita", "fieldName": "valor_compra"}
]
},
"ioConfig": {
"topic": "eventos-web",
"consumerProperties": {
"bootstrap.servers": "localhost:9092"
},
"taskDuration": "PT1H"
}
}Consultas SQL no Druid
-- Consulta SQL nativa no Druid
SELECT
pagina,
COUNT(*) AS visitas,
SUM(tempo_total) AS tempo_acumulado,
AVG(tempo_total) AS tempo_medio,
SUM(receita) AS receita_total
FROM eventos_web
WHERE "__time" >= TIMESTAMP '2026-06-01'
AND "__time" < TIMESTAMP '2026-06-15'
AND pais = 'Brasil'
GROUP BY pagina
ORDER BY visitas DESC
LIMIT 20;
-- Time series: contagem por hora
SELECT
FLOOR("__time" TO HOUR) AS hora,
COUNT(*) AS eventos
FROM eventos_web
WHERE "__time" >= CURRENT_TIMESTAMP - INTERVAL '24' HOUR
GROUP BY 1
ORDER BY 1;Casos de Uso Reais
- Netflix: Dashboard de monitoramento de infraestrutura processando bilhões de eventos de logs por dia com consultas subsegundo.
- Airbnb: Plataforma de analytics para dados de reservas e preços com latência de ingestão inferior a 10 segundos.
- Walmart: Análise em tempo real de vendas em mais de 10 mil lojas globais.
- Confluent: Métricas de clusters Kafka em produção para clientes enterprise.
- Lyft: Monitoramento de corridas e alocação de motoristas em tempo real.
Druid vs ClickHouse
| Característica | Druid | ClickHouse |
|---|---|---|
| Ingestão em tempo real | Nativa (streaming + batch) | Nativa |
| Pré-agregação | Sim (rollup automático) | Materialized Views |
| Escalabilidade | Excelente (shared-nothing) | Excelente (sharding) |
| SQL completo | Limitado (OLAP) | Quase completo |
| Joins complexos | Limitados | Sim |
| Governança multi-tenant | Sim (Datasources isolados) | Manual |
Conclusão
Apache Druid é a escolha ideal quando você precisa de consultas analíticas subsegundo sobre grandes volumes de dados com ingestão em tempo real — especialmente para dashboards de monitoramento, analytics de produto e OLAP interativo. Embora não substitua bancos transacionais ou data warehouses completos, o Druid preenche um nicho específico com performance inigualável.
Se seu time precisa de um dashboard que responda em menos de um segundo sobre bilhões de eventos e com dados frescos de segundos atrás, o Druid merece um lugar de destaque no seu stack de dados.







