
2 SaaS軟件的關鍵技術
2.1 多租戶模式下的數(shù)據(jù)存儲
SaaS軟件與傳統(tǒng)軟件相比,最大不同就是多租戶模式,多個租戶共享同一個軟件實例,租戶的數(shù)據(jù)既有隔離又有共享。根據(jù)多租戶模式的特點,在數(shù)據(jù)存儲上有3種被選的解決方案。
方案1:獨立數(shù)據(jù)庫。這種數(shù)據(jù)存儲方案將每個租戶的數(shù)據(jù)信息單獨存儲在獨立的數(shù)據(jù)庫中,是實現(xiàn)SaaS數(shù)據(jù)隔離最便捷的方式,而且對一個租戶數(shù)據(jù)模型的更改不會影響其他租戶的數(shù)據(jù),安全性好。但是這種方案大大增加了數(shù)據(jù)庫的安裝費用,有多少個租戶就需要搭建多少個數(shù)據(jù)庫。這種數(shù)據(jù)存儲方案適用于像銀行、醫(yī)院等安全性要求較高的企業(yè),但明顯不適合資金缺乏的中小企業(yè)的使用。
方案2:共享數(shù)據(jù)庫。獨立架構,每個租戶共享同一個數(shù)據(jù)庫,但是對于每個租戶都有一個獨立的數(shù)據(jù)庫架構與之對應,這意味著各個租戶都有一套不同的數(shù)據(jù)表結構。當創(chuàng)建一個新租戶時,系統(tǒng)會相應地創(chuàng)建一套默認的表結構,同時與一個獨立的數(shù)據(jù)庫架構建立關聯(lián)關系。可在一個數(shù)據(jù)庫中存儲多個租戶的數(shù)據(jù),與獨立數(shù)據(jù)庫相比,雖然數(shù)據(jù)庫的搭建費用降低了,還有一定的數(shù)據(jù)隔離,但是存在故障時恢復數(shù)據(jù)困難和數(shù)據(jù)統(tǒng)計難度。
方案3:共享數(shù)據(jù)庫。共享架構,即所有的租戶共享一個數(shù)據(jù)庫,共用同一套數(shù)據(jù)表結構。一個數(shù)據(jù)表存儲了所有租戶的數(shù)據(jù)信息,通過一個TenantID字段來區(qū)分各個租戶的數(shù)據(jù)。這種方案是共享程度最高,隔離級別最低的數(shù)據(jù)存儲方式。這種方案又是硬件維護和購買成本最低的,每臺數(shù)據(jù)庫服務器支持的租戶最多。這種方式非常適用于大規(guī)模的中小企業(yè)的租戶。因此下面將詳細研究這種方案下的關鍵技術。
2.2 共享數(shù)據(jù)庫共享架構的多租戶模式
(1) 多租戶技術
多租戶技術是SaaS服務模式區(qū)別于傳統(tǒng)模式最本質的區(qū)別,達到SaaS模式的成熟度模型的必要條件是解決數(shù)據(jù)的隔離性,實現(xiàn)多租戶模式。在SaaS模式下建立多租戶,必須在業(yè)務表增加一個TenantID字段用來區(qū)別每個不同的租戶,保證每個租戶數(shù)據(jù)的安全。如表1所示。

表1 多租戶業(yè)務表結構
通過TenantID字段來獲得對應租戶的業(yè)務數(shù)據(jù)。當系統(tǒng)用到租戶的業(yè)務數(shù)據(jù)時,需要在每條SQL語句中增加‘TenantID = ?’ 條件進行業(yè)務數(shù)據(jù)操作。
(2) 數(shù)據(jù)擴展技術
為了滿足不同租戶的不同需求,SaaS軟件必須能夠保證對數(shù)據(jù)可擴展。多租戶模式滿足大規(guī)模租戶對數(shù)據(jù)的個性化需要,最常見的解決方案就是實現(xiàn)擴展數(shù)據(jù)的可配置。實現(xiàn)數(shù)據(jù)的可配置有以下3種常見方案。
方案1:定制字段,就是根據(jù)租戶的需要在各租戶共有的數(shù)據(jù)表上添加相應的定制字段來保存擴展數(shù)據(jù)。這種方案數(shù)據(jù)擴展非常簡單但是其擴展性非常有限,當租戶量達到一定數(shù)量,表中添加的字段就會非常多,而且每個租戶添加的字段對另外租戶是沒有任何意義的,嚴重破壞了表的結構,有些擴展字段可能為空,浪費了表空間。
方案2:預分配字段,該方法在表格中提供一定數(shù)量的預設字段,當租戶要擴展數(shù)據(jù)時,從表中選取適當?shù)念A設字段進行擴展,但是不同租戶選取同一個預設字段的含義可能也不一樣。如表2中TenantID字段區(qū)分每個租戶,除了一些固定的字段外,還提供了一些預分配字段,Ext1、Ext2、Ext3就是預分配的字段,預分配字段的使用由租戶自己預定,一般初始為字符串類型,其真實類型可以采用元數(shù)據(jù)表來進行跟蹤。

表2 預分配字段方案表結構
CIO頻道人物視窗
CIO頻道方案案例庫
大數(shù)據(jù)建設方案案例庫
電子政務建設方案案例庫
互聯(lián)集成系統(tǒng)構建方案案例庫
商務智能建設方案案例庫
系統(tǒng)集成類軟件信息研發(fā)企業(yè)名錄