为什么说RDBMS不是分区容忍的?

时间:2018-06-01 15:10:24

标签: oracle rdbms partitioning

分区容差 - 即使个别服务器出现故障或无法联系,系统仍会继续作为一个整体运行。

更好地定义link

  

即使节点之间的连接断开,另外两个(A& C)   承诺,保留。

现在考虑我们在RDBMS(oracle)和mongodb中都有主从模型。我无法理解为什么说RDBMS不是分区容忍但是mongo是分区容错的。

考虑我有1个主人和2个奴隶。如果master在mongo中关闭,则重新选择以选择一个slave作为Master,以便系统继续运行。

在像oracle / Mysql这样的RDBMS系统中不会发生相同的事情吗?

1 个答案:

答案 0 :(得分:1)

请参阅this article关于CAP定理和MySQL。

Mysql集群中的复制是同步的,这意味着在复制发生之前不会提交事务。在这种情况下,您的数据应该是一致的,但在某些情况下,在分区发生后,某些客户端可能无法使用群集。它取决于节点数和仲裁过程。因此可以使MySQL集群具有分区容错性。

一个群集中的分区处理:

  

如果没有足够的活动节点来存储所有存储的数据 - 关机   提供用户数据的子集(并存在数据一致性风险)不是一种选择   如果没有足够的故障或无法访问的节点来提供存储的所有数据 - 继续并提供服务   没有其他节点子集可以与我们隔离并为客户端提供服务   如果存在足够的故障或无法访问的节点来存储所有存储的数据 - 仲裁。   可能有另一个节点子集重新组合成一个可行的集群。

复制btw 2个集群是异步的。

编辑:MySql也可以配置为集群,在这种情况下它是CP,否则它是CA,并且可以通过拥有2个主机来破坏分区容差。