Most database choices are made in the first week of a project and regretted三年 later.
The choice between MongoDB and PostgreSQL, between self-hosted and managed, between SQL and NoSQL — these decisions compound. They affect every feature you build, every engineer you hire, every scaling bottleneck you hit.
Here's what we learned building products across different stacks:
The Default Choice Is Usually Right
For 80% of applications, PostgreSQL is the correct answer. It's not sexy. It's not the latest. But it's reliable, well-understood, and the tooling is mature across every language and framework.
The situations where you should choose something else:
MongoDB — When your data structure is genuinely document-oriented (product catalogs, content management, variable schemas). Not as a replacement for relational data because "schemas seem annoying."
DynamoDB — When you have extreme scale requirements and your access patterns are well-understood. The learning curve is steep but the operational characteristics are worth it for the right use case.
Redis — As a cache layer, not a primary database. Session storage, rate limiting, real-time features. If you're using Redis as your main database, you're probably building technical debt.
What Actually Matters in 2026
Operational complexity — Managed services (RDS, Atlas, PlanetScale) have changed the game. You don't need a DBA to run PostgreSQL in production. Choose managed until you have a specific reason not to.
Vendor lock-in — PostgreSQL compatible options (Neon, Supabase, CockroachDB) mean you can move if you need to. Lock-in risk is lower than it was five years ago.
Team familiarity — The best database is the one your team already knows. A brilliant PostgreSQL implementation beats a mediocre MongoDB deployment every time.
The scaling conversation — Most companies never hit the scaling limits of managed PostgreSQL. The teams worrying about "what happens when we reach 10 million users" are almost never the teams that reach 10 million users.
The Real Decision Framework
Ask these questions in order:
Do you have relational data with complex joins? → PostgreSQL
Do you have variable schema document data? → MongoDB
Do you have extreme write throughput with known access patterns? → DynamoDB
Do you need to cache expensive queries? → Redis
Does none of this apply? → PostgreSQL
A Note on "But MongoDB Scales Better"
It doesn't. Not in any way that matters for your use case. Horizontal scaling is a solution to specific problems, not a general improvement. Most applications hit CPU and memory limits on individual nodes long before they need horizontal sharding.
Top comments (0)