Thanks Michael, I will take a look at LWT for the future but unfortunately we are using Cassandra 1.2 ( I should have stated that, sorry). Are there any recommendations for 1.2, or do you just have to deal with him the race condition and possible duplicate data.
Thanks again Sent from my BlackBerry 10 smartphone on the Rogers network. Original Message From: Michael Shuler Sent: Monday, February 24, 2014 10:17 PM To: user@cassandra.apache.org Reply To: user@cassandra.apache.org Subject: Re: Cassandra Data Model and Surrogate Keys On 02/24/2014 09:00 PM, John Stager wrote: > Hello, > > We are working on our data model for Cassandra and we have a need to use > surrogate keys (timeuuid) and not the natural key for one of our tables > but this causes a possible timing issue when determining if a row > already exists.Are there any best practices or patterns for Cassandra > for using surrogate keys? > > This is the classic user id (surrogate key) and username (email address). This sounds like the perfect use case for lightweight transactions and just using timeuuid. LWT are more expensive due to read before write, but when needed, as in your case, it's the right fit. Even with perfectly time-synced nodes, there is still a race for two users to create the same userid, which is why LWT was included. http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0 http://www.datastax.com/documentation/cassandra/2.0/cassandra/dml/dml_ltwt_transaction_c.html -- Kind regards, Michael