cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Araujo <>
Subject Re: Atomicity Strategies
Date Sat, 09 Apr 2011 01:53:39 GMT
On 4/8/11 5:46 PM, Drew Kutcharian wrote:
> I'm interested in this too, but I don't think this can be done with Cassandra alone.
Cassandra doesn't support transactions. I think hector can retry operations, but I'm not sure
about the atomicity of the whole thing.
> On Apr 8, 2011, at 1:26 PM, Alex Araujo wrote:
>> Hi, I was wondering if there are any patterns/best practices for creating atomic
units of work when dealing with several column families and their inverted indices.
>> For example, if I have Users and Groups column families and did something like:
>> Users.insert( user_id, columns )
>> UserGroupTimeline.insert( group_id, { timeuuid() : user_id } )
>> UserGroupStatus.insert( group_id + ":" + user_id, { "Active" : "True" } )
>> UserEvents.insert( timeuuid(), { "user_id" : user_id, "group_id" : group_id, "event_type"
: "join" } )
>> Would I want the client to retry all subsequent operations that failed against other
nodes after n succeeded,  maintain an "undo" queue of operations to run, batch the mutations
and choose a strong consistency level, some combination of these/others, etc?
>> Thanks,
>> Alex
Thanks Drew.  I'm familiar with lack of transactions and have read about 
people using ZK (possibly Cages as well?) to accomplish this, but since 
it seems that inverted indices are  common place I'm interested in how 
anyone is mitigating lack of atomicity to any extent without the use of 
such tools.  It appears that Hector and Pelops have retrying built in to 
their APIs and I'm fairly confident that proper use of those 
capabilities may help.  Just trying to cover all bases.  Hopefully 
someone can share their approaches and/or experiences.  Cheers, Alex.

View raw message