PACELC theorem for distributed databases – improves on CAP theorem
en.wikipedia.org
en.wikipedia.org
Isn't it ambiguous in a system when and if a partition occurs? At least I have seen 2 sides of the partition disagree if a partition occurs and when it occurs. I have seen clients see the server, but servers don't see each other (yeah that was horrible...).
It seems the idea in the wiki (and paper) is to assume code is operating in this binary fashion -- partitioned mode vs un-partitioned mode. Which implies somehow all sides will immediately know if a partition happens and switch modes. If that is the assumption, I think it is impractical.
> tradeoff of replicated systems is a major oversight [in CAP]
Usually the way distributed algorithms work, if they are implemented to pick A in case of a partition, they are already working in a certain way that will also pick E in case of PACELC. If they are implemented to pick C in case of a partition they will also be implemented to pick C for PACELC.
The provided table shows that pattern in 5/7 cases, most pretty solid databases (Dynamo, Cassandra, Riak, Volt, Megastore). And is disproved for 2 cases (MongoDB and PNUTS).
So I don't know.... Based on what I've read and seen, I wouldn't trust MongoDB with any distributed systems claims. It had a history of terrible default (un-acknowledged writes) and also terribly failing Aphyr's Knossos check. And I don't know much about PNUTS.
> [Title] PACLEC theorem for distributed databases – improves on CAP theorem (wikipedia.org)
It is "PACELC" according to the paper not "PACLEC" it seems. Though, granted PACLEC is more fun to say so maybe the paper can backronym that in.
And PAEC seems like a system that usually is consistent but then throws data away during a partition (but it accepts all your writes!). Systems where the worst case behavior is weaker than the ordinary case typically have lots of surprising behavior in that worst case.
Similar to CAP where you can't choose CA, I don't know why you'd choose either of these weird cases in PACELC.
From paper: "PACELC (pronounced “pass-elk”)..."
Perhaps that doesn't work both ways. An EL system can't choose to be EC. (Except for consistent reads in Cassandra/Dynamo/Riak, which certainly trade latency for consistency...)