我想使用Couchbase,但我想在一些类似于RethinkDB的方式实现更改跟踪。
似乎有很多方法可以从Couchbase服务器向我推送更改。
哪一个是正确的选择,还是有更好的方法?
更新
谢谢@Kirk!
谢谢!看起来DCP今天没有100%生产就绪的API(2015年5月19日)。您的博客参考帮我决定今天使用XDCR,并在官方API准备就绪后立即迁移到DCP。
对于XDCR,此GitHub Repo有帮助。
答案 0 :(得分:3)
现在唯一完全支持的方式是XDCR,正如Kirk已经提到的那样。如果您想节省实现它的时间,您可能希望将代码基于此:https://github.com/couchbaselabs/couchbase-capi-server - 它实现XDCR协议的服务器端(v1)。例如,ElasticSearch插件基于此CAPI服务器。如果您的应用程序是可以等待传入连接的服务器/服务,则XDCR是一个不错的选择,因此Couchbase(或管理员)控制Couchbase如何以及何时将数据复制到您的服务。
根据您想要完成的任务,DCP最终可能会成为更好的选择,因为它在概念上与XDCR不同。任何基于DCP的解决方案都是基于拉取的(从您的代码方面),因此您可以对如何以及何时连接到Couchbase存储桶进行更细粒度,程序化的控制,以及如何在必要时将连接分布到不同的进程。有关使用DCP的更深入的示例,请在此处查看Couchbase-Kafka连接器:https://github.com/couchbase/couchbase-kafka-connector
答案 1 :(得分:1)
DCP是正确的选择,如果它适用于您的用例,您可以编写一个应用程序来使用流,因为还没有官方API。以下是由Couchbase解决方案工程师之一在java中执行此操作的博客文章, http://nosqlgeek.blogspot.de/2015/05/dcp-magic.html
此时TAP基本上已被弃用。它仍然在产品中,但DCP在大多数时候都远远优于它。
可以使用XDCR,因为它使用DCP,但您必须为XDCR编写插件。所以你最好直接写一个来消耗DCP流。