2012-04-13 66 views
2

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

什么是正确的方法?

+1

您应该管理冲突:http://wiki.apache.org/couchdb/Replication_and_conflicts – 2012-04-14 07:52:40

+0

标签是在用户文档还是他们自己的文档中? – 2012-04-19 19:51:12

+0

标签是FEED文档中的字段,它只是{_id:'xxx',名称:'yyy',标签:[]) – Archer 2012-04-20 07:22:50

回答

1

你不会说你如何在最终结果中放置标签“3”,所以很难给出完整的答案。

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

  1. GET文档ID冲突=真
  2. 对于_conflicts阵列中的每个成员:?? GET文档ID转= XXX 如果发生在这个阶段的任何错误,从步骤1重新开始 (有可能是其中有人已经解决了这个 冲突,并删除了REV比赛)
  3. 执行应用程序特定合并
  4. 写_bulk_docs更新到第一个rev并删除 另一个rev。

报告还指出:“这既可以在每次读来实现(在这种情况下,您可以取代所有调用与调用它可以完成上述库您的应用程序获取),或作为您的清扫代码的一部分“。它继续在Ruby中给出一个完整的例子。

这是否回答你所有的问题?

3

这只是用复制+冲突解决。拥有一个检查冲突的主外部流程,合并标签&然后写入新文档。

相关问题