Couchbase Lite 和 CouchDb
Couchbase Lite and CouchDb
我构建了一个基于 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 数据库时不需要,这 post似乎支持这一点。 https://github.com/couchbase/sync_gateway/issues/312
有人可以确认 couchbase lite 是否可以直接使用 CouchDb 2.0 数据库进行复制,如果可以,正确的设置方法是什么?
此外,该应用程序将被许多网站使用,一个网站可以由一个或多个用户组成。我考虑切换到 CouchDb 的原因是每个站点我可以有一个数据库,这在 Couchbase 中似乎不容易做到。但是,我现在在 Couchbase 中发现了 Channels,它允许我使用一个数据库,但可以访问受站点限制的文档(即一个站点可以有很多用户,所有用户都应该可以访问该站点的所有文档)。
在 CouchDb 中使用单独的数据库或在 Couchbase 中使用通道的优缺点是什么?
谢谢。
几点回应:
主要是我认为你可以在 Couchbase 中轻松地做你想做的事。 Couchbase Server 中的桶在某种程度上相当于单独的数据库。所以你可以那样分割你的网站。如您所见,Sync Gateway 中的通道可以让您更好地控制数据分离和访问控制。
Couchbase Lite 应该能够与 CouchDB 同步,但这没有经过严格测试。很难从您的代码片段中判断出了什么问题。您可以检查此 post 以获得一些想法:CouchDB: how to use _revs_diff to get document revision ID
Sync Gateway 公开了一种 CouchDB 复制端点的超集,因此您可以更灵活地将 Couchbase Lite 与 Sync Gateway 结合使用。
正如@Hod 所说,不同的存储桶相当于 Couch DB 中的不同数据库,因此您可以这样做。
其次,如果可以的话,绝对鼓励使用 sync_gateway 的渠道 属性,因为创建单个存储桶优于多个存储桶,我已经将 sync_gateway 与 couch Lite 和Couch 服务器,它工作得很好而且很准确所以我认为你应该使用 sync_gateway 和通道而不是创建多个桶
我构建了一个基于 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 数据库时不需要,这 post似乎支持这一点。 https://github.com/couchbase/sync_gateway/issues/312
有人可以确认 couchbase lite 是否可以直接使用 CouchDb 2.0 数据库进行复制,如果可以,正确的设置方法是什么?
此外,该应用程序将被许多网站使用,一个网站可以由一个或多个用户组成。我考虑切换到 CouchDb 的原因是每个站点我可以有一个数据库,这在 Couchbase 中似乎不容易做到。但是,我现在在 Couchbase 中发现了 Channels,它允许我使用一个数据库,但可以访问受站点限制的文档(即一个站点可以有很多用户,所有用户都应该可以访问该站点的所有文档)。
在 CouchDb 中使用单独的数据库或在 Couchbase 中使用通道的优缺点是什么?
谢谢。
几点回应:
主要是我认为你可以在 Couchbase 中轻松地做你想做的事。 Couchbase Server 中的桶在某种程度上相当于单独的数据库。所以你可以那样分割你的网站。如您所见,Sync Gateway 中的通道可以让您更好地控制数据分离和访问控制。
Couchbase Lite 应该能够与 CouchDB 同步,但这没有经过严格测试。很难从您的代码片段中判断出了什么问题。您可以检查此 post 以获得一些想法:CouchDB: how to use _revs_diff to get document revision ID
Sync Gateway 公开了一种 CouchDB 复制端点的超集,因此您可以更灵活地将 Couchbase Lite 与 Sync Gateway 结合使用。
正如@Hod 所说,不同的存储桶相当于 Couch DB 中的不同数据库,因此您可以这样做。
其次,如果可以的话,绝对鼓励使用 sync_gateway 的渠道 属性,因为创建单个存储桶优于多个存储桶,我已经将 sync_gateway 与 couch Lite 和Couch 服务器,它工作得很好而且很准确所以我认为你应该使用 sync_gateway 和通道而不是创建多个桶