1. 程式人生 > >SaaS模式實現架構例項分析=資料庫層的設計

SaaS模式實現架構例項分析=資料庫層的設計

1、  資料庫層:

資料庫這一層的設計模式是很清晰的,無外乎只有3種方案:

(1)       所有客戶的資料都存放在一個數據庫的同一套表中, 在表中增加Company_id等標誌欄位,表明該記錄是屬於哪個客戶的。

      優點:資料來源和資料庫的管理都比較簡單。和原來的應用沒有差別。

缺點:資料許可權比較複雜,增加程式的複雜性。如果應用比較複雜,很多資料表都需

要加入客戶標誌欄位,很多查詢都需要包括該欄位,會比較麻煩。如果有遺漏,、特別是查詢條件中遺漏該欄位,就會造成一個客戶看到另一個客戶的資料。

(2)       每個客戶獨立一個數據庫:

在應用伺服器中配製不同的資料來源,或者使用不同的連線池。

優點:不同客戶的資料物理分離,安全性比較好。

      缺點:資料庫連線的利用效率不高。Performance 問題會很大

(3)       多Schema,單資料來源

這個方案基本是方案2的變種。同一個資料庫下可以有多個Schema

優點:除了方案2的優點以外,共享資料來源或連線池,效率更高。

缺點:和方案一比較起來,資料庫連線池開銷會比較大

所有以上方案都是所有客戶共享同一個應用(WAR或EAR)。

這裡我選擇方案三,並結合了方案一,對於登陸/驗證/許可權,所有的客戶共享一個Schema,而對於業務資料,則每個客戶一個Schema.

我做了200個不同的Schema,使用者名稱和密碼分別是demo1/demo1 到demo200/demo200,大家可以按照不同的使用者名稱和密碼登陸。

這臺機器就是一臺式機,不是專用伺服器,網路也是放在我家裡的小區寬頻上,是通過無線路由器上的網,所以網速可能不太穩定。