我在看CouchDB。文档有版本,您可以有冲突的版本。它是否将版本序列存储为有向非循环图(DAG),就像dvcs一样?如果没有,它是如何实现的?
答案 0 :(得分:3)
是的,修订序列 类似于有向非循环图。我在CouchDB replication is like Git中讨论了这个问题(概念层面)。
我想说CouchDB就像Git那样用于教学目的。但是存在显着差异。仅举几例:
因此,我不确定您是否可以在实践中实现3向合并,因为最多只能对数据进行两次修订:源和目标。众所周知,共同的祖先存在,但它的价值不会存在。
虽然这可能是一般的问题,但有几个“作弊”使其在实践中不那么糟糕。
validate_doc_update()
功能可防止任意修改。它甚至可以要求将更改元数据存储为文档的一部分。 (但这是一个应用程序级解决方案。)显然,这些都是高度针对特定应用的,并非一般解决方案。
答案 1 :(得分:0)
您不能依赖CouchDB中的文档版本,只能在复制期间保留冲突解决方案。在compaction期间删除以前版本的文档。
CouchDB wiki上有more details。