微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

子文档突变操作不能与XDCR一起正常使用

如何解决子文档突变操作不能与XDCR一起正常使用

我们设置了2个沙发床群集,它们之间具有XDCR。我们正在使用sub-doc mutate用新字段更新文档(不会删除任何字段,也不会覆盖/更新任何字段)。 我们发现,如果要通过集群1和集群2同时更新同一文档,则会丢失某些更新。

例如:如果我们通过集群1在文档1中添加字段1,并且同时将集群2中的field-2从文档2添加至文档1,则只有一个更新有效,并且field-1或结果文档中将缺少field-2。

有什么办法可以解决此问题,从而不会造成数据丢失?我们最初的想法是,因为这是一个“子文档”操作,所以XDCR会考虑到这一点,并根据子文档mutate操作期间提供的各个路径相应地更新最终文档,从而合并两个文档版本。

解决方法

据我所知, XDCR目前对子文档突变的处理方式与文档突变没有任何区别

(当前)唯一可用的conflict resolution是序列号或时间戳。这就解释了为什么您的一个子文档变种“胜过”另一个变种。

除了避免它以外,我不知道有什么办法,除了避免它(即,将双活情况下的某些写入限制在一个或另一个集群中)。例如,将美国东部用户的购物车写在东方,复制到西方以供阅读,反之亦然。

XDCR自定义冲突解决方案支持将在将来的版本中提供。您可以在issue.couchbase.com上看到诸如MB-39731,MB-41107,MB-41106,etc之类的进度。但是我不知道该版本的确切日期,并且它最初可能是(也可能不是)开发人员预览功能。

可能值得研究的唯一另一件事是Couchbase Sync Gateway / Lite,它具有automatic和自定义冲突解决方案。听起来这并不适合您的用例,但是您可能需要仔细研究以防万一。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。