2010-07-29 71 views
2

我必須使用共享數據庫獨立模式方法來啓用Web應用程序多租戶。該應用程序使用Java/J2EE和Oracle 10g構建。如何實施「共享數據庫,獨立模式」多租戶策略

我需要使用具有多個模式的共享數據庫的單個應用服務器,每個客戶端一個模式。

實現此目標的最佳實施方法是什麼?

  • 什麼需要在中間層(應用程序服務器)級別完成?
  • 我是否需要爲每個客戶端設置多個主機標頭?
  • 如何根據訪問應用程序的客戶端動態連接到正確的模式?
+0

http://stackoverflow.com/questions/19177117/saas-multi-tenant-separate-database-model-implementation-in-java – techuser 2014-03-09 05:20:10

回答

0

在一個較高水平,這裏有一些事情要考慮:

  • 你可能想隱藏的一天到一天的發展租賃事項。因此,您可能希望儘可能將其隱藏在基礎架構中,並將其與業務邏輯分開。你不想總是檢查你是哪個租戶的上下文......你只是想在這種情況下。
  • 如果您使用的是工作單元模式,您需要確保任何工作單元(除了在純粹的基礎架構環境中運行,而不是在業務環境中運行的工作單元)在一個租戶的上下文中執行。如果你不使用工作單元模式......也許你應該這樣做。不知道你還有什麼要遵循上面的建議(雖然也許你會找出一個辦法)。
  • 您可能希望將租戶ID放入每個消息或HTTP請求的標頭中。在保持遠離商業邏輯的原則下,可能更好地保持這一點。你可以在幕後刮掉它,並確保在幕後它將被放置在任何傳出的消息/請求上。
  • 我不熟悉Oracle,但在SQL Server中,我相信Postgres中可以使用模擬作爲切換租戶的方式。也就是說,不是在每個SQL命令和查詢中對模式進行參數化,只需要一個SQL用戶(沒有關聯的登錄)將相關租戶的模式作爲其默認模式,然後將模式退出你的日常SQL。您將不得不攔截對數據庫的調用並將其包裝在模擬呼叫中。就像我說的,我不確定在Oracle中這是如何工作的,但這是SQL Server的一般想法。
  • 認證和安全性是這裏的一大問題。這遠遠超出了我可以在這個答案中討論的範圍,但確保你得到了正確的
相關問題