1.7 Decision cheat sheet
Yes if any of: analysts need to join across ≥2 operational systems; analytical queries would compete with user traffic; analysts need ad-hoc SQL; or dataset is heading past a few…
Do I need a separate analytical system? Yes if any of: analysts need to join across ≥2 operational systems; analytical queries would compete with user traffic; analysts need ad-hoc SQL; or dataset is heading past a few hundred GB with aggregate-heavy access.
Warehouse, lake, or real-time OLAP?
- Analysts writing SQL over conformed business data → warehouse
- Data scientists needing raw/unstructured data and custom code → lake (or lakehouse)
- Aggregates served to customers at sub-second latency → real-time OLAP
- Both point lookups and scans in one request path → consider HTAP, knowing it's two engines behind one door
Cloud or self-host? Cloud if you lack the operational skill, or your load is bursty. Self-host if load is predictable, you have the skill, and you need workload-specific tuning or hardware control. Always check: what's the exit path if the vendor changes?
Distribute or stay on one node? Stay single-node unless you hit one of the nine reasons in §3.1. Modern single machines plus DuckDB/SQLite/Postgres cover far more than people assume. Distribution costs you: failure semantics, latency, debuggability, and cross-store consistency.
Microservices? Only when team-coordination cost is the actual bottleneck. It's a people solution. In a small company it's overhead.
Should we store this data at all? Cost = storage bill + breach liability + compliance fines + the risk to users if it's subpoenaed or leaked. Apply data minimization: collect for a specified explicit purpose, don't repurpose, don't keep longer than necessary.