You know that sinking feeling when your analytics query takes 30 seconds and you just know there’s a better way? You’ve been told to run two databases—one for transactions, one for analytics. You’ve managed the complexity, the sync, the operational tax. And you’ve silently wondered: why can’t one database do both?
I had the same frustration. So I decided to do something about it. I rewrote Postgres from scratch in Rust. And the results are… embarrassing for the original.
Let me be clear: This isn’t just a Rust port. The language is the enabler, not the hero. The real performance leap comes from discarding the legacy process-per-connection model, using threads instead, and integrating direct-to-binary codegen. These are architectural shifts that Postgres’s C foundation fundamentally resists.
One developer on the project’s GitHub release put it perfectly: “there’s some great stuff here, particularly the direct-to-binary codegen, threads instead of processes and sync batching.” That’s not a coincidence. That’s a first-principles rethinking of what a database should be.
We’ve been lied to: you don’t need separate databases for OLTP and OLAP. The pgrust v0.2 release shows that a single system can outperform both the original transactional Postgres and specialized analytical engines like ClickHouse. The benchmark numbers are stark—and they challenge everything we thought we knew about database architecture.
But here’s the twist: Rust is just the messenger. The real story is about breaking free from the 1980s model of one process per connection. It’s about embracing modern data formats like Arrow and SIMD instructions that the original Postgres codebase was never designed to support. The language rewrite was necessary, but it’s the architectural rethinking that delivers the speed.
This isn’t a theoretical exercise. The comments on the release include requests to port in OrioleDB next. The community is paying attention. And they should be. The days of maintaining two database systems are numbered.
What does this mean for you? If you’re running Postgres today, you have a choice: wait for the legacy to catch up, or start experimenting with a rewrite that already beats the incumbent at its own game. The infrastructure future is simpler, cheaper, and faster.
I’ll say it plainly: This is brilliant. It’s the future of databases. And it’s available to you right now on GitHub. Stop maintaining two databases. Start here.
FAQ
Q: Is this Rust rewrite of Postgres production-ready?
A: Not yet. The v0.2 release is a proof-of-concept that demonstrates massive performance gains, but it hasn't been battle-tested in production environments. Expect bugs, missing features, and a need for careful testing before you trust it with real data.
Q: What does this mean for my existing Postgres setup?
A: Short-term, nothing changes. Long-term, this signals that the single-database dream is achievable. You can start experimenting with pgrust for non-critical workloads, but don't migrate your production OLTP/OLAP split yet. The architectural insights (threads, direct-to-binary, Arrow) will likely influence future Postgres extensions.
Q: Why not just use ClickHouse for analytics and keep Postgres for transactions?
A: That's the conventional wisdom—and it's expensive. You're paying for two systems, managing data sync, and dealing with operational complexity. The pgrust approach shows that with modern architecture, a single system can handle both workloads faster than either specialist. The contrarian take: the two-database era is an artifact of legacy limitations, not an inherent necessity.