问题描述
我对用户及其文档的结构有一些概念性的疑问。
I have a bit of conceptual question regarding the structure of users and their documents.
为CouchDB中的每个用户提供他们自己的一个好习惯保存文档的数据库?
我已经读过,couchDB可以处理数千个数据库,并且每个用户拥有自己的数据库并不少见。
I have read that couchDB can handle thousands of Databases and that It is not that uncommon for each user to have their database.
原因:
提出此问题的原因是我正在尝试创建一个系统,其中登录用户只能查看自己的文档而无法查看任何其他用户文档。
The reason for asking this question is that I am trying to create a system where a logged in user can only view their own document and can't view any other users document.
任何建议。
提前谢谢。
推荐答案
为每个用户创建CouchDB存储桶(DB)是很常见的情况。虽然存在一些缺点:
It’s rather common scenario to create CouchDB bucket (DB) for each user. Although there are some drawbacks:
- 您必须在每个用户存储桶中保持ddoc同步,因此在多个存储桶中部署ddoc更改可能会变为真正的冒险。
- 如果以某种方式在用户之间共享文档,则会在每个存储桶中获得doc和viewindex dupes。
- 您必须阻止
_info
请求避免用户列表泄漏(或者你必须使用哈希命名桶)。 - 无论如何,你需要在Couch面前创建一些代理来创建并准备一个关于用户注册的新桶。
- 当收到许多请求时,你最好保护Couch不会耗尽容量 - 它还需要代理。
- You must keep ddocs in sync in each user bucket, so deployment of ddoc changes across multiple buckets may become a real adventure.
- If docs are shared between users in some way, you get doc and viewindex dupes in each bucket.
- You must block
_info
requests to avoid user list leak (or you must name buckets using hashes). - In any case, you need some proxy in front of Couch to create and prepare a new bucket on user registration.
- You better protect Couch from running out of capacity when it receives to many requests – it also requires proxy.
每个文档读取ACL可以使用 _list
函数实现,但这种方法有一些缺点,它还需要一个CouchDB前面的代理,至少是一个Web服务器。有关详细信息,请参阅。
Per-doc read ACL can be implemented using _list
functions, but this approach has some drawbacks and it also requires a proxy, at least a web-server, in front of CouchDB. See CouchDb read authentication using lists for more details.
您也可以尝试使用来实现完全按文档读取ACL,保持原始CouchDB API不变,但它处于早期测试阶段。
Also you can try to play with CoverCouch which implements a full per-doc read ACL, keeping original CouchDB API untouched, but it’s in very early beta.
这篇关于为每个CouchDB用户提供一个单独的数据库是一种好习惯吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!