如何在复制过程中过滤数据并仅为用户提供自己的文档?

时间:2014-05-27 11:26:01

标签: couchdb replication pouchdb

我需要在客户端同步来自CouchDB和PouchDB的服务器数据。每个用户都有自己的数据。当他在线时,这些数据正在更新。如何在复制过程中过滤数据并仅为用户提供自己的文档?这对我来说是安全问题。

2 个答案:

答案 0 :(得分:7)

每个用户都有一个单独的数据库,直到您开始拥有大量用户(数千个),因为每个用户都需要拥有它自己的文件系统中的数据库文件。根据我的经验,这会在操作系统级别产生资源问题,并使CouchDB不稳定。如果你想进行分片并使用BigCouch,问题将更加严重,因为分片会创建多个文件副本。

替代方案是CouchBase同步网关(http://docs.couchbase.com/sync-gateway/)它使用相同的CouchDB API,但您需要使用Couchbase作为服务器端DB而不是CouchDB。

另一种方法是将CouchDB与过滤复制一起使用,并为每个用户使用不同的DB用户。这可能还不够,因为通过过滤复制,您无法避免有人直接访问数据库。因此,您需要将其与HAProxy等反向代理解决方案结合使用,以确保每个用户只能访问自己的过滤数据。

答案 1 :(得分:4)

目前,在PouchDB / CouchDB中执行私有用户数据的最佳做法是在服务器端为每个用户提供自己的数据库。对于如何执行此操作,我有一些说明here