Marklogic如何具有一致性和可用性?

jer*_*eca 5 database marklogic nosql cap-theorem

CAP定理对我来说似乎合乎逻辑.我明白那个:

如果我在分布式系统上具有一致性,我必须等待所有事务.ACID的成本是在所有网络上复制数据的时间.

但Marklogic如何兼得.ACID和分布式系统没有滞后?
那么可以在同一个数据库中使用BASE和ACID属性吗?
CAP定理是错误的吗?

Dav*_*bet 14

CAP定理中的可用性是关于分区两侧的主机,而不是整个系统的主机.

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

在集群之间,MarkLogic有很多选项可以满足您想要的绝对一致性.我们使用异步复制在集群之间移动数据,因此如果集群之间存在网络分区,则这些集群之间的数据可能不一致.您可以控制滞后限制的长度,以便您可以对此进行调整,如果您需要集群之间的绝对一致性,我们也可以实现这一点.

底线是:

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

希望有所帮助.

  • 别客气.还有一件事:如果您确实在可用区域或数据中心之间拉伸了一个集群,请记住您需要其中三个,而不是两个.这是因为MarkLogic使用法定投票系统来确定分区的位置以及哪一方应保持活动状态,如果您只有两个数据中心,那么任何一个都不能达到法定人数投票的多数. (2认同)