The default backend database
Every major web framework — Rails, Django, Phoenix, Next.js with Prisma, Spring Boot — defaults to PostgreSQL. User tables, sessions, products, posts, comments, payments: PostgreSQL handles everything a typical SaaS needs without breaking a sweat. If you can't immediately name a reason to choose something else, choose Postgres.
Where it shines especially well
- Geospatial — PostGIS turns Postgres into a first-class GIS database. Map services, delivery routing, location-based search.
- Analytics-on-OLTP — window functions, materialised views, and
CTEs let one Postgres serve mid-scale BI without copying to a warehouse. - AI embeddings — pgvector keeps embeddings next to the entities they describe; you don't need a separate vector store for under ~10M embeddings.
- Time-series — TimescaleDB extends Postgres with hypertables, compression, and continuous aggregates.
- Message queues, audit logs, feature flags — frequently good enough as plain Postgres tables with the right indexes.
Where you graduate to specialised stores
Petabyte analytics → columnar warehouse (Snowflake, BigQuery, ClickHouse). Sub-millisecond cache → Redis. Massive write fan-out (millions of writes/sec) → Cassandra/ScyllaDB. Pure event log → Kafka. The rule: graduate when you have measured pressure, not when you suspect future pressure.