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

时间:2015-08-07 11:45:34

标签: marklogic cap-theorem database nosql

CAP定理对我而言似乎合情合理。我理解:

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

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

2 个答案:

答案 0 :(得分:14)

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

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

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

底线是:

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

希望有所帮助。

答案 1 :(得分:3)

CAP定理没有错,它只是过时了。以下是作者的更新:CAP Twelve Years Later: How the "Rules" Have Changed

MarkLogic通过MVCC支持ACID属性。如果您愿意,可以将其配置为使用BASE属性。据我所知,关键是要根据您的生产要求进行设计和优化。 MarkLogic具有许多可用的复制功能,当我们的客户解决部署全球分布式集群的实际问题时,我们不断添加到该产品组合中。

您是否阅读过Inside MarkLogic Server?白皮书很好地解释了MarkLogic如何解决其中的许多挑战。