在我看来,CAP定理是合乎逻辑的。我明白那个:

如果我在分布式系统上具有一致性,则必须等待所有
交易。 ACID的成本是在所有设备上复制数据的时间
网络。

但是Marklogic如何兼具两者。 ACID和分布式系统是否没有滞后?
那么是否可以在同一数据库上具有BASE和ACID属性?
CAP定理是错误的吗?

最佳答案

CAP定理中的可用性与分区两侧的主机有关,而与整个系统无关。

如果网络分区两侧的所有主机都可以继续接受读取和更新事务,则在CAP定理中,您将“可用”。我们的大多数客户并不关心面对网络分区是否所有主机仍然可用。他们关心数据库整体在网络分区期间保持可用。因此,如果集群已复制或共享数据,以便分区的两面都有足够的数据来继续提供查询服务,并且足够聪明地知道分区的哪一面应保持可用状态,哪一面应优雅地退出,则即使所有主机都没有,面对网络分区,数据库仍然可以保持可用。这就是MarkLogic在集群中所做的事情。

在集群之间,MarkLogic对于要达到的绝对一致性有多种选择。我们使用异步复制在群集之间移动数据,因此,如果群集之间存在网络分区,则这些群集之间的数据可能不一致。您可以控制该滞后限制的时间长度,以便对其进行调整,如果您需要集群之间的绝对一致性,我们也可以通过多种方法来实现。

底线是:

  • 客户最关心的是他们的数据库或数据服务仍然可用,而不是任何特定主机仍然可用,因此我们专注于系统的可用性,并且可以在不违反CAP定理的前提下提供该服务。
  • 可以调整多集群MarkLogic部署,以面对网络分区时在一致性和可用性之间取得适当的平衡。

  • 希望能有所帮助。

    关于marklogic - Marklogic如何具有一致性和可用性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31876966/

    10-16 07:40