> On Nov 15, 2025, at 9:47 PM, Alex Miller <[email protected]> wrote:
>
> To lead with the summary, there's two main points in the below.
> …
> The above is mostly just the chunks I've worked on/around before, but
> all of that left the impression that competing on OLTP performance seems
> intractable when your competition gets to break abstraction layers and
> you don't. Cassandra does seem to let one register custom code
> plugin-style for other features already (e.g. Triggers), and how much of
> that can be used/extended to permit the abstraction breaking necessary
> for performance is what I'd be staring at closely if someone told me to
> go implement SQL for Cassandra. ;)
Thanks for taking the time to reply, Alex. I THINK you and I first chatted
about this probably 6 years ago (give or take), and I know you spend a lot of
time in this space, so always nice to hear from you (I wanted to spark a
conversation, and nudging you about distributed sql is always an easy way to do
that).
In general, I don’t disagree with almost anything you've written (including
that Claude’s implementation of the transaction protocol is not great, which
should surprise nobody), with perhaps one or two caveats: I don’t think any of
the current extension points are going to get you much closer than CQL -
pushing mvcc down into cassandra would give you a chance, but none of the
current extension points get you anywhere near that in any rational way. If one
was willing to live in the same JVM, extending some of the classes definitely
opens up a few options. Would obviously make things much easier / more
performant, though. Similarly, the accord protocol should make some of the
optimizations you mentioned viable, I don’t know if the accord grammar as
implemented today in CQL actually allows that (again, I didnt try very hard,
but the nature of both the let/select read and the conditional block is fairly
rigid in the current implementation). Both of those mostly reinforce your real
point, though (“if you want this to be fast, you probably don’t want to do it
via CQL”), which, now that I’ve tried it, isn’t something I’m going to disagree
with at all.