mongodb - 多个数据源和 Multi-Tenancy 之间有什么区别?

标签 mongodb grails gorm

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

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

Multi-Tenancy 解决方案:
http://gorm.grails.org/latest/mongodb/manual/#multiTenancy

最佳答案

好吧,它们并不能达到相同的目的

tldr;
多个数据源意味着对不同的对象具有不同的数据库(如果您仅打算使用mongodb,则为集合),而 Multi-Tenancy 将存储相同的对象,但添加了区分符以标识特定于客户端的数据。

如果您的问题是要为不同的客户支持不同的数据库,那么答案将是与 Multi-Tenancy 一起使用

多个数据源

Grails支持(很长时间)为同一个应用程序拥有多个数据库(可以是不同的数据库供应商,也可以是同一供应商的不同数据库)。目的是将特定数据存储在不同的db / namespace中。

例如,您可以决定为业务的所有核心实体分配一个数据库,并为所有审核/记录工作分配一个专用的数据库。使用多个数据源时,您将一个对象映射到专用数据源

Multi-Tenancy (根据OP上下文具有数据库租户)

另一方面,在 Multi-Tenancy (数据库租户)中,grails将有一个数据库架构供您的客户端存储所有对象。因此,来自客户端A的数据将与客户端B不在另一个数据库中。Grails将具有一些默认的租户解析器(如果需要,您仍可以覆盖它),它将根据上下文确定要查询的数据库。

关于mongodb - 多个数据源和 Multi-Tenancy 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239534/

相关文章:

node.js - 如何使用 mongoose 从 mongodb 获取除选择用户之外的所有用户

服务中的 grailsApplication null

grails - 我是否需要为grails中的facebook connect + spring security创建自定义身份验证提供程序?

javascript - 将文件上传到Google文档

grails - 不同架构中的表之间的关系映射

grails - 在Grails中批量更新记录

php - codeigniter 3.x 中的 MongoDB\Driver\Exception\InvalidArgumentException

node.js - "Simple"使用 Node/mongo/express 的 RESTful API

hibernate - Grails&Hibernate createCriteria在like子句中填充中间空格

mongodb - 在 MongoDB 中对锦标赛分组进行建模