tl;dr: You can perform non-blocking multi-object atomic reads and writes across arbitrary data partitions via some simple multi-versioning and by storing metadata regarding related items.
Without the time to go through all the details of the algorithm proposed by Peter Bailis and the various scenarios of a distributed system where the algorithm would have to work, my head was cycling between:
- could this actually be expanded to a read/write scenario? at what costs?
- isn’t this a form of a (weaker) XA implementation?
Luckly, Peter Bailis is already answering some of these questions in his post1:
If you’re a distributed systems or database weenie like me, you may be curious how NBTA related to well-known problems like two-phase commit.
In case you are familiar with XA, you could start reading the post with the “So what just happened?” section and then dive into the details of the algorithm and possible extensions.
Original title and link: Non-blocking transactional atomicity (NoSQL database©myNoSQL)