Hi everyone. Over the past year, I've built a MySQL Proxy that supports Online DDL. I'm not sure if there are other proxies out there with this feature, but I found it fascinating and thought it was worth sharing.
Of course, this proxy also supports many other features, such as Read Write Split, Read After Write Consistency, Load Balancing, and Transparent Failover.
I didn't build this database from the bottom up; instead, I forked Vitess and put a lot of effort into overhauling its architecture and SQL Engine Layer.
Moving forward, I hope to introduce more developer-friendly features into this Proxy. The next major feature should be something similar to the Branch functionality of PlanetScale.
Both PlanetScale and Neon have the branch feature, and it significantly simplify the process of testing and staging. However, the feature in PlanetScale is closed-source, nice to see an open-source alternative of that.
I'm not familiar with the concept of 'online' DDL. Does asynchron means I sacrifice consistency in this example?<p><pre><code> ALTER TABLE ADD COLUMN foo;
SELECT * FROM table;
-- may return column foo, or may not?
</code></pre>
DDL is still not safe to use in transactions, right?
More exactly how does a proxy add an online DDL capability to the presumably remote database?<p>Or is a database proxy something completely different than eg a web proxy?
On a somewhat related note, does anyone know of a web based SQL client app that we can install as a sort of proxy to cloud based DBs?<p>Company policy puts all kinds of restrictions on desktop connections to DBs but all the data scientists want direct client access so they can use robust software instead of using psql from a jump box.<p>The objective is mostly logging DDL actions and limiting certain DDL operations.