Buni kwa ajili ya access pattern kwanza, kisha chagua partitioning + index/PK sahihi ili query yoyote moja iguse kipande kidogo, chenye mipaka — kamwe isiskan rows bilioni 10. Chini ya 100ms juu ya records bilioni 10 si kuhusu disk ya haraka; ni kuhusu kufanya working set kuwa ndogo.
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
Access patterns huendesha kila kitu
Kabla ya kuchagua tech, uliza: "Pata orders 20 za mwisho za user X" ni point/range query — unataka partition na sort key vilingane nayo hasa. "Jumlisha revenue kwa region mwezi huu" ni analytical scan — row store ni chombo kibaya. Kumodeli query kwanza ndiko kunakotenganisha usanifu unaofanya kazi na ule unaoonekana wa busara lakini hufanya full-scan.
