3 ms·
I don’t think it should have been called “CAP” theorem. I think of it as “CAL” (consistency–availability-latency). It has always struck me that the P in CAP is
by efitz 3y ago
I don’t think it should have been called “CAP” theorem. I think of it as “CAL” (consistency–availability-latency). It has always struck me that the P in CAP is different than the other two characteristics. C and A are continuous values, but P is binary (with a duration presumably).
The “P” in CAP means “tolerance of partition events”. But that’s really not what most engineering teams are thinking about when they talk about CAP theorem. Teams that really want tolerance to network partitions are really talking about building parallel instances, for example, cloud providers implementing multiple regions. If they need some level of consistency across those instances, then really, it becomes a discussion about latency.
If you think about it, what you’re really talking about with the network partition events is how stale or latent the data on each side will become, and whether or not, it will become consistent again, particularly without human intervention.
When you talk about it in terms of CAL, now all the properties are continuous, and you can discuss the trade-offs to each property with respect to network partitions.
- belter 3y agohttps://ar5iv.labs.arxiv.org/html/2301.08906v1 https://ar5iv.labs.arxiv.org/html/2301.08906v1 - "...We have extended the CAP theorem to relate quantitative measures of these two properties to quantitative measures of communication and computation latency (L), obtaining a relation called the CAL theorem that is linear in a max-plus algebra. This paper shows how to use the CAL theorem in various ways to help design real-time systems..."
- efitz 3y agoThank you for the link. I’m glad other people are thinking this way, and with more formalism.
- sebk 3y agoProfessor Daniel Abadi makes a similar point in his paper [1], where he improves on CAP with PACELC -- if there is a partition (P) how does the system tradeoff between availability and consistency (A and C); else (E) when the system is running as normal in the absence of partitions, how does the system tradeoff between latency (L) and consistency (C)?. (From his blog here: [2]). Klepmann makes an interesting critique [3], that neither is particularly useful because both imply that you must either pick linearizability or total availability. When in practice, there have been plenty of successful databases that present neither characteristic, and thus are neither CP nor AP. [1]: https://www.cs.umd.edu/~abadi/papers/abadi-pacelc.pdf https://www.cs.umd.edu/~abadi/papers/abadi-pacelc.pdf [2]: https://dbmsmusings.blogspot.com/2010/04/problems-with-cap-and-yahoos-little.html https://dbmsmusings.blogspot.com/2010/04/problems-with-cap-a... [3]: https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html https://martin.kleppmann.com/2015/05/11/please-stop-calling-...