CouchDB从每个用户数据库复制到主数据库

时间:2012-04-13 05:43:42

标签: couchdb

我有那个系统arch:名为master的主数据库和名为user1user2的用户数据库。我正在将主数据库中的文档复制到user1user2 dbs。然后,用户在其数据库中单独修改该文档(例如,user1添加tags:[1, 2],user2添加tags:[3, 4]字段。现在,我想从用户数据库复制回master并合并新添加的tags字段,使其结果为tags:[1,2,3,4]。此外,我可能需要在复制上运行一些逻辑,使得结果标记为tags:[1,2,4]

什么是正确的方法?

2 个答案:

答案 0 :(得分:3)

这可以通过复制+冲突来解决。有一个主外部流程来检查冲突,合并标签和&然后写下新文件。

答案 1 :(得分:1)

您没有说明如何在最终结果中删除标记“3”,因此很难给出完整的答案。

在CouchDB文档中有很多关于处理这种场景的方法的很好的信息。 Designing how you store the data以及use the stored data to resolve conflicts如何包含以下“建议的代码以获取具有冲突解决方案的文档”

  1. GET docid?conflicts = true
  2. 对于_conflicts数组中的每个成员:    GET docid?rev = xxx  如果在此阶段发生任何错误,请从步骤1重新启动。  (可能有一场比赛,其他人已经解决了这个问题  冲突并删除该转)
  3. 执行特定于应用程序的合并
  4. 将_bulk_docs写入第一次修订和删除的更新  其他转。
  5. 它还注意到“这可以在每次阅读时完成(在这种情况下,您可以通过调用执行上述操作的库来替换应用程序中对GET的所有调用),或者作为清理程序代码的一部分。”它继续在Ruby中给出一个完整的例子。

    这会回答你的所有问题吗?

相关问题