On 6/16/2011 7:56 PM, Dan Hendry wrote:
How would your solution deal with complete network partitions? A node being 'down' does not actually mean it is dead, just that it is unreachable from whatever is making the decision to mark it 'down'.

Following from Ryan's example, consider nodes A, B, and C but within a fully partitioned network: all of the nodes are up but each thinks all the others are down. Your ALL_AVAILABLE consistency level would boil down to consistency level ONE for clients connecting to any of the nodes. If I connect to A, it thinks it is the last one standing and translates 'ALL_AVALIABLE' into 'ONE'. Based on your logic, two clients connecting to two different nodes could each modify a value then read it, thinking that its 100% consistent yet it is actually *completely* inconsistent with the value on other node(s).

Help me out here. I'm trying to visualize a situation where the clients can access all the C* nodes but the nodes can't access each other. I don't see how that can happen on a regular ethernet subnet in one data center. Well, I"m sure there is a case that you can point out. Ok, I will concede that this is an issue for some network configurations.

I suggest you review the principles of the infamous CAP theorem. The consistency levels as the stand now, allow for an explicit trade off between 'available and partition tolerant' (ONE read/write) OR 'consistent and available' (QUORUM read/write). Your solution achieves only availability and can guarantee neither consistency nor partition tolerance.

It looks like CAP may triumph again.  Thanks for the exercise Dan and Ryan.

Reply via email to