SaaS模式實現架構例項分析=資料庫層的設計
阿新 • • 發佈:2019-01-09
1、 資料庫層:
資料庫這一層的設計模式是很清晰的,無外乎只有3種方案:
(1) 所有客戶的資料都存放在一個數據庫的同一套表中, 在表中增加Company_id等標誌欄位,表明該記錄是屬於哪個客戶的。
優點:資料來源和資料庫的管理都比較簡單。和原來的應用沒有差別。
缺點:資料許可權比較複雜,增加程式的複雜性。如果應用比較複雜,很多資料表都需
要加入客戶標誌欄位,很多查詢都需要包括該欄位,會比較麻煩。如果有遺漏,、特別是查詢條件中遺漏該欄位,就會造成一個客戶看到另一個客戶的資料。
(2) 每個客戶獨立一個數據庫:
在應用伺服器中配製不同的資料來源,或者使用不同的連線池。
優點:不同客戶的資料物理分離,安全性比較好。
缺點:資料庫連線的利用效率不高。Performance 問題會很大
(3) 多Schema,單資料來源
這個方案基本是方案2的變種。同一個資料庫下可以有多個Schema
優點:除了方案2的優點以外,共享資料來源或連線池,效率更高。
缺點:和方案一比較起來,資料庫連線池開銷會比較大
所有以上方案都是所有客戶共享同一個應用(WAR或EAR)。
這裡我選擇方案三,並結合了方案一,對於登陸/驗證/許可權,所有的客戶共享一個Schema,而對於業務資料,則每個客戶一個Schema.
我做了200個不同的Schema,使用者名稱和密碼分別是demo1/demo1 到demo200/demo200,大家可以按照不同的使用者名稱和密碼登陸。
這臺機器就是一臺式機,不是專用伺服器,網路也是放在我家裡的小區寬頻上,是通過無線路由器上的網,所以網速可能不太穩定。