当说系统是 CP(一致和分区)时,这是否意味着我们不能在复制的数据节点之间使用异步同步,并且每次写入都必须同步(甚至事务)复制?
据我了解,一致性意味着对于每次写入,后续读取(来自任何节点)都将获得最新更新。如果我们写入特定节点并异步同步其他节点,则在同步结束之前将发生的读取可能无法获得最新的写入。
当说系统是 CP(一致和分区)时,这是否意味着我们不能在复制的数据节点之间使用异步同步,并且每次写入都必须同步(甚至事务)复制?
据我了解,一致性意味着对于每次写入,后续读取(来自任何节点)都将获得最新更新。如果我们写入特定节点并异步同步其他节点,则在同步结束之前将发生的读取可能无法获得最新的写入。
当说系统是 CP(一致和分区)时,这是否意味着我们不能在复制的数据节点之间使用异步同步
CP
是的,在异步复制的基础上构建系统是不可能的。
我也不同意 inCP
P
代表“分区”,因为分区与数据库可伸缩性问题有关。我认为这CP
应该被视为“在网络分区的情况下保持一致”。
并且每次写入都必须同步复制?
没错,但有一个优化:同步复制数据不是到所有节点,而是到大多数节点,并异步复制到其余节点。
(甚至是事务性的)
我认为这取决于数据库的类型(它是否支持事务)以及如何定义事务术语本身(例如,ACID 兼容与否)。从我的角度来看,它实际上与 CAP 定理的要点无关。
一致性意味着对于每次写入,后续读取(来自任何节点)都将获得最新更新。
一般情况下是的,但是还有更多的一致性模型,请参考https://jepsen.io/consistency
如果我们写入特定节点并异步同步其他节点,则在同步结束之前将发生的读取可能无法获得最新的写入。
真的。