> The CAP system model is a single, read-write register – that’s all. For example, the CAP theorem says nothing about transactions that touch multiple objects: they are simply out of scope of the theorem, unless you can somehow reduce them down to a single register. [WHICH YOU CAN. DUH. SINGLE-REGISTER IMPOSSIBILITY OF CONSISTENCY APPLIES TO ALL N>=1]
Please stop calling databases CP or AP
31–35 of 35 posts
Re: Please stop calling databases CP or AP
#32It irks me whenever something trying to clarify CAP insists that you can't choose CA. You can. In the real world you can't avoid partitions, but you don't have to tolerate them. The rule for Availability is that non-failing nodes must respond. If you detect a partition, you can fail the node. Make a system that shuts down when it loses a connection and you can be CA.
This highlights a further asymmetry in CAP. Yes, P is unavoidable if you have a distributed system. But also, availability is a property of the system when there is a partition . If you're not going to tolerate partitions, what does it mean to be available?
It means you're not running a partitioned and distributed system, but a regular non-partitioned system.
Yes I know distributed cloud object-graph databases on selective-persist elastic firesprout-nodes are very popular and trendy these days, but lots of people just run regular, old-fashioned unpartitioned databases, like pgsql/mysql and they work just fine.
I know. Like whoah, eh?
Re: Please stop calling databases CP or AP
#33Impossibility results are really good for proving that one or more things are impossible. The CAP theorem is an impossibility result.
Well I'm certainly impressed.
Re: Please stop calling databases CP or AP
#34If you choose to be available, for all operations at all disconnected sites, you may need to resolve conflicts in some fashion when or if the partition resolves.
If you choose to be consistent, you may need to deny operations to some portion of sites or for some portion of operations.
I find the ATM example to be very useful, I also try to whenever possible understand the system in terms of ledgers and accounting...they have been solving these problems also for a long time.
The formal definitions are very useful, and I would argue have unfortunately been lost in the noise. People are often trying to understand and compare many different and sometimes quickly evolving technologies, and these working definitions and misinterpretations seem to be largely related to misunderstandings or in some cases fit to the terminology of a specific vendor (which can be very confusing!)
It is also very useful to test your use cases and what you can tolerate in terms of consistency, latency, and availability with specific implementations.
I think a lot of the problem is that marketing material and documentation have collided in a similar fashion to reporting and advertising.
The unfortunate message seems to be: buyer beware
I think a similar thing has happened probably many times before, relational databases for instance and isolation levels are rarely discussed in terms of the formal definitions and much more often the vendor specific definitions.
My maybe much weaker message/ take away would be: define the terms that may be ambiguous so that you can get to the real fun of the ideas !
Re: Please stop calling databases CP or AP
#35The article is good, however probably there is some issue here: "so quorum operations are not CAP-available (at least temporarily, until the database sets up additional replicas on the minority side)." Availability is an eventual property, so technically speaking if the minority partition within a non-infinite amount of time always recovers and is able to provide a reply for our query, it is Available from the POV of…