【问题标题】:Multi-Tenant with shared database and discriminator column具有共享数据库和鉴别器列的多租户
【发布时间】:2021-02-18 04:52:12
【问题描述】:

Hibernate 多租户共享数据库(鉴别器列)到现在仍未实现。

我正在开发 Quarkus RestEasy JAX-RS 端点。 我想使用多租户体系结构(不是单独的数据库或单独的模式,而是具有像tenantId 这样的鉴别器列的共享数据库)。 Quarkus 也只支持独立的数据库和独立的模式,如 Hibernate。

那么,如何实现自定义解析器来根据tenantId 编写我的端点资源方法(get、post、put、delete)?

我想到了一个拦截器或过滤器,但我不知道如何用 Quarkus 实现它。

这个想法是(SaaS):

  • 创建客户帐户(为他设置租户 ID)
  • 当用户登录时,根据他的tenantId获取数据。

用例:

Tenant1 发送包含他的tenantId 的HTTP 请求,从端点资源中获取tenantId 并根据当前tenantId 值执行save()、getAll()、get()、delete() 方法,这样每个租户只会得到或添加他自己的数据。

其他可能性:

是否可以使用单独的架构并编写可以从所有租户架构中获取数据的服务(管理仪表板)?

例子:

  • Tenant1 = StackOverflow US(员工人数 = 50)(SCHEMA 1 中的员工表)

  • Tenant2 = StackOverflow France(员工人数 = 30)(SCHEMA 2 中的员工表)

  • StackOverFlow 全球经理仪表板(员工总数 = 80,Schema 1 员工表Schema 2 员工表之和),他还可以按子公司进行统计。 p>

【问题讨论】:

    标签: java database rest multi-tenant quarkus


    【解决方案1】:

    Quarkus 目前仅支持多租户的单独数据库和单独架构,请参阅https://quarkus.io/guides/hibernate-orm#multitenancy

    你想要的是分区(判别器)数据,见https://docs.jboss.org/hibernate/orm/4.3/devguide/en-US/html/ch16.html#d5e4808

    因此,如果您可以使用单独的架构,则可以使用 Quarkus 进行 OOTB。

    例如,对于您的全局仪表板,您可以在专用架构上创建一个视图,该架构是“按租户”架构上相应表的联合。

    【讨论】:

      猜你喜欢
      • 2011-10-06
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 2015-09-21
      • 2012-12-14
      • 2018-07-13
      • 2018-02-06
      相关资源
      最近更新 更多