When will Doltgres go Beta?
Doltgres, the Postgres-flavored version of Dolt, the world's first and only version controlled SQL database, was released in Alpha in November 2023. A Postgres-flavored version was our top customer ask. Demand doesn't seem to have waned as we just crossed 1,000 GitHub stars on the project.
What does Alpha mean? For us, Alpha means experimental. The best way to run Doltgres right now is as a Postgres replica to get a full, queryable audit log of your production Postgres. Only the truly intrepid should run a Doltgres primary for a non-toy application. There will be bugs.
We're running as fast as we can to shed the Alpha label and transition into Beta. We have four of our thirteen engineers dedicated full time to the project: Daylon, Zach, Jennifer, and Taylor.
What does Beta Doltgres mean? When can you expect it? This blog has answers.
What does Beta Mean?
A Beta Doltgres for us means you can confidently run Doltgres as your primary for most applications. Doltgres in Beta would be best suited for internal, small scale applications. There will still be bugs but the database will be stable.
sqllogictest
Correctness above 99%
For Dolt, we measure correctness via sqllogictest
. Dolt reached 100% correctness by this metric in February 2024, over 4 years after its initial release.
Doltgres currently stands at 54% correct in our nightly sqllogictest
runs, though it has peaked over 80%. Doltgres is currently undergoing an index upgrade, which degraded performance. This is causing timeouts in sqllogictest
. These timeouts show up as correctness issues even tough they are technically performance issues. Once these performance issues due to failing indexes are fixed we expect to get very close to 99% correctness, the target for Beta release.
sysbench
Latency under 5X Postgres
Speaking of performance, in Dolt, we measure performance using sysbench
. We compare the sysbench
results against MySQL to produce a performance multiple. Dolt is 1.5X slower than MySQL, about equal (ie. 1.0X) on writes and about 1.8X slower on reads.
Doltgres is currently 569X slower than Postgres on our nightly sysbench
runs. That's bad. This poor performance is mainly due to the aforementioned, bad index support. It turns out indexes are extremely important for database performance. Before we switched out index support to a more Postgres-compatible model, Doltgres was approximately 5X slower than Postgres so we expect once we fix indexes in Doltgres, we will hit this Beta requirement. This index fix will happen in the next couple weeks.
pgdump
compatibility
We know from our experience building Dolt that often the first step in trying a Postgres-compatible database like Doltgres will be dumping your current Postgres database using pgdump
and importing that dump into Doltgres. If that import doesn't work you are right to conclude the database isn't ready for your use case. Thus, we will have great pgdump
import support in Doltgres Beta. The vast majority of pgdump
s will import into Doltgres with no issue.
pgdump
compatibility means robust support of data description language (DDL) queries. All types and constraints must be supported. There will be some DDL features we do not support on Beta and these will be documented.
Workbench Compatibility
Again, using the experience of building Dolt as a template, the next thing customers will want in Doltgres is tool compatibility, mostly SQL workbenches like TablePlus or Datagrip. This is natural, once you get your data into Doltgres you want to run some queries on it. Unlike most applications users build, workbenches use information schema and pg_catalog
tables to render user interface components. We've begun work on pg_catalog
support. Expect the vast majority of pg_catalog
tables to be populated by the Doltgres Beta launch.
Users and Grants
Doltgres currently does not support users and grants. The default user is root and has full read and write access to the Doltgres server. Users and grants are a requirement for Hosted Doltgres. After fixing indexes, implementing Postgres-compatible users and grants is the next big Doltgres deliverable.
Replicas
Doltgres replication will work via Dolt's cluster replication system. Theoretically, this should work today but is untested. By the time we launch Doltgres in Beta, replication will be tested and work as expected.
Hosted Doltgres
Finally, Doltgres Beta will be accompanied by a Doltgres option in Hosted Dolt. Hosted Doltgres will allow you to let us run Doltgres for you, complete with replication, logging, backups, upgrades, and the built in SQL workbench.
What will be Missing?
There will be some functionality missing upon Doltgres Beta launch, specifically full ORM compatibility and plugin support.
Full ORM Compatibility
Object Relational Mappers (ORM) and tools like Ruby on Rails, Django, or Laravel with built in ORMs use esoteric features of SQL. We know this from making these tools work in Dolt. Even in Beta, expect some challenges using ORMs to connect to Doltgres.
Plugin Support
Doltgres contains no Postgres code. It is built entirely on custom code that uses Dolt's Prolly Tree based storage engine. Thus, Doltgres will never support the Postgres plugin ecosystem. Any plugin logic will need to be implemented in Doltgres using custom code. This means popular plugins like postgis
will not work in Doltgres on Beta launch.
So, When?
We plan on releasing Doltgres as Beta in Q1 2025. The target is early Q1 but it's far enough away that putting a quarter wide error boundary on it seems reasonable. Have something you want to see in Doltgres Beta that we missed? Come by our Discord and let us know.