MongoDB中每个集合一个客户

时间:2019-05-03 08:28:41

标签: mongodb multi-tenant

我正在研究企业级多租户系统,我们正在讨论如何对MongoDB进行分区,并且我正在阅读如何进行此操作,但是我有几个问题,如果这里有专家可以为我提供帮助。 只是强调一下:我已经阅读了此书并尝试搜索信息,但是它无法回答我的问题(或者我的google-fu完全使我无法接受)。

问题1: 每个集合一名客户。

这种情况是人们谈论避免的事情,而我对答案的方式并不满意。 我知道有一个名称空间限制,如果您有超过100个集合,就会有问题,但是如果您围绕它建立该怎么办?

我的想法是将数据库中的最大集合数限制为X(50?80?30?一些很酷的数字),并使用数据库的多个实例,但每个客户不使用一个实例。这是由于经济原因,我想按每个租户的成本计算,从而将几个租户放在一个数据库中,然后将每个租户放入集合中,以创建一个很好的集合规模。 据我了解,当我阅读有关Mongo DB的文档时,只要我仔细观察每个数据库中有多少个集合,上述情况就可以了。这将使我在不同的馆藏之间很好地传播信息,从而利用MongoDB的扩展可能性,同时仍保持合理的成本。 与不同数据库的连接字符串不是一个大问题,我可以轻松解决这个问题。

与使客户与customer_id分开并根据其他信息将信息散布到不同的集合中相比,我会发现上述情况更容易。

我的推理仍然不正确吗?如果是,为什么?我的逻辑在哪里使我失望?

问题2: (仅当问题1的答案是“不,不对,您是对的”时,此问题才有效:)) 如果我现在使用上述场景,并且有多个客户,例如连锁商店。假如说IKEA(商店很多),而您有一个总经理需要一些来自所有IKEA租户的信息的地方,我需要进入几个集合以查找总体统计信息,这是问题吗? 我已经考虑过将某些客户放在一个特定的数据库中(例如宜家或其他连锁店),这意味着如果他们的商店少于100个,那么我“仅”需要查看一个数据库,但是我需要从多个不同的集合中获取信息,这有问题吗?

我知道有很多类似问题的参考,例如:

What is the recommended approach towards multi-tenant databases in MongoDB?

https://web.archive.org/web/20140812091703/http://support.mongohq.com/use-cases/multi-tenant.html

https://azure.microsoft.com/en-us/blog/new-multi-tenant-patterns-for-building-saas-applications-on-sql-database/

但是我觉得他们对这种形式的问题缺乏答案。

希望您能理解我的问题中的区别。非常感谢!

0 个答案:

没有答案