使用couchdb的每用户数据库复制

使用couchdb的每用户数据库复制,couchdb,pouchdb,Couchdb,Pouchdb,我有一个应用程序,它将包含对用户敏感的信息。据我所知,我应该使用每个用户的数据库体系结构。我希望每个用户的db(可能是客户端)复制到位于公共服务器上的数据库,并允许用户从任何设备访问应用程序,以便用户登录到该设备,数据库将由公共服务器上的某个中间层发现,然后复制客户端,并在设备和公共服务器之间进行同步 这似乎是CouchDB的优势所在(基于我的谷歌搜索),但有没有任何示例应用程序可以实现我所描述的(或接近它的)?我使用的是couchdb 1.1.0。是的,couchdb听起来非常适合这种应用——

我有一个应用程序,它将包含对用户敏感的信息。据我所知,我应该使用每个用户的数据库体系结构。我希望每个用户的db(可能是客户端)复制到位于公共服务器上的数据库,并允许用户从任何设备访问应用程序,以便用户登录到该设备,数据库将由公共服务器上的某个中间层发现,然后复制客户端,并在设备和公共服务器之间进行同步


这似乎是CouchDB的优势所在(基于我的谷歌搜索),但有没有任何示例应用程序可以实现我所描述的(或接近它的)?我使用的是couchdb 1.1.0。

是的,couchdb听起来非常适合这种应用——它简单的协议使它非常适合web应用[即使离线,请参阅]和移动/桌面应用[同样,即使离线,请参阅]

不幸的是,我现在还不知道有什么好的公开代码级示例,但基本思想是结合使用过滤复制和文档验证:

其基本思想是,对于用户数据库的服务器端副本,您设置了验证功能,以便强制执行所需的文档架构和访问控制。最终用户获得此数据库的副本,可用于低延迟和脱机访问-理论上,他们可以破坏其副本,但在复制回数据库时验证功能将防止服务器端数据库损坏

您甚至可以设置一个不可公共访问的主数据库,然后使用将每个用户的数据同步到服务器端的每个用户数据库-这对于集中消息传递、聚合统计数据、只需备份一个数据库等非常有用

本文中还有一些更高级的示例,特别是最后的“DesktopCoach”和“基于需要了解的数据共享”用例部分


更新(2015/03/10):我不再建议使用上述CouchDB的过滤复制。存在几个性能和可伸缩性问题(如果不是可靠性问题的话)当您尝试从一个中央数据库复制多个筛选的feed时会出现这种情况。如果您需要文档级别的读取权限,您可以尝试Couchbase及其应用程序,或者构建自己的每用户更改视图(在自定义中间件的保护下)使用
\u local\u seq

谢谢你的指导。我会仔细研究一下,一旦我有了具体的东西,就会更新。你能详细介绍一下从中央非公共数据库复制的过滤器吗?客户端如何安全地复制到这个非公共数据库?如果你手头没有参考链接,我会提出一个新问题。在在这个问题的上下文中,客户端不会复制到中央数据库。您可以通过受信任的帐户设置复制,然后向其(每个用户)添加权限数据库,以便客户可以访问。@MarioMichelli连帽衫到底有什么好处?看起来它专注于营销-我真的不知道它适合什么地方,或者它是如何集成的。但有些口号听起来不错,比如“离线优先”,这正是我需要的。你能详细说明一下吗?