CouchDB文档是否有DAG?

CouchDB文档是否有DAG?,couchdb,directed-acyclic-graphs,Couchdb,Directed Acyclic Graphs,我在看CouchDB。文档有版本,您可以有冲突的版本。它是否像dvcs一样将版本序列存储为有向无环图(DAG)?如果没有,它是如何实现的?您不能依赖CouchDB中文档的版本,它们的保存只是为了在复制过程中解决冲突。文档的早期版本将在更新过程中删除 CouchDB wiki对此进行了分析。是的,修订顺序类似于有向无环图。我在中讨论了这一点(在概念层面) 我想说CouchDB在教学上就像Git一样。然而,两者之间存在显著差异。举几个例子: CouchDB不存储旧数据,只存储旧版本ID Couch

我在看CouchDB。文档有版本,您可以有冲突的版本。它是否像dvcs一样将版本序列存储为有向无环图(DAG)?如果没有,它是如何实现的?

您不能依赖CouchDB中文档的版本,它们的保存只是为了在复制过程中解决冲突。文档的早期版本将在更新过程中删除


CouchDB wiki对此进行了分析。

是的,修订顺序类似于有向无环图。我在中讨论了这一点(在概念层面)

我想说CouchDB在教学上就像Git一样。然而,两者之间存在显著差异。举几个例子:

  • CouchDB不存储旧数据,只存储旧版本ID
  • CouchDB最终将截断很长的修订历史记录以保持性能
因此,我不确定在实践中是否可以实现三方合并,因为最多只能处理两个数据修订版:源和目标。我们知道共同祖先是存在的,但它的价值却不存在

虽然这在一般情况下可能是个问题,但有几个“骗局”使得它在实践中并不那么糟糕

  • validate\u doc\u update()
    函数可防止任意修改。它甚至可以要求将变更元数据存储为文档的一部分。(但这是一个应用程序级解决方案。)
  • 大类应用程序的大类数据可以双向合并:例如,选择最新的时间戳;将不同的电话号码合并成一组电话号码;等等

显然,这些是高度特定于应用程序的,不是通用的解决方案。

Hmm-我之所以有兴趣获得DAG,是因为我希望找到冲突修正的lca,以便可以进行三方合并。但是如果我不能依赖生命周期评估,那么我就不能使用它。