CouchDB - 同步是否将数据库复制到所有用户?

Rao*_*old 4 database couchdb data-synchronization indexeddb pouchdb

我在互联网上寻找有关Pouchdb的各种信息,我喜欢将远程数据库与本地浏览器数据库同步的想法.我想到的第一个问题是它是否在每个设备上存储整个数据库并在每个设备上创建副本?想象一下,我正在创建一个聊天应用程序,所有通信都将使用此应用程序存储在所有设备上.然后,一个用户可以查看其他人的对话.我查看了Pouchdb文档,发现了过滤复制.任何人都可以解释这种同步是如何工作的,以及是否可以仅将数据同步到特定用户?

例:

这是一个远程数据库,例如在云中,保存所有信息.

远程数据库:

/ user/secret informations /

/ Joe /"秘密信息"/
/丹/"秘密信息"/

在这里,我想仅为特定用户同步数据.不要同步整个数据库,只能同步用户特定的数据.

乔的装置

/ user/secret informations /

/ Joe /"秘密信息"/

丹的装置

/ user/secret informations /

/丹/"秘密信息"/

我相信我解释了我的问题.谢谢你的回答.

Gly*_*ird 7

PouchDB可用于许多不同的配置,但常见的模式是在Web浏览器中同步到远程Apache CouchDB或Cloudant数据库的PouchDB数据库.

因为Apache CouchDB的权限模型是"每个数据库"(即您对整个数据库有读/写/管理访问权限,目前没有"每个文档"访问控制)移动PouchDB数据库同步到云"用户"数据库.也就是说,如果您的应用程序拥有10,000个用户,则每个用户的各个浏览器上将拥有10,000个PouchDB数据库,服务器端将拥有10,000个CouchDB数据库.

这种"每用户一个数据库"的方法被Hood.ie等框架采用- 它巧妙地将每个用户的数据彼此分开.缺点是整个数据集的查询非常困难 - 从"每用户"数据库到中央数据库的连续复制不能很好地扩展.

这个领域的其他解决方案是

  • Cloudant Envoy将所有用户的数据存储在单个服务器端数据库中,但通过操作该_id字段来分隔每个用户
  • Spiegel使用"每个用户一个数据库"和一个管理"每用户"数据移动到另一个数据库的复制代理,用于报告目的.