如何使用morphia在mongo db中实现多租户

时间:2016-06-04 04:29:17

标签: mongodb morphia

数据库级别的多租户:为多个客户端分隔数据的一种方法是为每个租户提供单独的数据库。

1 个答案:

答案 0 :(得分:0)

假设您正在处理Web服务或Web应用程序。

  1. 客户端会将租户ID作为标头参数发送。

  2. 编写一个过滤器,并按租户ID从缓存中获取租户详细信息。

  3. 在过滤器中设置架构名称 例如:

    MDC.put(Constants.MONGO_TENANT_DB, "uat");
    
  4. 在任何DB操作/ orm调用之前将调用MongoMultiTenancyInterceptor。 String tenantDBName = MDC.get(Constants.MONGO_TENANT_DB);

      LOG.info("Switching to database:  "+tenantDBName);
      if(StringUtils.isNotBlank(tenantDBName)){
              MultitenantDatastoreFactory.setDatabaseNameForCurrentThread(tenantDBName);
      }
      Setting the Database name for current Thread.
    
  5. MultitenantDatastoreFactory:为每个租户架构创建数据存储区实例并存储到HashMap中。

  6. MultitenantDatastoreFactory.getDS():按架构名称从Hashmap返回数据存储

  7. UserRepository:它将从工厂方法获取Datastore对象并执行任何数据库操作。

  8. 我已将项目上传到GITHUB,您可以从GITHUB下载代码

    https://github.com/vikashnitk50/spring-morphia-db-poc