Diseña primero para el patrón de acceso, luego elige el particionado + el índice/PK correcto para que cualquier query individual toque una porción pequeña y acotada — nunca escanees 10B de filas. Sub-100ms sobre 10 mil millones de registros no va de un disco más rápido; va de hacer que el working set sea diminuto.
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
