Couchbase Lite和CouchDb

时间:2016-10-19 11:19:05

标签: android couchdb couchbase couchbase-lite

我已经构建了一个基于Couchbase Lite的Android应用程序,该应用程序通过Sync Gateway与Couchbase数据库通信。我现在试图让Couchbase Lite与CouchDB 2.0数据库一起复制,但是我收到以下错误:

W/RemoteRequest: com.couchbase.lite.replicator.RemoteRequest {POST,
http://192.168.1.5:5984/_revs_diff}: Got error status: 404 for
http://192.168.1.5:5984/_revs_diff. Reason: Object Not Found
W/Sync: PusherInternal{http://192.168.1.5:5984, push, 12ff9}: Progress:
set error =com.couchbase.lite.replicator.RemoteRequestResponseException:
Object Not Found

请注意,为此我不会通过Sync Gateway,而是将Couchbase Lite直接指向CouchDB Url。

我不知道我是否需要通过Sync Gateway,但是在阅读Couchbase lite上的Couchbase文档之后,我的印象是,当连接到CouchDb数据库时,我没有这个帖子,这篇文章似乎支持起来。 https://github.com/couchbase/sync_gateway/issues/312

有人可以确认couchbase lite是否可以直接使用CouchDb 2.0数据库进行复制,如果是这样,设置它的正确方法是什么?

此外,该应用程序将被许多网站使用,一个网站可以由一个或多个用户组成。我之所以考虑改用CouchDb,是因为每个站点都有一个数据库,这在Couchbase中似乎不易实现。但是,我现在已经发现Couchbase中的频道允许我使用一个数据库,但可以访问受站点限制的文档(即一个站点可能有很多用户,所有用户都应该可以访问该站点的所有文档)。

在CouchDb中使用单独的数据库或在Couchbase中使用通道的优缺点是什么?

感谢。

2 个答案:

答案 0 :(得分:1)

正如@Hod所说,不同的桶相当于Couch DB中的不同数据库,所以你可以去做。

其次,肯定鼓励使用sync_gateway的channels属性,因为因为创建单个存储桶比多个存储桶更受欢迎,而且我已经将sync_gateway与couch Lite和Couch服务器一起使用,它工作得非常好并且准确无误,所以我认为你应该使用sync_gateway和渠道而不是创建多个存储桶

答案 1 :(得分:0)

回应中的几点:

主要的是我认为你可以在Couchbase中轻松做到你想做的事。 Couchbase Server中的存储桶有点等同于单独的数据库。所以你可以这样分割你的网站。正如您所见,Sync Gateway中的通道为您提供了更多的分离数据和控制访问的控制。

Couchbase Lite应该能够与CouchDB同步,但这并未经过严格测试。很难从你的片段中看出出了什么问题。您可以查看此帖子以获取一些想法:CouchDB: how to use _revs_diff to get document revision ID

Sync Gateway公开了一种CouchDB复制端点的超集,因此您可以使用Couchbase Lite和Sync Gateway获得更大的灵活性。