bchavez / RethinkDb.Driver

:headphones: A NoSQL C#/.NET RethinkDB database driver with 100% ReQL API coverage.
http://rethinkdb.com/api/java
Other
383 stars 134 forks source link

Distributed Transaction Support #137

Open bchavez opened 5 years ago

bchavez commented 5 years ago

Just saw this NDC 2019 talk by Jimmy Bogard:

https://www.youtube.com/watch?v=IMvrg0bN9-o

Associated blog post:

Associated Research Paper by Pat Helland: LifeBeyondTxns.pdf https://queue.acm.org/detail.cfm?id=3025012

It might be interesting to provide some of these distributed transaction facilities and primitives within the RethinkDB driver; either in the same assembly or as a separate RethinkDb.Driver.Transactions assembly. Probably the latter.

A decent implementation could make it easy for developers to get distributed transactions working across multiple documents and database systems with RethinkDB.

The implementation of these distributed transaction primitives could also leverage the upcoming database write-hook triggers in the RethinkDB 2.4 release. Bogard leverages "trigger"-like database features (but are more change feed) things in CosmosDB.

I still need to study this approach more to get a better understanding if it really solves the problem; if it can recover from major failure scenarios; if it generally makes architectural sense; and understand any limitations in this approach before implementing.

:beach_umbrella: :trumpet: Beach Boys - Good Vibrations (Nick Warren bootleg)