At DoltHub, we’ve been in the version-controlled database business for eight years now. We made Dolt, the world’s first version-controlled SQL database, and after a few years in beta it hit 1.0 in 2023. It’s now running on thousands of machines around the world every day, powering as many interesting version-controlled applications.
Since we first announced Dolt, we’ve gotten one question more than any other:
What about a Postgres version?
Dolt speaks the MySQL dialect and wire protocol, so it’s compatible with any tool or library that can connect to MySQL. At the time we started writing the database, MySQL was far and away the most popular free SQL database, but that was already starting to change. Postgres was gaining ground and continues to do so. Today, few companies are building new products on top of MySQL. Nearly everyone chooses Postgres for new work. This means that most of the new generation of database application engineers are familiar with Postgres’s SQL dialect, toolchain, and ecosystem.
Doltgres is our way of meeting those customers where they live. Doltgres combines the performant Git-style version control that makes Dolt unique with full Postgres compatibility. Your favorite Postgres workbench or connection library can connect to Doltgres just like a normal Postgres database, but with extra system tables and functions for full version control of all schema and data.
It’s been almost three years since we announced Doltgres’s alpha release and about 18 months since we announced Doltgres Beta. Today is the 8th anniversary of DoltHub Inc., and we’re excited to announce that Doltgres has finally achieved its 1.0 release.
What does 1.0 mean?#
Doltgres 1.0 means four things.
- Forward Storage Compatibility
- Production Performance
- Postgres Compatibility
- Stable Version Control Interface
Forward Storage Compatibility#
All future 1.x versions of Doltgres will be backwards compatible with 1.0.
Dolt’s storage engine has gone through a couple of backwards-incompatible changes since its original beta, including one that required existing customers to migrate their data. Doltgres has likewise explored different ways of storing and versioning its data leading up to the 1.0 release, but managed to do so in a way that didn’t require any customer data migration.
With Doltgres 1.0 we are committing to the current storage format used for all data. There will be no backwards-incompatible storage changes in any 1.x release of Doltgres.
Production Performance#
Doltgres 1.0 has production level query performance.
Dolt is faster than MySQL on the standard sysbench performance suite. Doltgres uses Dolt’s underlying storage and query engine, so that same performance applies to Doltgres as well.
However, MySQL itself is roughly 2-3 times slower than Postgres. This means that Doltgres is about 2.7 times slower than Postgres as of this launch. But there are two pieces of good news here. First, databases are very fast. We’re talking about the difference between 0.2 milliseconds for a query versus 0.5 milliseconds. In practice, any difference in performance for typical OLTP queries in a database-backed application is dominated by network latency, with the database itself being a relatively small part of overall measured latency. Second, we’re continuing to make improvements to Dolt’s performance over time. We started out 5x slower than MySQL and have now passed it in performance.
Doltgres is slower than Postgres but still more than fast enough to handle your production workload. And it will only get faster in future releases.
Postgres Compatibility#
Doltgres 1.0 is 99% Postgres compatible.
Doltgres measures Postgres compatibility in two primary ways:
- A test suite of 5.6 million SQL queries that are verified against real Postgres for correctness. These originally come from the sqllogictest project, which was developed for SQLite3. Doltgres currently scores over 99% on this suite.
- Comprehensive integration tests of different client libraries in different languages. Currently over 20 have official support, with more being added all the time.
Compatibility has been our highest priority for the last year of development. We have imported many hundreds of real-world Postgres dumps and written tests for dozens of client libraries. This means we’re very confident your Postgres schema and queries will work in Doltgres. If you find that they don’t, we promise to fix the problem in 24 hours.
Stable Version Control Interface#
Doltgres 1.0 version control interfaces will not change.
The system tables and functions that implement the version control features of Doltgres have been battle-hardened by years of production use in Dolt. You can write applications that use them and be assured they will not change in any 1.x release of Doltgres.
We’ll of course continue innovating by adding new version control features and making the existing ones work better and faster. But the code and queries you write today will continue working for every 1.x release.
What’s next?#
Doltgres 1.0 is just the beginning. You can read our roadmap for details, but here are some highlights.
- Support for common extensions including PostGIS
- Vector indexes
- Row-level security
- Collation support
- Better DDL support
Paying customers get write access to the roadmap.
Conclusion#
If you’ve been interested in a version-controlled SQL database but have been waiting for the Postgres version, this is your signal to try it out now. The current version has been years in the making and represents a lot of hard work and innovation by the team. We’re very excited for you to try it and to tell us what you think.
Questions about using the 1.0 release? Find a bug you want fixed? Come by our Discord to talk to our engineering team and meet other Doltgres users.