> In exchange for always accepting writes, depending on what fails where and when, reads in Cassandra may only retrieve stale data, or the reads of some clients can be inconsistent with reads of others.
Similar to what Amazon describes in the Dynamo paper, Cassandra lets you specify how many replicas to block for on reads (R) and writes (W). If R + W > N (replication factor) then you will always have strong consistency -- clients will always read the most recent value. In particular you can get consistency while still having excellent availability by blocking for a quorum for both R and W, so that is probably the best default choice. But different applications will have different needs -- Facebook liked to insert with W=0 to minimize latency on non-critical data, for instance. So you can't have your CAP cake and eat it too, but Cassandra gives you more flexibility in picking your poison than most systems offer. :) -Jonathan
