栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Making spring-data-mongodb multi-tenant

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Making spring-data-mongodb multi-tenant

这里有很多种为猫皮的方法。基本上,所有这些都归结为你要应用该租约的级别。

基本
基本方法是在每个线程的基础上绑定某种标识客户的密钥,以便你可以找到当前执行线程所处理的客户。通常,这可以通过填充

ThreadLocal
一些与身份验证相关的信息来实现,因为你通常可以从已登录的用户派生租户。

现在,如果有的话,可以在哪里选择一些租户知识。让我简要概述最常见的方法:

数据库级别的多租户
为多个客户端分离数据的一种方法是每个租户拥有单独的数据库。

Spring Data MongoDB
为此的核心抽象是MongoDBFactory接口。此处最简单的方法是
SimpleMongoDbFactory.getDb(String name)
使用数据库名称覆盖并调用父方法,例如,通过租户前缀等丰富。

集合级别的多租户
另一种选择是拥有租户特定的集合,例如通过租户前缀或后缀。实际上,可以通过在@document注释的

collectionName
属性中使用Spring expression语言(SpEl)来利用此机制。首先,通过Spring bean公开承租人前缀:

 @Component("tenantProvider") public class TenantProvider {   public String getTenantId() {     // … implement ThreadLocal lookup here   } }

然后在你的域类型

@document
映射中使用SpEL :

 @document(collectionName = "#{tenantProvider.getTenantId()}_accounts" public class Account { … }

SpEl允许你按名称引用Spring bean并在其上执行方法。MongoTemplate(因此,存储库的抽象是可传递的)将使用文档类的映射元数据,并且映射子系统将评估该collectionName属性以查找有关要与之交互的集合。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号