[
https://issues.apache.org/jira/browse/IGNITE-16407?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Lapin updated IGNITE-16407:
-------------------------------------
Description:
Let's read, understand and discuss following papers:
[https://www.cockroachlabs.com/blog/how-cockroachdb-distributes-atomic-transactions/]
[1]
[https://www.cockroachlabs.com/blog/transaction-pipelining/] [2]
[https://www.cockroachlabs.com/blog/parallel-commits/] [3]
[https://dl.acm.org/doi/pdf/10.1145/3318464.3386134]
h3. Research resultsNaive tx implementation [1]
h3. Basic Steps
# Switch *Transaction Record*
## tx id (UUID)
## state [PENDING, ABORTED, COMMITTED]
## Cockroach K/V key - determines where the “switch” is located in the
distributed data store.
## timestamp
# Stage *Write Intents*
## Value that will be written if the transaction succeeds;
## Link (Key) to the transaction record;
## timestamp
# *Filter* - reading the intent (if any) within the context of corresponding
txState
# Flip - *Commit* the Transaction: txState.PENDING -> txState.COMMITED or
txState.ABORTED
# Unstage - {*}CleanUp{*}. Filtering step is expensive, because it requires
writes across the distributed system to filter through a central location (the
transaction record). So async cleanup operation that adjusts intents takes its
time as soon as possible.
Combining basic tx logic[1] with pipelining[2] and parallel commits[3] we'll
end up with such flow:
!Screenshot from 2022-02-03 10-29-58.png!
was:
Let's read, understand and discuss following papers:
[https://www.cockroachlabs.com/blog/how-cockroachdb-distributes-atomic-transactions/]
[https://www.cockroachlabs.com/blog/transaction-pipelining/]
https://www.cockroachlabs.com/blog/parallel-commits/
https://dl.acm.org/doi/pdf/10.1145/3318464.3386134
> In-depth CC related Cockroach research
> --------------------------------------
>
> Key: IGNITE-16407
> URL: https://issues.apache.org/jira/browse/IGNITE-16407
> Project: Ignite
> Issue Type: Task
> Reporter: Alexander Lapin
> Assignee: Alexander Lapin
> Priority: Major
> Labels: ignite-3
> Attachments: Screenshot from 2022-02-03 10-29-58.png
>
>
> Let's read, understand and discuss following papers:
> [https://www.cockroachlabs.com/blog/how-cockroachdb-distributes-atomic-transactions/]
> [1]
> [https://www.cockroachlabs.com/blog/transaction-pipelining/] [2]
> [https://www.cockroachlabs.com/blog/parallel-commits/] [3]
> [https://dl.acm.org/doi/pdf/10.1145/3318464.3386134]
> h3. Research resultsNaive tx implementation [1]
> h3. Basic Steps
> # Switch *Transaction Record*
> ## tx id (UUID)
> ## state [PENDING, ABORTED, COMMITTED]
> ## Cockroach K/V key - determines where the “switch” is located in the
> distributed data store.
> ## timestamp
> # Stage *Write Intents*
> ## Value that will be written if the transaction succeeds;
> ## Link (Key) to the transaction record;
> ## timestamp
> # *Filter* - reading the intent (if any) within the context of corresponding
> txState
> # Flip - *Commit* the Transaction: txState.PENDING -> txState.COMMITED or
> txState.ABORTED
> # Unstage - {*}CleanUp{*}. Filtering step is expensive, because it requires
> writes across the distributed system to filter through a central location
> (the transaction record). So async cleanup operation that adjusts intents
> takes its time as soon as possible.
> Combining basic tx logic[1] with pipelining[2] and parallel commits[3] we'll
> end up with such flow:
> !Screenshot from 2022-02-03 10-29-58.png!
--
This message was sent by Atlassian Jira
(v8.20.1#820001)