繁体   English   中英

具有共享数据库和鉴别器列的多租户

[英]Multi-Tenant with shared database and discriminator column

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,架构 1 员工表架构 2 员工表的总和),他还可以按子公司进行统计。

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 是可行的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM