On Tue, Jun 15, 2010 at 4:44 PM, Charles Butterfield
<charles.butterfi...@nextcentury.com> wrote:
> To clarify the history here -- initially we were writing with CL=0 and had
> great performance but ended up killing the server.  It was pointed out that
> we were really asking the server to accept and acknowledge an unbounded
> number of requests without waiting for any final disposition of the rows.
> So we had a "doh!" moment.  That is why we went to the other extreme of
> CL=ALL, to let the server fully dispose of each request before acknowledging
> it and getting the next.
>

CL.ALL (and CL.QUORUM) go through the strongly consistent write path,
while CL.ONE (and CL.ANY) go through the weakly consistent write path.
 Using CL.ALL you aren't _letting_ the server full dispose of each
request, you are _requiring_ it to hold on to resources until _all_
replicas confirm the write.  With CL.ONE, the writes are asynchronous,
with only a single success required before results are returned to the
client, consuming fewer server resources.  CL.ONE is what I recommend
you use unless you have specific needs to the contrary.

Unfortunately, the best documentation for this is the code, though it
is mentioned briefly here:
http://wiki.apache.org/cassandra/ArchitectureOverview


b

Reply via email to