Concevez d'abord pour le pattern d'accès, puis choisissez le partitionnement + le bon index/PK pour que chaque requête ne touche qu'une tranche petite et bornée — sans jamais scanner 10 milliards de lignes. Le sous-100ms sur 10 milliards d'enregistrements n'est pas une question de disque plus rapide ; il s'agit de rendre le working set minuscule.
Query ─▶ Router ──▶ Partition (by tenant/time) ──▶ Index/PK lookup ─▶ ~thousands of rows
│ (prune 99.9% of data) (B-tree / sort key)
└─▶ Cache (Redis) ─▶ hit? return in <5ms
miss ▼
Columnar store (ClickHouse) for aggregates / scans
