← Stackzilla Blog
Postgres Is Probably All You Need
Published March 25, 2026
· 4 min read
· PostgreSQL, databases, tech stack, over-engineering, backend development
Before you add Redis, Mongo, Elasticsearch, or a message queue to your stack, consider this: PostgreSQL can do most of it already, and better than you might think. An honest case for doing less with more.
Every few months a new database technology gains momentum and developers feel the pull to incorporate it into their stack. A caching layer here, a document store there, maybe a graph database for good measure. Before long the infrastructure is more complex than the application it is supposed to support.
There is a gentler and often better path: use PostgreSQL for most of what you need, and reach for specialized tools only when you have genuinely exhausted what Postgres can do.
**What Postgres Actually Does**
PostgreSQL is one of the most capable databases ever built, and most teams use roughly 20 percent of its functionality. Beyond standard relational storage, modern Postgres handles full-text search with ranking, JSON and JSONB document storage with querying, time-series data through extensions like TimescaleDB, pub/sub messaging via LISTEN/NOTIFY, background jobs through libraries like pg-boss, and geospatial queries through PostGIS.
That is a lot of infrastructure you might not need to add separately.
**The Case Against the Redis Reflex**
Redis is a wonderful tool. It is also one of the most reflexively added tools in backend development. A team needs caching, and before investigating alternatives, Redis is in the docker-compose file. What often gets overlooked is that Postgres has excellent performance characteristics through extensions, supports materialized views that serve as cached aggregations, and for many workloads, simply adding PgBouncer and tuning configuration provides all the performance improvement needed.
This does not mean Redis is wrong. It means the question should come after you have genuinely understood where your bottleneck is.
**Full-Text Search Without Elasticsearch**
Elasticsearch is powerful, but it is also operationally complex, resource-hungry, and adds a synchronization problem between your primary database and your search index. For many applications, Postgres full-text search is completely sufficient. It supports stemming, ranking, phrase searches, and can be indexed with GIN indexes for performance. If your dataset is under a few million rows and your search requirements are not extremely advanced, it is worth trying Postgres first.
**When to Actually Reach for Something Else**
Some problems genuinely require specialized tools. If you are running a real-time analytics platform processing billions of events, ClickHouse is the right call. If you are building a recommendation system with graph traversal at the core, a graph database may be warranted. If you need sub-millisecond caching at very high throughput, Redis earns its place.
The key word is genuinely. The question to ask is whether Postgres has failed at this task, not whether the other tool sounds interesting.
**The Operational Cost Nobody Mentions**
Every additional database technology you add to your stack is a new operational burden. Someone needs to understand it, monitor it, back it up, handle its failure modes, and manage its upgrades. For a small team, that cost adds up quickly.
Staying on Postgres keeps that complexity concentrated in one place. One backup strategy. One monitoring setup. One operational runbook. That simplicity has real value, especially when things break at inconvenient times.
**A Practical Starting Point**
Before adding any database technology to your stack, spend a few hours genuinely exploring what Postgres can do. The documentation is excellent and the extension ecosystem is large. You may find that what you need is already there, and that the solution is not a new technology but a slightly better query.
Read the full article on Stackzilla →