This is a case where a test-and-set feature would be useful. See the
following JIRA. We just don't have it nailed down yet.
https://issues.apache.org/jira/browse/CASSANDRA-48

Jun
IBM Almaden Research Center
K55/B1, 650 Harry Road, San Jose, CA  95120-6099

[email protected]



                                                                       
             Ivan Chang                                                
             <ivan.ch...@medig                                         
             y.com>                                                     To
                                       [email protected]
             07/17/2009 07:14                                           cc
             AM                                                        
                                                                   Subject
                                       Concurrent updates              
             Please respond to                                         
             cassandra-u...@in                                         
             cubator.apache.or                                         
                     g                                                 
                                                                       
                                                                       




I have the following scenario that would like a best solution for.

Here's the scenario:

Table1.Standard1['cassandra']['frequency']

it is used for keeping track of how many times the word "cassandra"
appeared.

Let's say we have a bunch of articles stored in Hadoop, a Map/Reduce greps
all articles throughout the Hadoop cluster that matches the pattern
^cassandra$
and updates Table1.Standard1['cassandra']['frequency'].  Hence
Table1.Standard1['cassandra']['frequency'] will be updated concurrently.

One of the issues I am facing is that Table1.Standard1
['cassandra']['frequency']
stores the count as a String (I am using Java), so in order to update the
frequency
properly, the thread that's running the Map/Reduce will have to retrieve
Table1.Standard1['cassandra']['frequency'] in its native String format and
hold
that in temp (java Sttring), convert into int, then add the new counts in,
and finally
"SET Table1.Standard1['cassandra']['frequency']. =  '" + temp.toString() +
''"

During the entire process, how do we guranatee concurrency.  The Cql SET
does
not allow something like

SET Table1.Standard1['cassandra']['frequency']. = Table1.Standard1
['cassandra']['frequency']. + newCounts

since there's only one String type.

What would be the best solution in this situtaion?

Thanks,
Ivan

<<inline: graycol.gif>>

<<inline: pic27086.gif>>

<<inline: ecblank.gif>>

Reply via email to