Σχεδιάστε πρώτα για το access pattern, μετά επιλέξτε partitioning + το σωστό index/PK ώστε κάθε μεμονωμένο query να αγγίζει ένα μικρό, φραγμένο κομμάτι — ποτέ να μη κάνει scan 10 δισ. rows. Το sub-100ms πάνω σε 10 δισεκατομμύρια records δεν αφορά έναν πιο γρήγορο δίσκο· αφορά το να κάνετε το working set μικροσκοπικό.
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
