我正在考虑使用 MongoDB 创建一个 Multi-Tenancy 应用程序。我还没有任何关于我会拥有多少租户的猜测,但我希望能够扩展到数千个。
我能想到三个策略:
我脑海中的声音暗示我选择选项 2。
想法和启示,有人吗?
最佳答案
我有同样的问题要解决,并且也在考虑变体。 由于我拥有多年创建 SaaS Multi-Tenancy 应用程序的经验,因此我也将根据我之前在关系数据库方面的经验选择第二个选项。
在进行研究时,我在 mongodb 支持网站上找到了这篇文章(因为它已经消失了,所以又添加了): https://web.archive.org/web/20140812091703/http://support.mongohq.com/use-cases/multi-tenant.html
这些家伙表示要不惜一切代价避免使用第二个选项,据我所知,这并不是 mongodb 所特有的。我的印象是,由于数据库设计的特殊性,这适用于我研究的大多数 NoSQL 数据库(CoachDB、Cassandra、CouchBase Server 等)。
集合(或存储桶,或者它们在不同的数据库中调用它)与 RDBMS 中的安全模式不同,尽管它们充当文档的容器,但对于应用良好的租户分离毫无用处。我找不到可以基于集合应用安全限制的 NoSQL 数据库。
当然,您可以使用 mongodb 基于角色的安全性来限制数据库/服务器级别的访问。 (http://docs.mongodb.org/manual/core/authorization/)
我会推荐第一种选择:
如果满足以下条件,我会选择变体 3:
如果您发布有关您的申请的更多详细信息,也许我可以给您更详细的建议。
https://stackoverflow.com/questions/2748825/
相关文章:
node.js - 如何在 mongodb-native findOne() 中使用变量作为字段名?
mongodb - Meteor 应用程序 — 重置已部署应用程序的数据库
MongoDB select count(distinct x) on an indexed col
javascript - node.js mongodb 通过_id node-mongodb-na
node.js - Mongoose findByIdAndUpdate 没有返回正确的模型
mongodb - 在 Mongoose/MongoDB 中创建多字段索引
mongodb - 无法验证到 mongo, "auth fails"