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.

Reply via email to