【问题标题】:Couchbase Sync Gateway: Multiple buckets per databaseCouchbase 同步网关:每个数据库有多个存储桶
【发布时间】:2016-01-10 12:12:00
【问题描述】:
我一直盯着用 CouchDB 构建服务。该应用程序旨在让用户拥有无限的存储桶,原因有很多,并且运行良好。
现在,由于某些企业功能,我已切换到 Couchbase。我正在使用 PouchDB,这就是我需要 Sync Gateway 的原因。可悲的是,我只能映射一个存储桶/数据库。
这对我来说是一个完美的解决方案:/db/bucket/etc
任何想法如何实现这一目标?
【问题讨论】:
标签:
couchdb
couchbase
pouchdb
couchbase-sync-gateway
【解决方案1】:
Couchbase 服务器存储桶可以保存任意数据。对于 Sync Gateway,Couchbase Server 存储桶只是存储引擎目的地,与用户和数据访问无关。在 Sync Gateway 配置文件中,您可以列出多个持久化到不同存储桶的数据库:
{
"databases":{
"db1": {
"server": "http://localhost:8091",
"bucket": "db1bucket"
},
"db2": {
"server": "http://101.88.47.22:8091",
"bucket": "db2bucket"
}
}
}
现在,假设您在配置文件中只声明了一个数据库,并希望用户可以访问某些文档。您可以使用authentication methods 之一,然后在此基础上编写Sync Function,它将路由channels 中的文档并授予用户访问这些频道的权限。通道是动态创建的,可以创建的数量没有限制。如果您不希望使用用户身份验证来访问频道中的文档,您可以在客户端指定channel names to the replicator(更简单)。
推荐的方法是每个项目或应用程序使用一个同步网关数据库,而不是每个用户。因此,您可能必须将文档从不同的 CouchDB 数据库迁移到一个 Sync Gateway 数据库中。