我的应用程序将包含对用户敏感的信息。据我所知,我应该使用每个用户架构的数据库。我希望每个用户的数据库(可能是客户端)复制到位于公共服务器上的数据库,并允许用户从任何设备访问应用程序,以便用户登录设备,数据库将被某些人发现公共服务器上的中间层,然后复制客户端,并在设备和公共服务器之间进行同步。
看起来这是CouchDB的好处(基于我的Google搜索),但有没有任何示例应用程序可以执行我所描述的(或接近它)?我正在使用couchdb 1.1.0。
答案 0 :(得分:8)
是的,CouchDB听起来非常适合这个 - 它简单的协议使它非常适合网络应用[甚至离线,请参阅pouchdb]和移动/桌面应用[再次离线,请参阅{{3 }}
不幸的是,我不知道有一个很好的公开代码级示例,但基本的想法是使用过滤复制和文档验证的组合:
基本思想是,对于用户数据库的服务器端副本,您需要设置验证功能,以便强制执行所需的文档架构和访问控制。最终用户获得此数据库的副本,可用于低延迟和离线访问 - 理论上他们可以破坏他们的副本,但在复制时,验证功能将阻止服务器端数据库被破坏。
您甚至可以设置不可公开访问的主数据库,然后使用Couchbase Mobile将每个用户的数据同步到服务器端的每用户数据库 - 这对于集中式消息传递,聚合统计数据非常有用,只需要备份一个数据库等
这篇filtered replication文章中还有一些高级示例,尤其是“DesktopCouch”和“基于需要知道的数据共享”用例部分。
更新(2015/03/10):我不再建议使用CouchDB的过滤复制,如上所述。当您尝试从中央数据库复制多个已过滤的源时,会出现一些性能和可伸缩性问题(如果不是可靠性问题)。如果您需要文档级读取权限,可以考虑尝试使用Couchbase及其"New Features in Replication",或者使用{{1}构建您自己的每用户更改视图(在自定义中间件后面保护) }。