Wiki: https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions Whitepaper: https://cwiki.apache.org/confluence/download/attachments/188744725/Accord.pdf<https://cwiki.apache.org/confluence/download/attachments/188744725/Accord.pdf?version=1&modificationDate=1630847736966&api=v2> Prototype: https://github.com/belliottsmith/accord
Hi everyone, I’d like to propose this CEP for adoption by the community. Cassandra has benefitted from LWTs for many years, but application developers that want to ensure consistency for complex operations must either accept the scalability bottleneck of serializing all related state through a single partition, or layer a complex state machine on top of the database. These are sophisticated and costly activities that our users should not be expected to undertake. Since distributed databases are beginning to offer distributed transactions with fewer caveats, it is past time for Cassandra to do so as well. This CEP proposes the use of several novel techniques that build upon research (that followed EPaxos) to deliver (non-interactive) general purpose distributed transactions. The approach is outlined in the wikipage and in more detail in the linked whitepaper. Importantly, by adopting this approach we will be the _only_ distributed database to offer global, scalable, strict serializable transactions in one wide area round-trip. This would represent a significant improvement in the state of the art, both in the academic literature and in commercial or open source offerings. This work has been partially realised in a prototype. This partial prototype has been verified against Jepsen.io’s Maelstrom library and dedicated in-tree strict serializability verification tools, but much work remains for the work to be production capable and integrated into Cassandra. I propose including the prototype in the project as a new source repository, to be developed as a standalone library for integration into Cassandra. I hope the community sees the important value proposition of this proposal, and will adopt the CEP after this discussion, so that the library and its integration into Cassandra can be developed in parallel and with the involvement of the wider community.