为什么RDBMS被认为是CAP定理的可用(CA)

Pie*_*per 13 rdbms high-availability nosql cap-theorem

如果我正确理解CAP定理,则可用性意味着即使节点出现故障,群集也会继续运行.

我见过很多人(http://blog.nahurst.com/tag/guide)将RDBMS列为CA,但我不明白RBDMS是如何可用的,就好像一个节点出现故障,集群必须关闭保持一致性.

我唯一可能的答案是大多数RDBMS都是单个节点,因此没有"非故障"节点.但是,这似乎是一种技术性,而不是真正的"可用性",绝对不是高可用性.

谢谢.

小智 13

首先,让我澄清并说明 RDBMS 中的一致性与分布式系统中的一致性不同。RDBMS(单系统)将一致性应用于事务一致性,而在分布式系统中,一致性意味着从系统中任何地方(从任何节点读取)的视图都是一致的。所以 RDMBS 单节点不能用 CAP 定理来讨论。这就像将苹果与橙子进行比较。

可以将具有主从的 RDBMS 与分布式系统进行比较。这里 RDBMS 可以配置为 CA/CP 或 AP。例如,MySQL 提供了一种配置系统的方法,如果出现仲裁丢失(没有足够的辅助可用于提交日志复制),则集群不可用(CP 系统)。MySQL 还提供了一个配置,只要 master 可用(CA 系统),集群就可以运行,但可能会丢失数据。SQL Server AlwaysOn 是一个 AP 系统,因为提交日志复制是异步的(即使在同步副本上)。

所以 RDBMS 可以是分布式世界中的 CA、CP 或 AP 中的任何一个。


fai*_*_kk -1

在CAP定理中,P代表分区容错性,它是系统处理分区的能力(分区是孤立的集群 - 由于网络故障或任何其他原因..)。

在分布式网络中处理分区时,系统必须选择一致性或可用性。

在 RDBMS 的情况下,没有分区的机会(假设不是分布式的,这是正常情况),所以这些将始终是 CA。