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