Every design decision has trade-offs. Name them:
SQL vs NoSQL:
- SQL: Strong consistency, joins, transactions. Limited horizontal scaling.
- NoSQL: Horizontal scaling, flexible schema. Weaker consistency, no joins.
Push vs Pull:
- Push: Lower latency, real-time. Higher write amplification.
- Pull: Simpler writes. Higher read latency.
Cache-aside vs Write-through:
- Cache-aside: Simple, handles failures gracefully. Misses hit database.
- Write-through: Consistent cache. Higher write latency.
Saying "I chose X because Y" is good. "I chose X because Y, but we sacrifice Z" is better.