CAP定理-异步写入和一致性

时间:2019-04-14 07:22:43

标签: database distributed-system data-synchronization cap-theorem

当说一个系统是CP(一致且分区的)时,这是否意味着我们不能在复制的数据节点之间使用异步同步,并且每次写入都必须同步(甚至是事务复制)?

据我了解,一致性意味着对于每次写入(从任何节点进行的后续读取)都将获得最新更新。 如果我们写入特定节点并异步同步其他节点,则在同步结束之前发生的读取可能不会获得最新的写入。

1 个答案:

答案 0 :(得分:1)

  

当说系统是CP(一致且分区的)时,这是否意味着我们不能在复制的数据节点之间使用异步同步

是的,不可能基于异步复制来构建CP系统。

我也不同意CP中的P代表“分区”,因为分区涉及数据库可伸缩性问题。我认为CP应该被视为“在网络分区的情况下保持一致”。

  

并且每次写入都必须同步复制吗?

正确,但是有一个优化:并非将数据同步复制到所有节点,而是复制到大多数节点,并异步复制到其余节点。

  

(甚至是交易)

我认为这取决于数据库的类型(是否支持事务)以及如何定义事务术语本身(例如,是否兼容ACID)。从我的角度来看,它实际上与CAP定理的要点无关。

  

一致性意味着每次写入后,从任何节点进行的读取都将获得最新的更新。

是的,但是一致性模型更多,请参阅https://jepsen.io/consistency

  

如果我们写入特定节点并异步同步其他节点,则在同步结束之前发生的读取可能不会获得最新的写入。

是。