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

8

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

2个回答

7

如果用户数量很多(成千上万),那么为每个用户单独建立一个数据库是可以的,但这意味着每个用户在文件系统中都需要有自己的数据库文件。根据我的经验,在操作系统级别处理资源时会出现问题,并且会使CouchDB变得不稳定。如果您想要进行分片并使用BigCouch,那么问题将更加严重,因为分片会创建多个文件副本。

另一种选择是使用CouchBase Sync Gateway (http://docs.couchbase.com/sync-gateway/)。它使用相同的CouchDB API,但是您需要将Couchbase用作服务器端数据库,而不是CouchDB。

另一种选择是将CouchDB与过滤复制和不同的数据库用户一起使用。这可能还不够,因为通过过滤复制无法避免某些人直接访问数据库。因此,您需要将其与反向代理解决方案(例如HAProxy)相结合,以确保每个用户仅访问其自己的过滤数据。


4

目前在PouchDB/CouchDB中处理私有用户数据的最佳实践是,在服务器端为每个用户提供他们自己的数据库。我在这里提供了一些指导(点击此处)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接