PostgreSQL as the Everything Database

Fewer systems. Less complexity. Same Postgres.

I recently gave a talk at POSETTE 2026 titled “The Rise of PostgreSQL as the Everything Database.”

This post is the short version of that talk.

The idea is not that Postgres should replace every database, cache, search engine, warehouse, or vector store.

The idea is sharper than that:

Stack complexity is the real problem.

PostgreSQL is becoming the place where more application workloads naturally start: transactions, JSON, search, geospatial, vectors, scheduled jobs, time-series patterns, and AI application data.

Not because Postgres is perfect at everything.

Because the alternative has become too expensive.

The hidden tax of “just add another system”

For years, every new data problem came with a familiar answer.

Need documents? Add a document database.
Need cache? Add Redis.
Need streaming? Add Kafka.
Need search? Add Elasticsearch.
Need vectors? Add a vector database.
Need analytics? Add a warehouse.

Each system solved a real problem. But each one also created another boundary. And every boundary created a bill.

Data movement is not just ETL.

It is duplicated schemas, stale data, broken pipelines, security drift, inconsistent permissions, different monitoring surfaces, different backup models, and different failure modes.

At some point, your architecture diagram stops being a design.

It becomes a scavenger hunt.

Most time is not spent building

This is the part production teams feel every day.

Where is my data?

Which system is the source of truth?

Why is the search index stale?

Why does the dashboard not match the database?

Who owns this pipeline?

Why did this CDC job fail again?

Most of the time is not spent building. It is spent navigating pipeline complexity.

That is the real cost of fragmented systems.

Not only the cloud bill.

The human bill.

The cost paid in developer time, operational drag, and meetings where everyone agrees the architecture is “temporarily complicated.”

And nothing is more permanent than temporarily complicated.

The data stack is changing

The old question was: What new database should we add?

The new question is: How much can Postgres handle first?

That shift matters.

It does not mean Postgres should replace every specialized system.

It means specialized systems should earn their place.

Consolidate by default.
Specialize Deliberately.

Use a dedicated search engine when search complexity demands it.

Use a dedicated vector database when vector scale or latency demands it.

Use a warehouse when analytics scale and governance demand it.

Use Redis when cache semantics demand it.

But do not add systems by reflex.

Every new system should answer one uncomfortable question:

Is the benefit of specialization greater than the cost of moving, duplicating, securing, governing, and operating the data somewhere else?

Often, the answer is no.

And that is where Postgres enters the conversation.

The unified-data instinct is winning

There is a visual in my deck that captures this perfectly.

On one side: a developer pushing a cart full of systems — search, cache, vector DB, analytics, events, graph, streams.

On the other side: Postgres.

The caption says it all: Fewer systems. Less complexity. Same Postgres.

That is not anti-specialization.

It is anti-unnecessary-specialization.

A simpler stack is easier to secure, observe, recover, explain, and debug.

And every experienced engineer knows this: the best architecture is not the one with the most logos.

It is the one that survives production.

Today, architects are increasingly asking whether the existing database can handle the next workload before adding another moving part.

That is the unified-data instinct.

And Postgres is benefiting because it has the right foundation: relational core, SQL, transactions, indexes, JSON, extensions, mature tooling, and developer trust.

The architect’s new core question

The most important question in the talk was not:

“What can Postgres do?”

It was this: “What can I stop synchronizing?”

That question changes the architecture conversation.

Synchronization is where systems become expensive.

It is where freshness breaks.

It is where ownership blurs.

It is where security drifts.

It is where one source of truth slowly becomes five partial truths wearing a trench coat.

If Postgres can keep a workload close to the data, you avoid an entire class of problems.

That is the real win.

Extensibility is PostgreSQL’s secret weapon

Postgres is not just one database.

It is a database platform.

That sounds like marketing until you look at how it actually works.

Postgres was designed for extensibility: new data types, functions, indexes, operators, procedural languages, and extensions.

That is why the ecosystem keeps absorbing adjacent workloads.

<div class=”pg-quote”> Postgres does not need to become ten different products. <br><br> It lets the ecosystem teach it new tricks. </div>

The center stays stable.

The edges keep expanding.

The everything database pattern

This is where the idea becomes practical.

  • JSONB means flexible schema does not automatically require a separate document database.
  • Full-text search means many search workloads can stay where the data already lives.
  • pgvector means embeddings can live next to application data, metadata, permissions, and SQL filters.
  • PostGIS means location data can join the rest of the business.
  • pg_cron means scheduled database jobs do not always need another scheduler.
  • TimescaleDB means time-series is now very much a Postgres conversation.

Even caching deserves a more thoughtful question.

Should Postgres replace Redis everywhere?

No.

But does every simple cache-like use case need Redis?

Also no. “A cache is not free just because it is fast. “

The pattern is the same every time:

Do not leave Postgres by default.

Leave when the workload earns it.


AI made this obvious

AI applications made the data movement tax impossible to ignore.

A simple RAG app can quickly become a distributed data puzzle: source documents here, chunks there, embeddings somewhere else, metadata in Postgres, permissions in the app, search in another index, freshness in a pipeline.

That is a lot of architecture before the user even asks a question.

With pgvector, embeddings can live in Postgres next to application data, metadata, permissions, and SQL filters.

That does not mean every vector workload belongs in Postgres.

It means the default AI architecture should not be “split everything immediately.”

AI did not eliminate data architecture. It made bad data architecture more expensive.

For many AI apps, the hard part is not storing vectors.

The hard part is grounding those vectors in trusted, fresh, permission-aware business data.

That is a Postgres-shaped problem.

So what does “Everything Database” really mean?

It does not mean one database for every workload forever.

That would be lazy architecture wearing a Postgres hoodie.

It means Postgres has changed the default question.

The old instinct was: “Every new problem needs a new system.”

The new instinct is: “What can I keep in Postgres?”

That is the shift.

Postgres has the relational foundation.

It has the extension ecosystem.

It has developer trust.

And it has enough practical capability to collapse many workloads back toward the center.

What can I stop synchronizing? That is the question And more often than before, the answer is: Keep it in Postgres.Fewer systems. Less complexity. Same Postgres.

That is the rise of PostgreSQL as the Everything Database.

Watch the POSETTE talk

This post is based on my POSETTE 2026 talk:

The Rise of PostgreSQL as the Everything Database
YouTube: https://youtu.be/nmgj7oufNo8
POSETTE speaker page: https://posetteconf.com/speakers/varun-dhawan/

Huge thanks to the POSETTE team and the broader Postgres community for creating space for this conversation.

References

PostgreSQL JSONB

Full Text Search

pgvector

PostGIS

pg_cron

TimescaleDB

POSETTE

Views are my own. I work on PostgreSQL in the cloud, but this post reflects my personal view as a database person who has seen enough “just add one more system” decisions eventually send a bill.

Looking Back to Go Forward: 20 years in Software

You know when someone casually mentions they’ve been working for 20 years, and you think, “Wow, that’s a long time” only to realize…wait, you’re that person? Yep, that’s me. This year marks 20 years in software, and it feels surreal.

In 2004, I started as a fresh graduate at McKinsey & Company. I was excited, nervous, clueless, and had no idea where this path would lead me. Two decades later, I’ve worked with some of the best teams at McKinsey, Microsoft, Target, and, yes, Microsoft again—because sometimes you come full circle.

So, here’s my look back at 20 years in software—20 moments, lessons, and memories that shaped this journey:

Continue reading “Looking Back to Go Forward: 20 years in Software”

Why I’m Excited for POSETTE 2024: An Event for Postgres

I’m happy to share that I’ll be speaking at POSETTE: An Event for Postgres from June 11-13, 2024! 🚀 It’s a huge honor to be chosen to speak at this awesome event, and I’m thrilled to be part of such an amazing lineup of speakers.

About My Talk

My talk, “What Makes Azure Database for PostgreSQL Great for Developers?“, is something I’m particularly excited about. I’ll cover key features like integrating essential extensions such as pgvector and PostGIS, and simplifying deployments for Azure Database for PostgreSQL Flexible Server. It’s all about making cloud development smoother and more efficient for developers.

Continue reading “Why I’m Excited for POSETTE 2024: An Event for Postgres”

Social Media Diet: how to lose 1000 useless notifications in 30 days

The post discusses the modern problem of feeling overwhelmed by social media and constant news updates. The author raises awareness about the importance of learning what to ignore and setting boundaries to protect one’s time. They endorse the concept of the ‘joy of missing out’ (JOMO), enjoying real-life moments, and prioritizing what really matters instead of trying to keep up with everything.

Disclaimer: This image was generated with DALL-E by OpenAI.
Continue reading “Social Media Diet: how to lose 1000 useless notifications in 30 days”

Mastering Data Manipulation with MERGE Command in PostgreSQL 15

Two years back, I wrote a blog post titled “PostgreSQL – Mastering UPSERT“, in which I explored the nuances of the INSERT ON CONFLICT command that allows conditional inserts or updates of rows.

Continuing its database technology innovation, PostgreSQL 15 has introduced an exciting new feature – the MERGE command. This command offers a more versatile approach to INSERT, UPDATE, or even DELETE rows in a table based on specific conditions. In this post, we’ll delve into the intricacies of this new MERGE command.

Continue reading “Mastering Data Manipulation with MERGE Command in PostgreSQL 15”

My talk at Citus Con 2023

I’m excited to be speaking at Citus Con 2023 on April 18-19 on reducing your PostgreSQL costs on Azure managed Postgres.


In my talk, I’ll be sharing tips and tricks that can help you save money without sacrificing performance. Join me at the upcoming conference to learn more about how you can optimize your Azure PostgreSQL deployment and reduce your costs.

https://www.citusdata.com/cituscon/2023/schedule/#od-session-dhawan

Whether you’re just getting started with Azure Postgres or you’re a seasoned pro, my talk will provide valuable insights and tips for optimizing your use of the platform. I’m looking forward to sharing my knowledge with the PostgreSQL community and learning from other experts in the field. See you at Citus Con 2023!

“Sharing your knowledge and learnings about Postgres—or Postgres extensions (like the Citus database extension)—is a useful way to give back to the community. Your talk can help other teams & projects learn from your successes (and mistakes) with Postgres.”

@clairegiordano

Thank Claire, for your inspiring words. They have really motivated me and given me the encouragement I needed for giving this talk. 🙌

2022 – My Year in Books 📚

It’s that time of year when I am excited to share the books I have read! It’s one of the self-created traditions that I look forward to every year.

This year in 2022, I’ve read some great books and watched a few amazing documentaries — some are new releases, some older, but each one of them truly made me a better person this year.

I’ve been posting my “My Year in Books” for last couple of years. I believe that sharing books is an easy way to connect with like minded folks. ❤️

In no particular order- let’s go!

Continue reading “2022 – My Year in Books 📚”

PostgreSQL Advanced Pattern Matching – Beyond LIKE Operator

Whenever you are dealing with pattern matching in PostgreSQL, it is often required to write queries to match string patterns. The conventional wisdom to do pattern match was using the LIKE operator, which is not very effective for many reasons. PostgreSQL now offers more advanced pattern matching options such as SIMILAR TO expressions, POSIX regular expressions, and ANY operator. In this article, we’ll compare the LIKE operator with these other advanced pattern matching features.

Continue reading “PostgreSQL Advanced Pattern Matching – Beyond LIKE Operator”

Data Science with PostgreSQL – Using the Window frame_clause

This is my 5th (and final) post on Window Function in PostgreSQL series. In previous posts on this topic, I have covered window function basics, using aggregate window functionsranking window function and value window functions. While you’re here, I’ll recommend to you check the previous posts on this topic.

In this article, we’ll learn a new concept frame_clause. Let’s jump right in!

Continue reading “Data Science with PostgreSQL – Using the Window frame_clause”

Data Science with PostgreSQL – Value Window Functions

This far in the Window Function in PostgreSQL series I have covered window function basics, and how to use aggregate window functions and ranking window function. I suggest you check the previous posts out 🙂

In this 4th post, I’ll show you how to use Value window functions – that can be used to calculate various “value” type aggregations such as Lag, LeadFirst_Value and Last_Value within each group of rows referred here as “window” or “partition”.

Continue reading “Data Science with PostgreSQL – Value Window Functions”