当说一个系统是CP (一致和分区的)时,这是否意味着我们不能在复制的数据节点之间使用异步同步,并且必须同步(甚至是通过事务方式)复制每个写?
据我所知,一致性意味着每次写入后(从任何节点读取)都会得到最新的更新。如果我们写入特定节点并异步同步其他节点,则在同步结束之前进行的读取可能得不到最新的写入。
发布于 2019-04-14 17:55:55
当说一个系统是CP (一致和分区)时,这是否意味着我们不能在复制的数据节点之间使用异步同步?
是的,不可能在异步复制的基础上构建CP系统。
我也不同意在CP中P代表“分区”,因为分区涉及数据库可伸缩性问题。我认为CP应该被视为“在网络分区的情况下是一致的”。
而且每一次写入都必须同步复制?
是的,但是有一个优化:不是将数据同步复制到所有节点,而是将数据同步复制到大多数节点,异步复制到其余节点。
(甚至是交易)
我认为这取决于数据库的类型(它是否支持事务)以及如何定义事务术语本身(例如,ACID兼容与否)。在我看来,它实际上与CAP定理的主要观点无关。
一致性意味着每次写入后(从任何节点读取)都会得到最新的更新。
是的,总的来说,但是有更多的一致性模型,请参考https://jepsen.io/consistency
如果我们写入特定节点并异步同步其他节点,则在同步结束之前进行的读取可能得不到最新的写入。
是真的。
https://stackoverflow.com/questions/55672926
复制相似问题