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

CAP Theorem - async writes & consistency

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

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

When saying a system is CP (consistent & partitioned), does that mean that we cannot use asynchronous synchronization between replicated data nodes

是的,在异步复制的基础上构建CP系统是不可能的。

我也不能同意在CPP代表"partitioned",因为分区涉及到数据库可伸缩性问题。我认为 CP 应该被视为 "consistent in case of network partition"。

and that every write must be copied synchronously?

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

(and even transactionally)

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

consistency means that for every write, following reads (from any node) will get the latest update.

总体上可以,但是一致性模型比较多,请参考https://jepsen.io/consistency

In case we write to a specific node and synchronize the other nodes asynchronously, the reads that will occur before synchronization ends may not get the latest write.

正确。