bchavez / bchavez/RethinkDb.Driver

Distributed Transaction Support

Open
#137 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.