【问题标题】:Grails Multi-Tenancy with Multiple Databases具有多个数据库的 Grails 多租户
【发布时间】:2015-11-28 22:08:41
【问题描述】:

我似乎找不到任何关于具有多个数据库的 Grails 多租户(每个租户一个)的更新资源/指南、插件或示例。我目前坚持使用https://grails.org/plugin/multi-tenant-single-db 和过时的https://grails.org/plugin/multi-tenant-core

如何根据登录用户进行数据库切换?

【问题讨论】:

  • 多租户插件已过时并使用 Hibernate 3。我有一个基于单个 db 插件的 grails 2.3 应用程序。每个租户的 DB 插件更加过时。然而,Hibernate 4 内置了对基于每个租户的 DB 和基于每个租户的模式的多租户的支持。您可以拦截 gorm 调用并使用 AST 转换来完成此操作。但这是一项耗时的工作。您必须阅读 Hibernate 文档。
  • @EjazAhmed 谢谢!可能会尝试 Hibernate 4 方法。
  • @renz 你找到了可行的解决方案吗?
  • @lifeisfoo 我改用单一数据库方法,简单得多。 grails.org/plugin/multi-tenant-single-db,不过降级到 Hibernate 3。
  • @renz 我进一步探索了 Hibernate4,并将我的 grails 2.3 应用程序移植到 grails 3。我根据我的工作为 grails3 创建了多租户插件。

标签: grails multi-tenant multiple-databases


【解决方案1】:

Grails 抽象出了很多 Hibernate 的东西,所以 Gorm 和 Hibernate 之间存在阻抗不匹配。一个这样的问题是基于租户加载多个数据源。如果您按 DB 策略租用租户,请为hard battle 做好准备。除了涉及的复杂性之外,还有很长的路要走,因为在这种策略中数据库维护成本很高。大多数现代应用程序使用 Single DB Single Schema 方法,我也在 my plugin 中使用过这种方法。目前这个插件使用 Spring Security 解析租户。这种方法的原因是我正在处理的应用程序是一个 SaaS 应用程序,可以从单个域提供服务。如果您必须从多个域提供服务,则此插件需要稍作修改。

关于迁移到 grails3,它于 2015 年 3 月发布,在一年的时间里,它经历了各种改进和错误修复。它足够稳定,可以依赖,而且它已经移植了几乎所有必要的插件。如果您正在构建一个新应用程序,则必须采用 grails3 方式。如果您有现有的应用程序,可以考虑迁移到 grails3。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    相关资源
    最近更新 更多