bchavez / bchavez/RethinkDb.Driver
Distributed Transaction Support
- Dominant language
- C#
- Stars
- 381
- Forks
- 129
- PR merge metrics
- No merged PRs in 30d
Description
Just saw this NDC 2019 talk by Jimmy Bogard:
https://www.youtube.com/watch?v=IMvrg0bN9-o
Associated blog post:
* https://jimmybogard.com/life-beyond-distributed-transactions-an-apostates-implementation-relational-resources/
* https://jimmybogard.com/life-beyond-distributed-transactions-an-apostates-implementation-conclusion/
Associated Research Paper by Pat Helland: [LifeBeyondTxns.pdf](https://github.com/bchavez/RethinkDb.Driver/files/2866587/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)](https://www.youtube.com/watch?v=PZiV-Sd2uOs)**
Contributor guide
Research direction
Start by reviewing the linked NDC talk, Jimmy Bogard blog posts, and Pat Helland research paper. Assess whether the proposed primitives fit the RethinkDB driver, including recovery from major failures and architectural limitations; the issue does not name implementation files or tests, so completion criteria and scope must be defined first.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- databases, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100