Thank you for your explanations. Even with a RF=1 and one node down I don't understand why I can't at least read the data in the nodes that are still up? Also, why can't I at least perform writes with consistency level ANY and failover policy ON_FAIL_TRY_ALL_AVAILABLE...shouldn't the nodes that are up be able to take in the writes destined for the node that is down and perform hinted handoffs when it comes back again? Unless by construction Cassandra behaves in the way you describe (which is perfectly fine and I will use it that way from now on) it would be logical for the RF=1 to not affect the behaviour I expect from just reading the top level descriptions of Cassandra behaviour I found in the documentation.
> If you want to survive node failures, use an RF above 1. And then makeTo elaborate a bit: RF, or replication factor, is the *total* number
> sure to use an appropriate consistency level.
of copies of any piece of data in the cluster. So with only one copy,
the data will not be available when a single node is down.
Consistency levels control how many nodes are required to respond to
requests before it is considered successful, and this has implications
on availability. For example, if you want to survive a single node
going down and you use RF=2, you must use ConsistencyLevel.ONE. If you
used QUORUM or ALL, any read or write would fail (QUORUM of 2 is 2).
Probably a common setup is to use RF=3 because it allows you to
survive a node going down, while also allowing you to use QUORUM. But,
whether that matters will be up to your use-case.
/ Peter Schuller (@scode, http://worldmodscode.wordpress.com)