incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aaron morton <aa...@thelastpickle.com>
Subject Re: Questions about TTL and batch_mutate
Date Sun, 21 Aug 2011 12:21:16 GMT
>  I am wondering if TTL values also follow gc_grace?
They are purged by the first compaction that processes them after TTL has expired. The TTL
expiry is used the same way as the expire on a Tombstone.

Thinking out loud, is this possible….
 
t0 - write col to all 3 replicas. 
t1 - overwrite col with a ttl, write to 2 out of 3 replicas. 
t2 - compaction on all nodes, col removed from 2 out of 3 replicas
t3 - read at QUORUM, col written in t0 returns.  

ExpiringColumn sets it localDeletionTime using the ttl, and cfs.removeDeletedStandard() will
purge the column. 

> The mutation against Column Family "CF_B" is placed last.
> If:
>       get CF_B[def] is 55
> Can I then safely assume that
>       get CF_A[abc] is 10 OR a newer value
The order the changes are applied is undefined (they are pulled from the values of a HashMap).
So this should not be relied upon. 

Cheers


-----------------
Aaron Morton
Freelance Cassandra Developer
@aaronmorton
http://www.thelastpickle.com

On 21/08/2011, at 11:38 PM, Joris van der Wel wrote:

> Hello,
> 
> I have a ColumnFamily in which all columns are always set with a TTL,
> this would be one of the hottest column families (rows_cached is set
> to 1.0). I am wondering if TTL values also follow gc_grace? If they
> do, am I correct in thinking it would be best to set gc_grace really
> low in this case? (zero?)
> 
> Another question:
> For a single key I have data in ColumnFamily "CF_A" and ColumnFamily
> "CF_B". I set their data in one thrift "batch_mutate".
> If I understood correctly, atomicity is then guaranteed (if one
> mutation fails, they all fail). But isolation is not. However if for
> example the following Mutation takes place:
> 
> batch_mutate({
>     "mykey": {
>          "CF_A": [
>                    Mutation {
>                         column_or_supercolumn: ColumnOrSuperColumn {
>                              column: {
>                                   name: "abc",
>                                   value: 10,
>                                   timestamp: 1313918714729
>                              }
>                         }
>                    }
>               ],
>          "CF_B": [
>                    Mutation {
>                         column_or_supercolumn: ColumnOrSuperColumn {
>                              column: {
>                                   name: "def",
>                                   value: 55,
>                                   timestamp: 1313918714730
>                              }
>                         }
>                    },
>               ]
>     }
> }, QUORUM)
> 
> The mutation against Column Family "CF_B" is placed last.
> If:
>       get CF_B[def] is 55
> Can I then safely assume that
>       get CF_A[abc] is 10 OR a newer value
> 
> 
> Thanks,
> Gr. Joris


Mime
View raw message