2 ms·
The middle part of 'CAP Twelve Years Later' [1], especially the part about 'Managing Partitions', and the associated diagram, really should be mandatory reading
by niftich 8y ago
The middle part of 'CAP Twelve Years Later' [1], especially the part about 'Managing Partitions', and the associated diagram, really should be mandatory reading for anyone who invokes CAP, as it drives home the fact that a partition creates alternate universes (invariants), which have to be reconciled after the fact, and points out that allowing reads only is a valid strategy to provide Consistency (erroring out on writes), while systems that choose to provide Availability (trying to fulfill every transaction) will find themselves in a situation where they have to reconcile mutations that happened in separate universes, exactly like a version control system would. It also provides some strategies on how some write-like operations could be done to minimize disruption to existing state, such as recording the intent to mutate some data in a way that enables duplicates to be discarded later, and for the mutation to be performed at a time that it is safe.
The author of the HN-featured article is the formulator of the PACELC theorem, which makes clear that replication is mandatory and thus always propagates state that needs to be reconciled. The ability of nodes to freely communicate with one another means that it's possible to delay answers to operations until all nodes have recorded its effects. In the event of a partition, nodes cannot share information with other nodes, so a choice must be made between denying operations that would endanger states getting out of sync, or allowing them through, and dealing with the fallout later.
[1] https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed https://www.infoq.com/articles/cap-twelve-years-later-how-th...
- hinkley 8y ago> recording the intent to mutate some data in a way that enables duplicates to be discarded later, and for the mutation to be performed at a time that it is safe. Isn’t that, fundamentally, old school batch processing? Plus ça change, plus c’est le même chose...