CouchDB - 同步是否将数据库复制给所有用户?
CouchDB - Does synchronization copy a database to all users?
我在 Internet 上寻找有关 Pouchdb 的各种信息,我喜欢 同步 远程数据库与本地浏览器数据库的想法。我想到的第一个问题是它是否在每台设备上存储整个数据库并在每台设备上创建副本?想象一下,我正在创建一个聊天应用程序,所有通信都将存储在使用该应用程序的所有设备上。然后一个用户可以查看其他人的对话。我查看了 Pouchdb 文档,发现 过滤复制 。谁能解释一下这种同步是如何工作的,以及是否可以只将数据同步给特定用户?
示例:
这是一个远程数据库,例如在云中,保存所有信息的位置。
远程数据库:
/用户/秘密信息/
/乔/"secret information"/
/丹/"secret info again"/
这里我只想同步特定用户的数据。不同步整个数据库,只同步用户特定数据。
乔的设备
/用户/秘密信息/
/乔/"secret information"/
丹的装置
/用户/秘密信息/
/丹/"secret info again"/
我相信我已经解释了我的问题。感谢您的回答。
PouchDB 可用于许多不同的配置,但常见的模式是让 Web 浏览器中的 PouchDB 数据库同步到远程 Apache CouchDB 或 Cloudant 数据库。
因为 Apache CouchDB 的权限模型是 "per database"(即您对整个数据库是否具有 read/write/admin 访问权限,目前没有 "per document" 访问控制)移动 PouchDB数据库同步到云 "per user" 数据库。也就是说,如果您的应用程序有 10,000 个用户,则每个用户的个人浏览器上将有 10,000 个 PouchDB 数据库,服务器端有 10,000 个 CouchDB 数据库。
这种 "one database per user" 方法被 Hood.ie 等框架采用 - 它巧妙地将每个用户的数据彼此分开。缺点是很难将整个数据集作为一个整体进行查询 - 从 "per user" 数据库到中央数据库的连续复制不能很好地扩展。
此 space 中的其他解决方案是
- Cloudant Envoy 将所有用户的数据存储在单个服务器端数据库中,但通过
_id
字段 的操作将每个用户分开
- Spiegel 使用 "one database per user" 和复制代理管理 "per user" 数据移动到另一个数据库,用于报告目的。
我在 Internet 上寻找有关 Pouchdb 的各种信息,我喜欢 同步 远程数据库与本地浏览器数据库的想法。我想到的第一个问题是它是否在每台设备上存储整个数据库并在每台设备上创建副本?想象一下,我正在创建一个聊天应用程序,所有通信都将存储在使用该应用程序的所有设备上。然后一个用户可以查看其他人的对话。我查看了 Pouchdb 文档,发现 过滤复制 。谁能解释一下这种同步是如何工作的,以及是否可以只将数据同步给特定用户?
示例:
这是一个远程数据库,例如在云中,保存所有信息的位置。
远程数据库:
/用户/秘密信息/
/乔/"secret information"/
/丹/"secret info again"/
这里我只想同步特定用户的数据。不同步整个数据库,只同步用户特定数据。
乔的设备
/用户/秘密信息/
/乔/"secret information"/
丹的装置
/用户/秘密信息/
/丹/"secret info again"/
我相信我已经解释了我的问题。感谢您的回答。
PouchDB 可用于许多不同的配置,但常见的模式是让 Web 浏览器中的 PouchDB 数据库同步到远程 Apache CouchDB 或 Cloudant 数据库。
因为 Apache CouchDB 的权限模型是 "per database"(即您对整个数据库是否具有 read/write/admin 访问权限,目前没有 "per document" 访问控制)移动 PouchDB数据库同步到云 "per user" 数据库。也就是说,如果您的应用程序有 10,000 个用户,则每个用户的个人浏览器上将有 10,000 个 PouchDB 数据库,服务器端有 10,000 个 CouchDB 数据库。
这种 "one database per user" 方法被 Hood.ie 等框架采用 - 它巧妙地将每个用户的数据彼此分开。缺点是很难将整个数据集作为一个整体进行查询 - 从 "per user" 数据库到中央数据库的连续复制不能很好地扩展。
此 space 中的其他解决方案是
- Cloudant Envoy 将所有用户的数据存储在单个服务器端数据库中,但通过
_id
字段 的操作将每个用户分开
- Spiegel 使用 "one database per user" 和复制代理管理 "per user" 数据移动到另一个数据库,用于报告目的。