【问题标题】:CAP theorum is applicale for Replication or Sharding?CAP 定理适用于复制和分片?
【发布时间】:2018-01-13 13:47:53
【问题描述】:

我通过CAP 。经过之后,我的理解是 CAP 仅在上下文中才有意义 复制(其中写入发生在一个节点上,即主节点,然后跨从节点复制)不适用于分片/水平扩展(数据在 根据某个键进行分区。所以不同的数据位于不同的节点上)。

理想情况下,数据在分片中始终保持一致/可用(主要是 NoSql DB) 由于单个节点包含所需的数据,因此无需将相同的数据写入其他节点。所以在 NoSql 中没有必要 分区容错,因为节点之间存在通信节点,除非需要复制。那么为什么 CAP 理论会出现在 NoSql DB 的分片中 用于不复制。

对我来说选择黑白 C 和 A 应该是有意义的,我们使用复制而不是分片,这主要发生在 SQL DB 中而不是在 NOSql DB 中,但阅读谷歌上的文章主要是在 CAP 方面讨论 NoSql DB

我知道我错过了 CAP 定理,但不确定它是什么?

【问题讨论】:

  • CAP 限制了用户界面的行为方式,因为它具有分布式实现。您没有清楚地区分用户界面及其实现。复制和分片可以是其中任何一个的一部分。 CAP 始终适用,它表示用户无法访问数据意味着中断或不一致。它与 SQL 与 NoSQL 无关。 SQL 系统可以有用户可见的复制、分片等,甚至在非序列化事务模式下运行 SQL 也会反映 CAP 后果。 PS 阅读大量的演示文稿。
  • PS 如果用户只使用本地节点,那么您不需要应用 CAP。但是,如果用户可以访问非本地分片,则 CAP 应用;非本地访问可能会失败。不需要为此进行复制。
  • @philipxy 分片保留独立/分区数据,不需要与另一个分片通信。因此即使节点之间的网络故障也不会产生影响。所以这里没有 CAP。
  • 我再说一遍,所有这些都很重要,并且定义清楚地表明了这一点,即可访问性/局部性,并且仅存在或不存在复制和/或分片并不能告诉您任何事情。例如,如果每个用户都有一个本地节点,该节点被划分为每个用户的一些唯一数据,那么没有复制但可能会出现故障。您似乎还错误地假设复制和/或分片只能在 SQL 和 NoSQL 中以某些有限的方式使用。
  • @philipxy 我不确定你在这里的意思,但忽略 noSQL 部分,我认为艾米莉是对的。 CAP 定理并没有特别说明分布式系统。它所说的是,当需要分区容错时,通常在可用性和一致性之间进行权衡。在实践中,分区容错是通过复制来实现的。拥有复制意味着网络中的不同节点需要同步以实现一致性,这需要时间,因此需要权衡可用性/一致性。

标签: sql nosql rdbms partitioning cap-theorem


【解决方案1】:

如果每个分片只有一个主节点(没有任何类型的复制),CAP 定理确实不适用。但是大多数实现都有一个主分片加上一个、两个或多个从属分片用于只读查询。并且对于集群中的每个分片重复此配置。然后,存在复制,因此 CAP 定理适用(并且PACELC 定理适用)。复制可以用于扩展分片,但主要是为了可用性。如果主分片出现故障,另一个分片将成为主分片。

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 2020-10-02
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    相关资源
    最近更新 更多