比例定理关系数据库在CAP定理中将落在哪里?

时间:2019-05-27 20:46:24

标签: rdbms cap-theorem

如果您已扩展SQL Server,且其中一个DB用于写入,而多个DB用于读取。将数据从写入数据库复制到其他读取数据库是否会有延迟?在哪种情况下数据不是不一致的?

那么可缩放的关系数据库在CAP定理中将落在哪里?

2 个答案:

答案 0 :(得分:1)

关于CAP定理,我已经阅读了不同的一致性定义。

  1. 一些一致性定义表明,一旦某些数据保留在系统中,所有读取将读取最近写入的数据。在此定义中,如果复制是异步的,则复制的数据库(您称其为“已缩放”,但我不会使用该术语)可能会返回不一致的数据。

    为减轻这种风险,某些系统确保复制是同步的,或者尽可能实现同步。例如,Galera将事务写集同步发送到其副本。如果您尝试从副本中读取数据,并且它检测到有待处理但尚未应用的写集,则它可以阻止您的读取,直到它追上了待处理的写集(此行为是可配置的)。因此,您永远不会读取过时的数据。

    以这种方式在分布式系统上保持完全一致的读取的成本通常比用户想要的昂贵。这将成为更新率很高的系统中的性能瓶颈。因此,出于实际原因,大多数项目都认为“复制滞后”是必要的折衷办法。

  2. 一致性的其他定义更接近 atomicity ,即交易将不会以部分完成的状态持续存在。因此,无论您在应用事务之前还是之后都读取数据,在读取数据时都将满足所有约束。在此定义中,如果复制数据库实例使用主服务器上使用的相同事务语义应用更新,则很容易想象副本数据库实例保持一致。如果您从副本中读取数据,则可能会读取尚未应用最新更新的数据,但是就约束而言,它永远不会处于不一致的状态。

答案 1 :(得分:0)

没有什么叫做可缩放的RDBMS。我们确实有“带有共享存储的RDBMS群集”:这里可以继续添加节点以实现RDBMS的高可用性。

换句话说: 如果您通过提及“缩放的RDBMS”来表示“分布式RDBMS”,则该名称不存在。您只能在一个节点上拥有RDBMS。如果添加另一个节点,那么它将是“另一个” RDBMS,它将不会与第一个结点合并,从而为您提供单个视图(不同于典型的NoSQL数据库)。虽然,您可以愉快地继续在RDBMS后面添加存储节点。