根据PouchDB/CouchDB的文档用户访问控制

kon*_*hou 7 security couchdb access-control pouchdb

我希望使用PouchDB - CouchDB来保存我的Web应用程序的用户数据,但无法找到一种方法来控制每个用户的访问权限.我的数据库只包含使用用户ID作为密钥的文档.我知道有一些解决方案:

  1. 每个用户一个数据库 - 但是它需要监视新用户何时想要保存数据以创建新数据库,并且可能创建大量数据库;

  2. 客户端和CouchDB之间的代理 - 但是我不希望PouchDB同步整个数据库的更改,包括那些_all_docs,_revs_diff请求中的其他用户的文档.

pouchDB的用户访问控制是否有任何建议,用户群约为100万(仅活跃用户约1万)?

Big*_*Hat 3

过去,邮件列表中曾出现过一百万个或更多数据库的主题。结论是,这取决于您的操作系统如何处理这么多文件。CouchDB 只是.couch在请求时访问文件的部分内容。性能与查找、打开、访问和关闭该文件的速度有关。

对于某些文件系统,有一些技巧,例如/在数据库名称中放置分隔符,这将导致 CouchDB 将它们存储在匹配的目录结构中,例如groupA/userA.couch或使用电子邮件样式的数据库名称com/bigbluehat/byoung.couch(或类似的名称)。

如果这还不够,Apache CouchDB 2.0 引入了BigCouch代码(IBM Cloudant使用的)来提供完全自动分片的 CouchDB。虽然尚未完成,但它将使用 Amazon Dynamo 风格的分片系统提供跨多个节点的可扩展性。

另一种选择是在多个 CouchDB 服务器之间进行您自己的基于用户名的分区,或者使用 IBM Cloudant(专为这种级别的规模而构建)。

所有这些选项都提供相同的 Apache CouchDB 复制协议,并且可以与用户计算机、手机或平板电脑上的 PouchDB 完美配合。

然后,用户的设备将拥有自己的数据库+/-任何共享数据库。这百万用户设备上的应用程序只需关心其自身内容(也称为硬盘空间)的可扩展性。该应用程序将直接复制到“云”端用户数据库以进行备份、网络使用等。

希望里面的东西听起来很有希望。:)

  • 还想提一下 `couch-peruser` 项目——它现在是 Apache CouchDB 项目的一部分 https://github.com/apache/couchdb-peruser (2认同)