L'analytique temps réel signifie différentes choses selon les équipes. Pour certains, ce sont des dashboards sub-seconde ; pour d'autres, de la détection d'anomalies sur un pipeline streaming. L'essentiel est de faire correspondre vos exigences de latence au bon moteur et au bon pattern d'architecture, sans sur-ingénierie.
Taxonomie des Niveaux de Latence
Niveau
Latence
Cas d'Usage
Moteur Typique
Fraîcheur
Temps réel dur
< 100ms
Détection de fraude, enchères pub
Custom (C++/Rust), Flink
Événement
Temps réel souple
100ms - 2s
Dashboards live, monitoring
ClickHouse, Druid, Pinot
Secondes
Quasi temps réel
2s - 60s
Reporting opérationnel
Vues matérialisées, Rockset
Secondes à minutes
Micro-batch
1 - 15 min
Dashboards KPI, alerting
Spark Structured Streaming
Minutes
Batch
15 min - 24h
Rapports quotidiens, entraînement ML
Spark, dbt, BigQuery
Heures
La plupart des équipes surévaluent leurs besoins en latence. Si votre dashboard se rafraîchit toutes les 30 secondes, vous n'avez pas besoin d'un moteur sub-100ms.
Comparaison des Moteurs OLAP
Caractéristique
ClickHouse
Apache Druid
Apache Pinot
DuckDB
Architecture
MPP shared-nothing
Pre-aggregation + segments
Segments + table temps réel
Embarqué mono-nœud
Latence requête (p99)
50ms - 2s
200ms - 5s
100ms - 3s
10ms - 30s (local)
Concurrence
Élevée (100s QPS)
Élevée (100s QPS)
Très élevée (1000s QPS)
Faible
Support SQL
SQL complet
Druid SQL
SQL (multi-stage)
SQL complet
Jointures
Fortes (versions récentes)
Limitées
Limitées
Fortes
Idéal pour
OLAP général, haut débit
Séries temporelles
Analytique user-facing à l'échelle
Analytique locale, prototypage
Pattern Kappa (Streaming-First)
tadata
tadata
Deux architectures pour la même feature : Lambda (couche batch + couche speed) vs Kappa (une seule définition streaming, l'historique par rejeu)
Retard temporel du job de features pendant un déploiement : la consommation s'arrête 4 min (rebalance + cache froid), le retard grimpe puis se résorbe au débit net ; le SLO de fraîcheur de 30 s est dépassé pendant environ 9 minutes