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

时间:2016-10-25 12:06:39

标签: mongodb grails gorm

在mongodb和gorm的上下文中,如果我们需要为不同的客户端提供不同的数据库,那么多租户(使用数据库模式)和多数据源方法是实现相同的2个解决方案或者是否有任何区别它们?

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

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

1 个答案:

答案 0 :(得分:0)

那么他们并不意味着达到同样的目的

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

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

多个数据源

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

例如,您可以决定为业务的所有核心实体创建一个数据库,并为所有审计/日志记录提供专用数据库。使用多个数据源时,您将对象映射到专用数据源

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

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