999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SaaS軟件服務基于大規模定制的數據層架構研究*

2012-10-08 01:58:26羅小利吳清烈任鴻美
電信科學 2012年4期
關鍵詞:數據庫

羅小利,吳清烈,任鴻美

(東南大學電子商務系 南京211189)

1 引言

SaaS改變了傳統的軟件提供方式,將軟件以服務的方式通過互聯網提供給客戶,使得SaaS軟件服務商與客戶從售賣關系轉化為服務關系[1]。SaaS軟件服務商與客戶是一對多模式[2],所以SaaS軟件服務成功的關鍵是實現強大的多租戶,保證海量數據的高效性和安全性。

SaaS軟件服務商要實現盈利,必須把成本控制在相對較低的水平,以吸引更多的租戶。在傳統的信息化建設中,軟件提供商與客戶之間是一對一的關系,針對客戶特定的數據需求,只需要設計特定的一套應用程序和數據架構,就可以保證數據的安全性和高效性。在SaaS模式下,多租戶(multi tenancy)是SaaS模式的典型特征,其基本原理是在實現公共資源共享、數據共享的同時,保證客戶特定數據的分開[3]。因此,設計穩定安全的數據架構,使其在多租戶模式下既可以保證租戶特定數據的隔離性、安全性,又可以使租戶最大程度地共享數據架構,是SaaS應用和推廣的一個關鍵因素。

本文首先分析SaaS軟件服務在數據層應用大規模定制的必要性,針對如何處理多租戶模式下的數據安全和共享問題對3種數據架構設計方案進行分析和比較;接著討論共享數據庫、共享Schema架構下可行的個性化數據擴展方案,以滿足客戶對數據的個性化需求;最后,用案例證明SaaS軟件服務基于大規模定制的數據擴展方案的可行性。

2 SaaS軟件服務基于大規模定制的數據層研究思路

在SaaS模式下,按照軟件構件進行數據切分,租戶共享領域共性構件,對這些共性構件的存儲,比如公共的程序數據、公共配置數據等,可以在共用的存儲空間存放,而不必在每個租戶的存儲空間復制一次再進行存儲;即使是同一軟件構件產生的業務數據,客戶的某些屬性也是相同的,可以采用相同的數據結構來定義。這為SaaS軟件服務在數據存儲層應用大規模定制管理理念提供了可能性。

SaaS軟件服務商面對的是眾多客戶,每個客戶根據自己的業務需要會產生各自獨特的數據需求,所要求的數據結構也會有所不同,并且即使是同一客戶,其需求的數據結構也會隨著業務變化發生變化。這就要求SaaS軟件服務商設計滿足客戶個性化需求的動態數據結構,既可以滿足客戶特定的數據需要,又可以保證客戶業務數據的隔離[4],以實現SaaS模式的安全性、高效性。

在數據存儲層應用大規模定制,可以有效地利用存儲空間,提高數據庫的實用性和靈活性。根據以上兩點,本文按照軟件構件劃分數據,將領域共性構件的數據集中存儲在一個數據庫中,將客戶的業務數據存放在另一個數據庫中。針對客戶的業務數據,比較和分析了3種數據架構,指出它們的適用范圍及優缺點。同一軟件構件下客戶的業務數據采用統一的數據結構,然而不同租戶可能有不同的數據模型要求,需要在標準數據結構的基礎上實現擴展性,以滿足不同租戶特定的需求。然而尤其在共享數據、共享Schema數據架構下,租戶使用的是相同的數據表,一個租戶對數據結構的修改或者擴展可能會影響其他租戶對該數據庫的使用,因此需要實現動態數據擴展,既滿足租戶對數據模型特定的擴展,又不會影響其他租戶的使用,從而節約了資源,降低了存儲成本,提高了SaaS軟件服務商的市場競爭力。

3 SaaS軟件服務基于大規模定制的數據層架構設計

SaaS軟件服務商要在競爭激烈的市場環境中取得競爭優勢,應該能夠以低成本保證每個租戶方便、快捷地使用自己的數據。在標準數據結構的基礎上實現數據模型的擴展,以滿足客戶獨特的業務需求是SaaS軟件服務能否成功推廣的關鍵所在。

3.1 SaaS軟件服務基于大規模定制的數據層整體結構

SaaS軟件服務大規模定制的數據層整體結構如圖1所示。

在圖1所示的框架中,公共數據庫存放的是公共數據,即獨立于客戶的數據,是所有租戶共享的,如公共配置數據、公共的程序數據、公共服務數據等,租戶是不能修改公共數據的。根據系統構件切分數據,切分的粒度可以是從系統、模塊逐步深入切分,以實現數據存儲的解耦。在某個粒度切分開來的數據存儲的上層程序不能直接訪問該數據,只能通過接口來調用。公共數據的存儲可以是不同數據庫、不同表或者物理分開的數據庫等方式,由于上層程序代碼是相互獨立的,不能直接訪問,可實現數據存儲的完全松耦合,滿足SaaS軟件服務 “按需定制,按需付費”、服務可度量等特點。

客戶數據庫存放的是客戶的業務數據、配置數據、應用服務器及數據庫管理的程序文件。在同一系統構件下采用相同的數據結構,但可按照數據級進行區分,如客戶業務數據的屬性。租戶可以在標準數據結構的基礎上自定義需要擴展的數據,以靈活、快捷地滿足客戶的個性化數據需求。

在圖1所示的框架下,數據訪問層從業務邏輯層分離出數據訪問代碼,屏蔽不同的數據存儲方式與數據存儲層進行交互。數據訪問層通過訪問公共數據庫來獲取公共數據,但不可以修改公共數據。通過訪問客戶數據庫來獲取每個租戶特定的業務數據,可以進行更新、查找、刪除、創建等操作。

3.2 數據存儲架構選擇

SaaS模式下,多個租戶共享一個應用實例,租戶間的數據既有共享又有隔離[5],在兩者之間尋求平衡是必須考慮的一個重要因素,同時還要考慮SaaS軟件服務提供商和租戶間共同尋求的低成本、高效性因素。租戶共享的公共數據庫,不論采取何種存儲方式,均能實現數據存儲的松耦合,且客戶是不能修改公共數據的,所以在這里不再累述??蛻魯祿彀凑諗祿綦x和共享的程度可以劃分為以下3種數據架構。

(1)獨立數據庫

一個租戶對應一個專門的數據庫[6~9],如圖2所示,租戶可以最大程度地按照自己的需求設計數據結構,通過元數據的描述為每個數據庫與其對應的租戶建立聯系,是實現數據隔離最安全的數據架構。在這種數據模型下,租戶可以簡單方便地實現數據擴展,以滿足不同租戶的個性化需求。同時,數據備份也會要求使用專用的數據庫,當發生故障時,可以簡單快捷地恢復租戶的數據,客戶的私有數據不會被其他客戶意外地訪問到,安全性比較高。

這種數據架構下,一個服務器所能容納的數據庫數量會很快達到飽和,只能支持有限數量的租戶,相對其他數據架構,部署和維護成本十分高,適合對數據隔離級別要求非常高的客戶,如銀行、醫院。

(2)共享數據庫、獨立Schema

共享數據庫、獨立Schema架構實現租戶的數據庫共享,但每個租戶都有一套各自不同的數據表架構,存儲在單獨的模式中,如圖3所示,一個數據庫存儲多個租戶的信息,每個租戶均有自己的一套表,這些表被包含在同一個Schema描述的表組中。這種架構下,租戶可以相對自由地對同一Schema下的表進行新增和修改,滿足租戶特定的需求。與獨立數據庫相同,可以便捷地擴展數據模型。

在這種數據架構下,租戶的數據在一定程度上得到了較好的隔離,每個服務器可以支撐更多的租戶,硬件成本相對降低,節約了服務器資源,經濟實用性增強。但維護比較復雜,例如數據庫出錯,無論表里的數據是否損壞,需要恢復所有租戶的表,需要花費很長的時間。比較適用于租戶對安全級別要求比較高,且每個租戶的數據表不多的狀況。

(3)共享數據庫、共享Schema

共享數據庫、共享Schema是在同一個服務器上,以同一個數據庫、同一張表來存放租戶的數據,如圖4所示。這種數據架構下,一張表可以包含很多租戶的數據記錄,租戶之間通過ID來區分[10],因此共享程度最高,但數據隔離程度最低,相應的安全級別也較低。一個服務器可以最大程度地支撐租戶的數量,SaaS軟件服務商擁有最低的硬件成本和數據備份成本,經濟適用性最好。

該架構下,多個租戶共同使用一張表,租戶不能按照自己的需求隨意地修改數據結構,以避免影響其他租戶的使用,相對其他兩種架構,租戶在數據結構上擁有的自由度不高。為了滿足每個租戶的個性化需求,SaaS軟件服務商在數據擴展、配置方面比較復雜。由于很多客戶共享一張表,數據安全方面需要花費更多的成本,以保障租戶數據的安全性,不會因為系統異常而被其他租戶訪問到。與共享數據庫、獨立Schema一樣,共享Schema架構在數據維護方面比較復雜,一旦數據庫出錯,數據恢復效率比較低。這種架構比較適合租戶對安全級別要求較低,且每個租戶數據存儲量少的情況。

3.3 數據存儲架構的比較

上述3種方案中,每種數據架構都有各自的優缺點及適應范圍。表1從共享級別、隔離級別、維護級別、成本、數據擴展便利程度等方面比較了3種數據架構[11]。

表1 數據架構比較

從表1中可以看出,獨立數據庫共享級別最低,數據隔離、成本、維護級別最高,而共享數據庫、共享Schema架構則相反,共享級別最高,而數據隔離最低,安全性差。獨立數據庫可以簡單便捷地實現數據結構的擴展,以滿足客戶的個性化需求,并且當發生故障時可以相對簡單地恢復租戶的數據,易于維護。但是獨立數據庫需要花費大量硬件成本,租戶的租金比較高。共享數據庫、共享Schema架構下,很多租戶共用一個表,共享程度最高,相應地成本就比較低,具有很高的經濟效益,但是數據隔離程度最低,需要花費一定的精力避免租戶數據的交叉訪問,提高數據的安全性。

SaaS軟件服務商在選擇數據架構時要綜合考慮各種因素,如服務的客戶數量、性質、數據的安全級別要求、經濟成本以及技術風險等。

4 SaaS軟件服務基于大規模定制的數據擴展

在同一系統構件下,客戶數據既有共同的數據結構又有獨特的數據模型需求,僵化的、沒有可擴展的默認數據模型是無法滿足客戶個性化需求的。本文以共享數據庫、共享Schema架構為例,在標準數據模型的基礎上討論數據結構的可擴展性,以滿足租戶的特殊需求。

4.1 3種數據擴展方案

在共享數據庫、共享Schema架構下,多個租戶共享同一數據表,對數據結構的直接修改或者擴展會影響其他租戶的使用。在傳統系統應用中,每個客戶部署的是不同的應用案例,用戶可以定制各自的實例,增加每個客戶的擴展數據,一般主要通過定制字段、預分配字段、名稱值對這3種方案實現數據擴展[12]。

(1)定制字段

這種方案是根據客戶的個性化需求,在數據表上添加相應的列來擴展數據,是傳統應用中最簡單的解決方案。擴展的列只對特定的客戶有用,其他客戶在該列下的值均為null,是沒有實際意義的。從實際的角度出發,這種方案非常簡單,不需要處理復雜的擴展數據追蹤。但是在SaaS模式下,若每個租戶的數據定義都在同一個表上修改,會造成表中絕大多數用戶自定義字段對其他用戶沒有任何實際意義,浪費存儲空間,甚至會嚴重破壞數據表的結構。因此,這種方案并不適合SaaS模式下的多租戶特點。

(2)預分配字段

這種方案是指在數據表中預先設定一定數量的通用字段,類型可以設置為string,當用戶需要擴展業務數據時,可以使用其中的一個或者幾個字段,以滿足客戶的個性化需求。預分配的字段是沒有固定含義的,對于不同的租戶,這些字段保證的是沒有特定含義的數據,需要建立元數據表,解釋每個租戶對預分配字段的語義和實際的數據類型。

預分配字段方案在某種程度上實現了數據的擴展,是實現租戶數據擴展的一種簡單方式,但是局限性也相當明顯:預分配字段的個數必須在系統設計時就確定。設計時要綜合考慮需要多少預分配字段,若預分配字段太多,就會產生很多空閑的空間,造成數據存取空間的浪費;若預分配字段太少,則不能實現租戶的數據擴展,無法靈活滿足租戶的個性化需求。SaaS軟件服務商面對的是眾多客戶,有的客戶定制字段過多,有的客戶則較少,所以這種方案對于多租戶的SaaS軟件服務實現數據擴展是非常困難的。

(3)名稱值對

名稱值對方案是通過客戶原數據表、擴展數據表和元數據表這3張表來描述客戶的信息,不同租戶進行字段擴展時,擴展數據表將客戶業務數據表的橫向列擴展轉化成縱向的數據集,將原數據表中的每一條擴展記錄的每一個擴展字段,都保存成一條擴展數據行,并將數據表中的記錄與元數據表中的配置記錄相關聯,構成擴展數據記錄。

客戶原數據表主要存儲的是租戶共同屬性下的業務數據;擴展數據表主要存儲每個租戶擴展數據的值;元數據表主要存儲租戶擴展數據的字段名稱和存儲類型,這張表通過關鍵字聯系起來。名稱值對這種方案靈活地實現了數據的擴展,租戶可以根據自己的個性化需求,不斷地增減自定義數據。

名稱值對方案雖然數據擴展比較靈活,但數據處理時十分復雜,需要復雜的處理才能實現客戶擴展數據和原數據之間的映射,如當檢索數據時,得多次訪問元數據才能獲取所有的業務數據,大大影響了數據訪問的效率。

4.2 動態數據擴展模型

SaaS軟件服務在數據存儲層采用大規模定制管理理念,可以在滿足客戶對數據模型個性化需求的基礎上,降低成本,提高數據訪問的效率。上面3種方案均不適合SaaS軟件服務基于大規模定制的數據擴展。據此本文設計了動態數據擴展模型,用XML文檔描述租戶的擴展數據,每個租戶均對應一個XML Schema ID,以區分每個租戶的擴展數據,既滿足租戶對數據擴展的需求,又不改變原用的數據結構。當客戶需要刪除、更新擴展數據時,只需要修改自己的XML文檔即可,提高了數據操作的效率,且不會影響其他客戶的數據。動態數據結構見表2。

表2 動態數據結構

表 2 中 ,tenancy ID、Preset-param1、Preset-param2 等 存放的是租戶共有的數據類型,XML Schema ID存放的是租戶特有數據的地址。XML Schema的定義如下:

type="xs:string"/>

type="xs:string"/>

type="xs:string"/>

從XML Schema的描述可知,用戶可以自定義擴展數據個數、數據類型,XML具有數據語義的自解釋性,解析數據時非常方便[13]。XML Schema的視圖如圖5所示。

動態數據擴展模型在標準數據結構的基礎上可以靈活地實現擴展,以滿足客戶的個性化數據需求,并且所占的存儲空間相對較少,數據查詢、更新、刪除等操作非常簡單、高效,提高了數據訪問的效率。利用XML數據類型來存儲客戶的自定義數據,對擴展數據的類型、個數都沒有限制,客戶可以根據自己的需求任意地擴展數據,并且不會對其他客戶的數據產生影響,滿足SaaS模式的多租戶特征。因此,可以借助動態數據模型來實現SaaS軟件服務基于大規模定制的數據擴展。

5 SaaS軟件服務基于大規模定制的數據擴展案例

為驗證動態數據擴展模型的可行性,以SaaS軟件服務商向學校提供考試系統為例,討論數據的存儲結構及對數據的主要操作。

5.1 考試系統數據存儲結構

在共享數據庫、共享Schema架構下,很多租戶共用一張表,其動態數據擴展見表3。

學校代碼為001的租戶對數據有個性化需求,需要存儲的信息為:考試地點,數據類型為string;成績上升幅度,數據類型為float。學校代碼為001,學生學號為100的租戶其對應的XML為:

/**201.xml**/

表3 考試系統動態數據擴展:TbUserInfo

學校代碼為002的租戶對數據有個性化需求,需要存儲的信息為:數學老師姓名,數據類型為string;職稱,數據類型為string;所屬機構,數據類型為string。學校代碼為002,學生學號為101的租戶其對應的XML為:

/**202.xml**/

5.2 數據操作

對數據的主要操作有查詢、更新、添加新屬性、刪除,學校代碼為001,學生學號為100這條記錄擴展部分的操作方法如下。

(1)數據查詢

查詢擴展數據時,可以通過以下方式:

SELECT XmlInfo.value ('/Root/ExtendParams/ExtendParam/Name',’string’)AS Name,

XmlInfo.value ('/Root/ExtendParams/ExtendParam/Value',’string’)AS Value

FROM TbUserInfo

WHERE SchoolID=001 and StudentID=100;

查詢得到的結果見表4。

表4 查詢結果

(2)數據新增

當客戶需要添加新的數據類型時,可以通過declare語句完成,如下所示:

DECLARE@XmlInfo as XML

SET@XmlInfo=’

由上可知,客戶可以根據自己的需求隨意擴展字段。

若新增一條數據記錄,則通過insert語句完成。

INSERT INTO TbUserInfo (SchoolID,SchoolName,StudentID,StudentName,Course,Grade,XmlInfo)VALUES(004,‘南京航空航天大學 ’,103,‘劉 一 ’,‘會 計 ’,92,@XmlInfo);

(3)數據修改

修改擴展數據某個屬性下的值時,通過update語句完成。

UPDATE TbUserInfo

SET XmlInfo.modify('replace value of

(/Root/ExtendParams/ExtendParam[Name="考試地點 "]/Value/text())with"教1-101"')

WHERE SchoolID=001 AND StudentID=100;

該過程將SchoolID=001 AND StudentID=100的數據的擴展文件中的Name為 “考試地點”的ExtendParam中的Value 值(原來值為:“五教 301”)變換為“教 1-101”。

(4)數據刪除

當刪除一整條數據記錄時,操作如下:

DELETE FROM TbUserInfo WHERE SchoolID=001 AND StudentID=100;

刪除擴展數據某一個屬性時,通過update語句完成。

UPDATE TbUserInfo

SET XmlInfo.modify ('delete/Root/ExtendParams/ExtendParam[1]')

WHERE SchoolID=001 AND StudentID=100;

當擴展數據類型及數據更新時,需要對其驗證,使其滿足XML Schema的定義。

從該案例可以看出,動態數據擴展模型比定制列、預分配字段、名稱值對等數據擴展方案更加靈活,所占的存儲空間相對較少,并且數據操作簡單、快捷,符合大規模定制的管理理念。借助這種模型可以實現SaaS的原數據表和擴展數據的集成。

6 結束語

本文首先根據系統構件把存儲數據分為公共數據和客戶數據,設計了SaaS軟件服務基于大規模定制的數據層架構。針對客戶數據,討論了3種數據存儲架構的優缺點及適用范圍。以共享數據庫、共享Schema架構為例,按照大規模定制的管理理念,SaaS軟件服務商要滿足客戶的個性化需求,且降低成本、提供數據操作的效率,本文提出了動態數據擴展模型以實現數據擴展問題,適合SaaS模式的多租戶特征。

1 Chong F,Carraro G.Architecture strategies for catching the long tail.Microsoft Corporation,2006

2 Chong F,Carraro G,Wolter R.Multi-tenant data architecture.http://msdn.microsoft.com/en-us/library/aa479086.aspx

3 Ralph Mietzner,AndreasMetzger,Frank Leymann,etal.Variability modeling to support customization and deployment of multi-tenant-aware software as a service applications.Proceeding of the 2009 ICSE Workshop on Principles of Engineering Service Oriented Systems,2009

4 Aulbach S,Grust T,Jacobs D,et al.Multi-tenant database for software asaservice:schema-mapping techniques.SIGMOD,2008(7):9~12

5 Chong F,Carraro G,Wolter R.Multi-tenant data architecture.http://msdn.Microsoft.com/errus/library/aa479363.aspx,2006

6 Gao Bo,Guo Changjie,Wang Zhihu,et al.Devlop and deplop multi-tenant web-delivered solutions using IBM middlleware:part 3:resource sharing,isolation and customization in the single instance multi-tenant application.http://www.ibm.com/developworks/cn,2009

7 唐君.基于SaaS的中小企業管理軟件實現.復旦大學碩士學位論文,2008

8 鄧偉華.SaaS應用的數據模型研究與設計.電腦編程技巧與維護,2009(8)

9 Chong F,Carraro G.抓住市場的長尾.北京:中信出版社,2006

10 Lin Huiping,Li Weiping,Wu Si.A service in education:SOA-based credit bank system, computer systems and applications.Computer Systems&Applications,2009,18(6):1~5

11 陸洪潮.SaaS模式的ERP系統的研究.武漢理工大學碩士學位論文,2009

12 杜佳,溫浩宇,楊朝君.SaaS數據擴展模型研究.情報雜志,2010(29):188~191

13 Rohit Khare,Adem Pifkin.Special Feature:XML-a door to automated Web application.IEEE Internet Computing,1997,4(1):78~80

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 人妻一区二区三区无码精品一区| 国产精品永久久久久| 久草视频中文| 国产主播一区二区三区| 亚洲欧美日本国产综合在线 | 国产女人18水真多毛片18精品| 国产精品第| 女高中生自慰污污网站| 亚洲无码高清一区二区| 在线欧美一区| 一区二区三区精品视频在线观看| 午夜一级做a爰片久久毛片| 国产精品成人免费视频99| 丰满少妇αⅴ无码区| 91精品啪在线观看国产91九色| 在线观看无码a∨| 欧美综合区自拍亚洲综合绿色| 国产精品青青| 亚洲精品欧美日本中文字幕| 久久综合色播五月男人的天堂| 国产人人乐人人爱| 一本视频精品中文字幕| 亚洲成AV人手机在线观看网站| 日韩一区二区三免费高清| 无码福利日韩神码福利片| 国产91蝌蚪窝| 久久这里只有精品免费| 亚洲一区免费看| 欧美第九页| 在线观看亚洲国产| 日韩欧美网址| 一本大道香蕉久中文在线播放| 91在线精品麻豆欧美在线| 92午夜福利影院一区二区三区| 国产91九色在线播放| 亚洲视频色图| 亚洲国产中文精品va在线播放| 欧美成a人片在线观看| 午夜人性色福利无码视频在线观看| 国产激爽爽爽大片在线观看| 国产91导航| 看看一级毛片| 国产91导航| 人妻中文字幕无码久久一区| 五月婷婷激情四射| 5555国产在线观看| 国产精品偷伦视频免费观看国产| 亚洲国产黄色| 国产流白浆视频| 国产天天射| 71pao成人国产永久免费视频 | 91精品久久久无码中文字幕vr| 欧美另类第一页| 免费在线成人网| 人妻免费无码不卡视频| 五月婷婷精品| 久久青草精品一区二区三区| 九色91在线视频| 久久动漫精品| 精品人妻一区无码视频| 找国产毛片看| 一级一毛片a级毛片| 亚卅精品无码久久毛片乌克兰| a亚洲视频| 亚洲视频影院| 中文成人无码国产亚洲| 丁香六月综合网| 国产麻豆精品手机在线观看| 亚洲av无码片一区二区三区| 欧美成人国产| 亚洲精品色AV无码看| 四虎影视国产精品| 国产中文在线亚洲精品官网| 国产主播福利在线观看| 高清无码手机在线观看| 91麻豆国产精品91久久久| 亚洲欧美一级一级a| 欧美日韩中文国产va另类| 免费a在线观看播放| 黄色片中文字幕| 久久久精品国产亚洲AV日韩| 亚洲视屏在线观看|