为每个CouchDB用户提供一个单独的数据库是一种好习惯吗?

Sky*_*ker 7 javascript database couchdb couchdb-futon

关于用户及其文档的结构,我有一些概念性的问题.

为CouchDB中的每个用户提供他们自己的数据库来保存他们的文档是一个好习惯吗?

我已经读过,couchDB可以处理数千个数据库,并且每个用户拥有自己的数据库并不罕见.

原因:

提出这个问题的原因是我正在尝试创建一个系统,其中登录用户只能查看自己的文档而无法查看任何其他用户文档.

有什么建议.

先感谢您.

小智 9

为每个用户创建CouchDB存储桶(DB)是相当常见的情况.虽然有一些缺点:

  • 您必须在每个用户存储桶中保持ddocs同步,因此在多个存储桶中部署ddoc更改可能会成为一次真正的冒险.
  • 如果以某种方式在用户之间共享文档,则会在每个存储桶中获得doc和viewindex dupes.
  • 您必须阻止_info请求以避免用户列表泄漏(或者您必须使用哈希命名存储桶).
  • 无论如何,您需要在Couch面前使用一些代理来创建和准备用户注册的新存储桶.
  • 当收到许多请求时,你最好保护Couch不会耗尽容量 - 它还需要代理.

Per-doc读取ACL可以使用_list函数实现,但是这种方法有一些缺点,它还需要在CouchDB前面使用代理,至少需要Web服务器.有关详细信息,请参阅使用列表的CouchDb读取身份验证.

此外,您可以尝试使用CoverCouch来实现完整的每个文档读取ACL,保持原始CouchDB API不受影响,但它处于早期测试阶段.

  • 这种方法的缺点超过了专业人士:你最终会完全放弃对你的网站和数据的控制.即使知道最近注册了多少用户,这种方法也许是一场噩梦,即使不是不可能的! (2认同)