2014-12-28 62 views
0

Moqui框架如何處理多租戶服務? Moqui的方法與Apache OFBiz類似嗎? Ofbiz爲每個租戶提供單獨的數據庫。 Moqui是一個強大的框架,它繼承了OFBiz的許多好處,並且還有許多改進。處理多租戶是否有任何改進? 是否有任何示例multitenant應用程序(HiveMind或示例應用程序)Moqui中的多租戶服務

我正在評估一個Web應用程序的框架,它具有次要數據庫交互(只有10到20個表),應該服務器100或更多的客戶。爲單獨的租戶分離數據庫對於這樣一個更小的應用程序很難證明是正確的。任何與Moqui處理此問題的建議?一種選擇是在此應用程序中的每個實體中創建字段名稱tenant_id,並且每當執行數據庫操作時,每個數據庫查詢都應該檢查此字段。

+0

使用Moqui製作應用程序不包括框架的這一方面。除了這本書還有其他文檔嗎? –

+0

經過調查消息來源和發佈說明後,Moqui對多租戶的支持與Ofbiz類似,意味着共享應用服務器具有不同的數據庫。考慮Moqui的領域,這是一個明智的做法,因爲大型企業的混合數據庫變得難以維護。我的問題部分回答。只剩下這一部分:我們如何開發一個針對大型客戶羣的應用程序,其數據庫條目非常有限(僅限於10到20個表格)? –

回答

1

Moqui在多租戶功能方面與OFBiz相比具有各種附加功能,但是它確實使用一個應用服務器(或應用服務器集羣)和每個租戶一個數據庫的相同方法(或每個租戶有多個數據庫if數據庫被分割)。

要真正支持單個數據庫中的大量租戶,需要大量的工具。您基本上必須在多租戶層中構建功能,以便不僅處理應用程序需求,而且通常直接使用數據庫(其他應用程序,報告,導出/遷移,需要時的隔離備份等)完成其他任務。當擴展非常大時,您還需要爲跨多個數據庫服務器的分片租戶構建支持。換句話說,要做到恰當完整,這不是一件簡單的事情。

100個租戶並沒有那麼糟糕,您可以爲每個租戶提供一個數據庫。最好是爲租戶提供自動化配置,並且可以基於Moqui中已有的租戶配置服務來完成。如果您(例如)想要將每個數據庫服務器限制爲50或100或任何租戶,您甚至可以添加邏輯以在多個數據庫服務器之間「分散」租戶。你可以通過這種方式擴展到成千上萬的租戶,但是你當然需要處理其他縮放細節。

您當然可以使用爲每個實體添加tenantId的方法,或讓Entity Facade自動執行此操作(可能是除租戶公共組中的實體外的所有實體)。如果您想要跨租戶進行報告,並且每個租戶的數據量不是很大,那麼這可能是一個很好的選擇。

你可以爲你的自定義實體做到這一點,但根據所需的功能,你可能需要將它添加到Moqui實體中。例如,如果您希望用戶在不同租戶之間分開,您必須將tenantId添加到UserAccount和大多數其他安全實體(用於授權,用戶組,權限等)。您也可以將tenantId作爲非PK字段添加到UserAccount(使用extend-entity以避免修改原始實體定義),然後根據經過身份驗證的用戶查找租戶(或在用戶單獨的連接表中查找可能有權訪問多個租戶)。

複雜性和可能的​​變化是無止境的......一切取決於你想要做什麼!

與此最接近的概念是地幔數據模型中的組織派對。各種各樣的東西被設計爲支持同一系統中的多個組織,但是它們之間沒有嚴格的隔離。這實際上是針對一個組織內的多個部門和其他小型組織。