监视 Couchbase 文档更改的推荐方法是什么?

What is the recommended way to watch for changes in a Couchbase document?

我想使用 Couchbase,但我想在几个方面实现变更跟踪,类似于 RethinkDB 的做法。

似乎有很多方法可以将更改从 Couchbase 服务器推送给我。

哪个是正确的选择,或者有更好的方法吗?


更新


谢谢@Kirk!
谢谢!看起来 DCP 今天 (5/19/2015) 没有 100% 的生产就绪 API。你的博客参考帮助我决定今天使用 XDCR 并在官方 API 准备就绪后立即迁移到 DCP。

对于 XDCR,此 GitHub Repo 很有帮助。

DCP 是正确的选择,如果它的工作方式适合您的用例,并且您可以编写一个应用程序来使用流,因为还没有官方 API...。这是一位 Couchbase 解决方案工程师 http://nosqlgeek.blogspot.de/2015/05/dcp-magic.html

在 java 中关于执行此操作的博客 post

此时 TAP 基本上已被弃用。它仍然存在于产品中,但 DCP 在大多数方面都远远优于它。

可以使用XDCR,因为它使用DCP,但是你必须为XDCR写一个插件。所以你最好直接写一个来消费DCP流。

正如 Kirk 已经提到的,目前唯一完全支持的方式是 XDCR。如果您想节省实现它的时间,您可能希望将您的代码基于此:https://github.com/couchbaselabs/couchbase-capi-server - 它实现了 XDCR 协议 (v1) 的服务器端。例如,ElasticSearch 插件就是基于这个 CAPI 服务器。如果您的应用程序是可以等待传入连接的 server/service,XDCR 是一个不错的选择,因此 Couchbase(或管理员)控制 Couchbase 如何以及何时将数据复制到您的服务。

根据您想要实现的目标,DCP 最终可能会成为更好的选择,因为它在概念上不同于 XDCR。任何基于 DCP 的解决方案都将是基于拉取的(从您的代码端),因此您可以更细粒度地、以编程方式控制连接到 Couchbase 存储桶的方式和时间,以及如何在必要时跨不同进程分配连接.有关使用 DCP 的更深入示例,请查看此处的 Couchbase-Kafka 连接器:https://github.com/couchbase/couchbase-kafka-connector