cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From William Oberman <ober...@civicscience.com>
Subject Re: What does a write lock ?
Date Fri, 08 Jul 2011 12:58:23 GMT
Disregard most of my post (already).  I forgot that reads aren't isolated.
 That means A and B are states cassandra will *eventually* be in, but at any
point in time a read might see a "partial B" (where some columns are still
A, and others are B).  Though, I'm sure someone else will confirm if I'm
wrong yet again.

For me, if I need two pieces of data to be consistently related to each
other and stored in cassandra, I encode them (usually JSON) and store them
in one column.

will

On Fri, Jul 8, 2011 at 8:30 AM, William Oberman <oberman@civicscience.com>wrote:

> Questions like this seem to come up a lot:
>
> http://stackoverflow.com/questions/6033888/cassandra-atomicity-isolation-of-column-updates-on-a-single-row-on-on-single-no
>
> http://stackoverflow.com/questions/2055037/cassandra-atomic-reads-writes-within-a-single-columnfamily
> http://www.mail-archive.com/user@cassandra.apache.org/msg14701.html
>
> Lets say you read state A (from one key in one CF), you change the data to
> A' in your client, and you write A'.  Are you worried that someone else
> might have changed A to B during this process (making the "new" state a race
> between A' and B)?  It doesn't sound to me like you are...  It sounds to me
> like you're worried about a set of columns for the key being in a consistent
> state before, during, and after a process.  And A -> A' and A -> B will each
> be atomic for the key (based on my understanding).  But, if A' and B are
> changes to a different set of columns, I believe that would interleave,
> which itself could be "inconsistent" from your application's point of view.
>
>
> will
>
> On Thu, Jul 7, 2011 at 11:41 PM, Jeffrey Kesselman <jeffpk@gmail.com>wrote:
>
>> Really, as i lay in the bath thinking nabout it, I concluded what I am
>> looking for is a very limited form of Consistency.
>>
>> Its consistency over a single row on a single node just for the period of
>> update.
>>
>>
>> On Thu, Jul 7, 2011 at 10:34 PM, Jeffrey Kesselman <jeffpk@gmail.com>wrote:
>>
>>> Its not really isolation, btw, because we
>>> arent talking about anyone seeing an update mid-update.    Rather, we
>>> are talking about when updates are allowed to occur.
>>>
>>> Atomicity means that all the updates happen together or they don't happen
>>> at all.
>>> Isolation means that no results of the update are visible until the
>>> entire update operation is complete.
>>>
>>> This really lies somewhere in the middle of the two concepts.   Its part
>>> of the results of the combined effects of ACID
>>>
>>>
>>> On Thu, Jul 7, 2011 at 10:27 PM, Jonathan Ellis <jbellis@gmail.com>wrote:
>>>
>>>> Sounds to me like you're confusing atomicity with isolation.
>>>>
>>>> On Thu, Jul 7, 2011 at 2:54 PM, Jeffrey Kesselman <jeffpk@gmail.com>
>>>> wrote:
>>>> > Yup, im even more confused.    Lets talk about the model, not the
>>>> > implementation.
>>>> > AIUI updates to a row are atomic across all columns in that row at
>>>> once,
>>>> > true?
>>>> > If true then the next question is, does the validation happen inside
>>>> or
>>>> > outside of that guarantee, and is the row guaranteed not to change
>>>> between
>>>> > validation and update?
>>>> > If that is *not* the case then it makes a whole class of solutions to
>>>> > synchronization problems fail and puts my larger project
>>>> > in serious question.
>>>> >
>>>> > On Thu, Jul 7, 2011 at 3:43 PM, Yang <teddyyyy123@gmail.com> wrote:
>>>> >>
>>>> >> no , the memtable is a concurrentskiplistmap
>>>> >>
>>>> >> insertion can happen in parallel
>>>> >>
>>>> >> On Jul 7, 2011 9:24 AM, "Jeffrey Kesselman" <jeffpk@gmail.com>
>>>> wrote:
>>>> >> > This has me more confused.
>>>> >> >
>>>> >> > Does this mean that ALL rows on a given node are only updated
>>>> >> > sequentially,
>>>> >> > never in parallel?
>>>> >> >
>>>> >> > On Thu, Jul 7, 2011 at 3:21 PM, Yang <teddyyyy123@gmail.com>
>>>> wrote:
>>>> >> >
>>>> >> >> just to add onto what jonathan said
>>>> >> >>
>>>> >> >> the columns are immutable . if u overwrite/ reconcile a
new obj is
>>>> >> >> created and shoved into the memtable
>>>> >> >>
>>>> >> >> there is a shared lock for all writes though which guard
against
>>>> an
>>>> >> >> exclusive lock on memtable switching/flushing
>>>> >> >> On Jul 7, 2011 7:51 AM, "A J" <s5alye@gmail.com>
wrote:
>>>> >> >> > Does a write lock:
>>>> >> >> > 1. Just the columns in question for the specific row
in question
>>>> ?
>>>> >> >> > 2. The full row in question ?
>>>> >> >> > 3. The full CF ?
>>>> >> >> >
>>>> >> >> > I doubt read does any locks.
>>>> >> >> >
>>>> >> >> > Thanks.
>>>> >> >>
>>>> >> >
>>>> >> >
>>>> >> >
>>>> >> > --
>>>> >> > It's always darkest just before you are eaten by a grue.
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > It's always darkest just before you are eaten by a grue.
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>> Jonathan Ellis
>>>> Project Chair, Apache Cassandra
>>>> co-founder of DataStax, the source for professional Cassandra support
>>>> http://www.datastax.com
>>>>
>>>
>>>
>>>
>>> --
>>> It's always darkest just before you are eaten by a grue.
>>>
>>
>>
>>
>> --
>> It's always darkest just before you are eaten by a grue.
>>
>
>
>
>

Mime
View raw message