簡體   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