[ 
https://issues.apache.org/jira/browse/CASSANDRA-7056?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14043851#comment-14043851
 ] 

Peter Bailis commented on CASSANDRA-7056:
-----------------------------------------

[~jjordan] Good question. The short answer is that this behavior (reading A @2 
and C@1) is well-defined under RAMP. Just like in Cassandra today, the fact 
that I read a write at time 500 doesn't mean I'm going to see the effects of 
all writes that occur before time 500! Rather, the guarantee that RAMP adds is 
that, once you see the effects of one write in the the batch, you'll see all of 
the writes in the batch.

So, in your scenario, you have three batches: B1 {A=1, B=1} at time 1, B1.5 
{B=1.5, C=1.5} at time 1.5, and B2 {A=2, B=2} at time 2. You could get the 
behavior you describe above if B1 executes and completes, B2 executes and 
complete, and we subsequently read sometime before B1.5 completes. So, I guess 
I disagree that "the real C you should be getting is the one from [the batch at 
time 1.5]" because you didn't yet see the effect of any writes from B1.5. 
However, once B1.5 completes, you *will* be guaranteed to read C at time 1.5.

It may be easier to think of RAMP as providing the ability to take each of your 
normal reads and writes under LWW and turn them into multi-column, multi-table 
writes that are all going to be visible/reflected in the table state (once 
completed). There's no special ordering guarantees beyond what Cassandra 
already provides; if you need strong ordering guarantees (e.g., enforcing 
sequential assignment of timestamps), it's a case for CAS.

> Add RAMP transactions
> ---------------------
>
>                 Key: CASSANDRA-7056
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7056
>             Project: Cassandra
>          Issue Type: Wish
>          Components: Core
>            Reporter: Tupshin Harper
>            Priority: Minor
>
> We should take a look at 
> [RAMP|http://www.bailis.org/blog/scalable-atomic-visibility-with-ramp-transactions/]
>  transactions, and figure out if they can be used to provide more efficient 
> LWT (or LWT-like) operations.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to