應用系統的SaaS化的方案討論
文/阿蜜果
日期/2012-11-26
1、SaaS的概念
SaaS是Software-as-a-service(軟件即服務)的簡稱。SaaS在業內的叫法是軟件運營,或稱軟營。是一種基于互聯網提供軟件服務的應用模式。一種隨著互聯網技術的發展和應用軟件的成熟,在21世紀開始興起的完全創新的軟件應用模式,是軟件科技發展的最新趨勢。
企業根據實際需要,向SaaS提供商租賃軟件服務。 SaaS 是一種軟件布局模型,其應用專為網絡交付而設計,便于用戶通過互聯網托管、部署及接入。 SaaS 應用軟件的價格通常為“全包”費用,囊括了通常的應用軟件許可證費、軟件維護費以及技術支持費,將其統一為每個用戶的月度租用費。
2、應用系統的SaaS化
2.1 概述
近來有個應用系統需要實現SaaS化,而且時間進度要求很緊,于是乎,幾個同事一起想實現應用系統SaaS化的簡便方案,這個方案需要滿足以下兩個條件:
(1)實現每個租戶的業務數據信息的隔離(用戶表、業務信息表等);
(2)涉及到原系統的代碼改動盡可能的少。
通過網上查詢資料以及討論,我想出使用第二種方式實現,但上司提出了第三種方式,提出來后,我汗顏了,雖然可能涉及到的代碼改動差不多,但在對表的管理上方便很多,看來跟他差得還不是一點半點呀!
2.2 SaaS化的方案
2.2.1 每個租戶一個獨立數據庫
優點:不同租戶(一般指企業客戶)的數據物理分離,安全性很好。
缺點:數據庫連接的利用效率不高,性能問題會很大。
系統將借由元數據(Metadata)來記錄哪一個數據庫屬于哪一個特定客戶,與此同時也可以部署一定的數據庫訪問策略來確保即使系統處于異常狀況下,客戶數據也不會被其它客戶意外訪問到。但是,這種數據模型的最大問題是對應的部署和維護成本非常高,硬件資源的消耗將明顯高于其它兩種方案,一臺服務器將只能支持有限數量的客戶。
2.2.2 租戶使用同一數據庫,但使用不同的表
方案描述:應用系統的所有租戶使用相同的數據庫,但每個租戶的業務表是不同的,例如以唯一的租戶ID添加為表名前綴或后綴。
在應用系統改造時,需要進行如下操作:
(1)在注冊租戶時,需要將所有與該租戶有關的表都建上,表名帶上租戶前綴或后綴;
(2)在對業務表進行操作的方法中,需要將租戶ID傳入,iBatis和Hibernate中都可以實現數據庫分表(動態表名映射),具體可參考《iBatis和Hibernate數據庫分表(動態表名映射)的實現方法》,大家有興趣的話,可以按照這篇文章所說的,嘗試著實現一下。
優點:相對比較容易實現,而且從數據擴展性而言,這種解決方案和獨立數據庫一樣,客戶可以相對自由地對其中的數據結構進行新增和修改。
缺點:這種客戶獨立模式的方式比較適合應用在每個客戶擁有比較少的表數量的情況下,比如每個客戶只有100張表或更少。這種方式毫無疑問可以在每臺服務器上支持比獨立數據庫方式更多的客戶數量,減低了服務供應商的運營成本。
2.2.3 租戶使用同一數據庫,有自己的數據庫用戶,各租戶表名相同,使用超級用戶訪問
方案描述:應用系統的所有租戶使用相同的數據庫,但是使用數據庫超級管理員登錄,以前綴訪問不同的數據庫用戶的表,例如a.tbl_user_info、b.tbl_user_info的表。
在應用系統改造時,需要進行如下操作:
(1)在注冊租戶時,以數據庫超級管理員的身份創建數據庫用戶(例如a、b等,并建立租戶與數據庫用戶之間的對應關系),并為該數據庫用戶建立所有與該租戶有關的表(例如tbl_user_info和tbl_file_info等);
(2)在對業務表進行操作的方法中,需要將租戶ID傳入,iBatis和Hibernate中都可以實現數據庫分表(動態表名映射),具體可參考《iBatis和Hibernate數據庫分表(動態表名映射)的實現方法》,這跟第2種方案是很相似的。
這種方案的優缺點與第二種方案類似,但是卻多了一個很明顯的優點:表管理比較方便,使用租戶的數據庫用戶登錄時,只會看到與該租戶有關的表,所以該方案明顯好于第2種方式。
路漫漫其修遠兮,吾將上下而求索。與想到第3種方案的同事差得還不是一點半點呢!
3、參考文檔
(1)《SaaS模式_百度百科》:http://baike.baidu.com/view/2796435.htm
(2)《SaaS模式下數據擴展性的設計與實現》:
http://cio.ccw.com.cn/hydt/htm2011/20110810_942292.shtml
(3)《iBatis和Hibernate數據庫分表(動態表名映射)的實現方法》:
http://lamblog.blog.163.com/blog/static/200724238201271383032932/
posted on 2012-11-26 16:03
阿蜜果 閱讀(3766)
評論(0) 編輯 收藏 所屬分類:
解決方案