多数据源和多租户有什么区别?

What is the difference between multiple data sources and multi tenancy?

在 mongodb 和 gorm 的上下文中,如果我们需要为不同的客户端使用不同的数据库,那么多租户(使用数据库模式)和多数据源方法是实现同一件事的两种解决方案或者它们之间有什么区别吗?

多数据源解决方案: http://gorm.grails.org/latest/mongodb/manual/#multipleDataSources

多租户解决方案: http://gorm.grails.org/latest/mongodb/manual/#multiTenancy

嗯,他们不是为了达到同样的目的

tldr; 多数据源意味着不同的对象具有不同的数据库(如果您只打算使用 mongodb,则为集合),而多租户将存储相同的对象,但会添加一个鉴别器来识别客户端特定数据。

如果您的问题是关于支持不同客户端的不同数据库,答案是多租户

多个数据源

Grails 支持(长期)为同一应用程序使用多个数据库(可以是不同的数据库供应商或来自同一供应商的不同数据库)。目的是将特定数据存储在不同的 db/namespace.

例如,您可以决定为您业务的所有核心实体建立一个数据库,并为所有 audit/logging 事物建立一个专用数据库。使用多个数据源时,您会将对象映射到专用数据源

多租户(根据 OP 上下文使用数据库租户)

另一方面,在多租户(数据库租户)中,grails 将为您的客户端提供一个单一的数据库模式来存储所有对象。因此来自客户端 A 的数据将位于客户端 B 之外的另一个数据库中。Grails 将有一些默认的租户解析器(如果需要,您仍然可以覆盖),它将根据上下文设法确定需要查询哪个数据库。