[ 
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)

Reply via email to