我经历了CAP。经过它,我的理解是CAP只在上下文中才有意义 复制(其中写入发生在一个节点上,即主服务器然后在从服务器上复制)不是用于分片/水平扩展(其中数据是 基于某些键分区。所以不同的数据位于不同的节点上。
理想情况下,数据将始终在分片中保持一致/可用(主要是NoSql DB) 由于单个节点包含所需数据,因此无需将相同数据写入其他节点。所以在NoSql中没有必要 parttion容忍,因为节点之间有通信节点,除非需要复制。那么为什么CAP theorum会为NoSql DB进行分片 用于不复制。
对我来说选择b / w C和A应该有意义我们使用复制而不是shard主要发生在SQL DB而不是NOSql DB中但是阅读google上的文章主要是谈论NoSql DB的CAP方面
我知道我错过了作为CAP theorum的东西,但不确定它是什么?
答案 0 :(得分:1)
如果每个分片只有一个主节点(没有任何类型的复制),则CAP定理不适用。但是大多数实现都有一个主分区加一个,两个或多个从属,用于只读查询。并且此配置对集群中的每个分片重复。然后,存在复制,因此CAP定理适用(而PACELC定理适用)。复制可以用于扩展分片,但主要用于可用性。如果主分片发生故障,则其中一个将扮演主角色。