我有系统弓:主数据库名为master,用户数据库名为user1和user2。我将一个文档从主数据库复制到user1和user2数据库。然后用户分别在他们的数据库中修改该文档(例如,用户1添加tags:[1, 2],用户2添加tags:[3, 4]字段)。现在,我'我想从用户数据库复制回主数据库并合并新添加tags字段,我可能需要在复制上运行一些逻辑,使结果标记为tags:[1,2,4]。什么是正确的方法?
master
user1
user2
tags:[1, 2]
tags:[3, 4]
tags
tags:[1,2,4]
ddrv8njm1#
这是简单地解决与复制+冲突。有一个主外部进程,检查冲突,合并标签,然后写新的文件。
hl0ma9xz2#
你没有说你可能想在你的最终结果中去掉标签“3”,所以很难给予一个完整的答案。CouchDB文档中有很多关于处理这种情况的方法的信息。设计如何存储数据以及如何use the stored data to resolve conflicts,其中包括以下“使用冲突解决方法获取文档的建议代码”
2条答案
按热度按时间ddrv8njm1#
这是简单地解决与复制+冲突。有一个主外部进程,检查冲突,合并标签,然后写新的文件。
hl0ma9xz2#
你没有说你可能想在你的最终结果中去掉标签“3”,所以很难给予一个完整的答案。
CouchDB文档中有很多关于处理这种情况的方法的信息。设计如何存储数据以及如何use the stored data to resolve conflicts,其中包括以下“使用冲突解决方法获取文档的建议代码”
1.对于_conflicts数组中的每个成员:GET docid?rev=xxx如果在此阶段出现任何错误,请从步骤1重新开始。(可能存在竞争,其他人已经解决了此冲突并删除了该rev)
1.执行特定于应用程序的合并
它还指出“这可以在每次读取时完成(在这种情况下,您可以将应用程序中对GET的所有调用替换为对执行上述操作的库的调用),或者作为清扫器代码的一部分。”
这回答了你所有的问题吗?