The 'pick a database' question shows up monthly. Most teams pick Postgres regardless and are usually right. Here's a quick decision tree for when you should reach for something else.
Default: Postgres
Relational data + ACID + read scale via replicas + extensions (pgvector, PostGIS, TimescaleDB) → Postgres. Don't deviate without specific need. Most reach-for-Mongo / reach-for-DynamoDB calls go away if you actually try Postgres first.
Reasons to deviate
Sub-10ms global reads, infinite write scale, accept per-query data model design: Cassandra/DynamoDB. Vector-only at >100M scale: Milvus/Pinecone. Time-series at high cardinality: TimescaleDB or InfluxDB. Search-first: Elastic/OpenSearch.
Anti-patterns
Choosing a database for one feature (use Postgres + an extension). Choosing because the org already uses it for a different workload (workloads have different fit). Picking the trendiest option (most don't pan out).