Atomic (all of it will complete, or none), but not isolated (readers
can see parts of a write before they see the whole thing).

On Sun, Sep 26, 2010 at 1:19 PM, Aaron Morton <aa...@thelastpickle.com> wrote:
> Mutations against a single key on a single machine are
> atomic http://wiki.apache.org/cassandra/FAQ#batch_mutate_atomic
>
> Aaron
> On 27 Sep, 2010,at 07:48 AM, Norman Maurer <nor...@apache.org> wrote:
>
> To be more clear (maybe I was not before). BatchMutate is not atomic.
> So it only "batch up" mutates to reduce overhead. So it can be that
> you will receive data from it even if the whole operation is not
> complete or will not complete.
>
> bye,
> Norman
>
>
> 2010/9/26 Norman Maurer <nor...@apache.org>:
>> Comments inside..
>>
>> 2010/9/26 Lucas Nodine <lucasnod...@gmail.com>:
>>> I'm looking at a design where multiple clients will connect to Cassandra
>>> and
>>> get/mutate resources, possibly concurrently.  After planning a bit, I ran
>>> into the following scenero for which I have not been able to research to
>>> find an answer sufficient for my needs.  I have found where others have
>>> recommended Zookeeper for such tasks, but I want to determine if there is
>>> a
>>> simple solution before including another product in my design.
>>>
>>> Make the following assumption for all following situations:
>>> Assuming multiple clients where a client is someone accessing Cassandra
>>> using thrift.  All reads and writes are performed using the QUORUM
>>> consistency level.
>>>
>>> Situation 1:
>>> Client A ("A") connects to Cassandra and requests a QUORUM consistency
>>> level
>>> get of an entire row.  At or very shortly thereafter (before A's request
>>> completes), Client B ("B") connects to Cassandra and inserts (or mutates)
>>> a
>>> column (or multiple columns) within the row.
>>>
>>> Does A receive the new data saved by B or does A receive the data prior
>>> to
>>> B's save?
>>
>> Shoud receive A stuff.
>>>
>>> Situaton 2:
>>> B connects and mutates multiple columns within a row.  A requests some
>>> data
>>> therein while B is processing.
>>>
>>> Result?
>>
>> Depends.. is it done in BatchMutate or not ?
>>
>>>
>>> Situation 3:
>>> B mutates multiple columns within multiple rows.  A requests some data
>>> therein while B is processing.
>>>
>>> Result?
>>
>> See above..
>>
>>>
>>> Justification: At certain points I want to essentially lock a resource
>>> (row)
>>> in cassandra for exclusive write access (think checkout a resource) by
>>> setting a flag value of a column within that row.  I'm just considering
>>> race
>>> conditions.
>>>
>> You will need to use cages or something like that..
>>
>>
>>> Thanks,
>>>
>>> Lucas Nodine
>>
>> Bye,
>> Norman
>>
>



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com

Reply via email to