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