I was guilty, for a time, of flinging 'CAP' around. Matters are, I believe, both simpler and far more complex.
Here's the simplest way I can imagine a scenario. This is very similar to what my company deals with all the time.
Given two, network distant data centers. Requests can land on either datacenter. A request can be a PUT or a GET.
We deal with phone calls, so we have to provide an exceptionally reliable and consistent service.
The problem: a PUT lands in datacenter A. All subsequent GETs have to be consistent with this PUT. Even if they land in datacenter B.
The rest of the problem: datacenters have to be able to function independently. This means that we can't block a PUT while it sync's to the other datacenter. The other datacenter might be down, or there might be some network delay, or whatever.
In my mind, it's simply impossible to have complete consistency and complete reliability when the redundant pieces are WAN connected.(1) One can only approach and approximate this, with more and more hardware, circuits and development complexity.
Is my assertion incorrect? I'm unclear if HyperDex helps me with this problem.
By the way, I'm pretty excited about this product overall. If I wasn't in catch-up mode at work, I'd be hammering out a proof of concept project on it right away. It seems pretty compelling.
And thanks for this offering!
1) I believe a 'thick client' can, almost, solve this problem. Consider some Javascript web app. It can be developed to transparently handle various network partition situations. More or less. But many of our requests allow absolutely no code on the client side. They are standard REST calls.