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

SaaS多租戶數據管理及實現策略

2016-05-30 05:36:46殷偉鳳
軟件工程 2016年1期

殷偉鳳

摘 要:云計算是通過互聯網以服務的形式為客戶提供企業級計算資源的技術。最普遍使用的服務是軟件即服務(SaaS)。許多SaaS提供者利用多租戶模式來托管應用。多租戶是一種架構方法,軟件應用程序的單實例服務多個租戶,因此多租戶設計關鍵要解決的是租戶數據的共享與隔離。文章論述了多租戶架構中數據存儲管理的三種方式,詳細描述了共享表時多租戶數據庫的具體實現策略,指出了各種模式映射技術的優缺點,最后給出了將來的研究目標。

關鍵詞:多租戶;模式映射技術;軟件即服務;數據管理

中圖分類號:TP391 文獻標識碼:A

1 引言(Introduction)

云計算已經成為最重要的計算技術。云計算是一個能夠方便地按需對可配置計算資源(例如網絡、服務器、存儲、應用程序和服務)的共享池進行網絡訪問的模型[1]。目前在云計算范式中最重要的服務是軟件即服務(SaaS),SaaS是軟件的一種新型的云計算服務交付模式,可通過互聯網以“按需服務”的形式為多個用戶提供應用程序。企業通過訂購SaaS服務,無需購買和維護自己的IT設施就可使用各類IT服務,減少了軟硬件、網絡、系統維護的費用。而對于服務提供商,則通過發揮SaaS的規模效應來降低綜合使用成本。如Saleforce.com、Goole.com、Alisoft.com等都是SaaS應用的典型成功案例。SaaS應用程序最重要的需求是多租戶的支持[2],為了最大化SaaS的規模效應,一般采用的都是多個租戶共享一個運行實例的架構(Multi-Tenant架構,即多租戶架構)。

多租戶是SAAS業務模型領域一種較新的軟件架構,在此架構模式中,允許多個租戶共享硬件資源以及應用程序和數據庫,并可根據租戶需求配置應用程序[3]。可配置性是多租戶模式的重要特征。在多租戶應用中,所有的租戶都使用同一個數據庫實例,因此必須確保每個租戶只能訪問它們各自的數據,因此數據隔離成為多租戶應用中最為關鍵的問題[4]。

2 多租戶數據存儲方案(Data storage schema for

muti-tenant)

SaaS區別于傳統技術的重要差別就是多租戶模式,多租戶架構是SaaS應用的基本特性,也是實現SaaS規模效應的基本要素。多租戶就是多個租戶共用一個實例,租戶的數據既有隔離又有共享,因此多租戶設計的關鍵是如何解決數據存儲問題。

2.1 多租戶數據存儲方案

目前管理多租戶數據主要有三種方法[5]:獨立數據庫、共享數據庫和獨立數據模式、共享數據庫和共享數據模式。

獨立數據庫方式是指一個租戶一個數據庫,如圖1所示,這是進行數據隔離最簡單的方法,該方案用戶數據隔離級別最高,安全性最好,但成本也高。該方案的優點是:為不同的租戶提供獨立的數據庫,有助于簡化數據模型的擴展設計,滿足不同租戶的獨特需求;如果出現故障,恢復數據比較簡單。該方案的缺點是:增大了數據庫的安裝數量,隨之帶來維護成本和購置成本的增加。

圖1 獨立數據庫

Fig.1 Separate database

共享數據庫和獨立數據模式是指多個或所有租戶共享數據庫,但一個租戶一個數據模式。如圖2所示。該方案的優點是:為安全性要求較高的租戶提供了一定程度的邏輯數據隔離;每個數據庫可以支持更多的租戶數量。缺點是:如果出現故障,數據恢復比較困難,因為恢復數據庫將牽扯到其他租戶的數據;如果需要跨租戶統計數據,存在一定困難。

圖2 共享數據庫,獨立模式

Fig.2 Shared database,separate schema

共享數據庫和共享數據模式是指租戶共享同一個數據庫,同一個模式,但在表中通過租戶ID區分租戶的數據,如圖3所示。這是共享程度最高、隔離級別最低的模式。該方案的優點是:維護和購置成本最低,允許每個數據庫支持的租戶數量最多。缺點是:隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量;數據備份和恢復最困難,需要逐表逐條備份和還原。

圖3 共享數據庫,共享模式

Fig.3 Shared database,shared schema

2.2 三種方案的比較及選擇

從隔離和共享兩個相反的方向比較,依次是獨立數據庫、共享數據庫和獨立數據庫、共享數據庫和共享數據模式,三種方案比較如圖4所示,三種方法都有各自的優缺點。選用時可以從經濟性、安全性、租戶以及技能等因素去考慮。

圖4 三種數據存儲模式比較

Fig.4 Compare for three kinds of dada storage schema

因為開發共享結構相對比較復雜,在初始開發時需比使用獨立方法設計應用程序付出更大的開發工作,但每個服務器可支持更多的租戶,持續的運營成本更低。因此如果無法為構建一個共享模式應用提供足夠的開發支持或需要盡快使應用上市而不能進行大規模開發,那么必須更多的考慮獨立的方法。

如果應用程序存儲了敏感的租戶數據,客戶都會對安全性有較高的預期,需要提供強大的數據安全性保障服務水平協議(SLA)。通常依靠物理隔離可以提供較好的安全級別。使用共享方法存儲數據也可以提供強大的數據安全,但需要使用更復雜的設計模式。

服務的租戶數量、屬性和需求也是確定不同方式數據架構的因素。租戶越多越要多考慮共享方法。如果各租戶需存儲大量的數據,獨立數據庫方法可能會更好。需要支持每個租戶的并發終端用戶數量越大,獨立方法將越適合滿足終端用戶的需求。如果希望為每個租戶提供增值服務,如每個租戶的備份和恢復能力,這樣的服務通過獨立的方法更容易提供。

設計單實例多租戶架構仍然是很新的技能,缺乏現成的專業技能。如果設計師和職員沒有足夠的構建SaaS應用的經驗,他們需要獲得必要的知識,或者必須雇傭有經驗的人員。在某些情況下,獨立方法比共享方法可更多地利用傳統軟件開發的現有知識。

3 多租戶數據庫實現(Realizing multi-tenant

database)

與上述三種數據存儲管理相對應的有三種實現多租戶數據庫的方法[6]:共享主機、共享進程和共享表。

在共享機器的方法中,每個客戶都有自己的數據庫進程并且多個客戶共享同一個主機。此方法無需修改數據庫的實現,基本上不會降低客戶隔離度。但該方法不是池式內存,每個數據庫在每個應用服務器上都需要有自己的連接池,套接字無法在客戶間共享。

在共享進程方法中,每個客戶都有自己的表并且多個客戶共享同一個數據庫進程。此方法更有利于池式內存,可方便進行每個服務器的客戶數擴展。客戶間可以共享連接池。

共享表方法對于池式資源是最合適的。擴展能力僅受限于數據庫支持的行的數目,比共享進程方法要提高幾個數量級。客戶能共享連接池,可以成批執行管理操作。但該方法由于在磁盤上的文件是來自多個租戶的混合數據,遷移比較困難。另外混合數據分布在許多頁會影響訪問客戶數據的性能,共享連接池和數據使安全性成為最關鍵的問題。

為了實現多租戶,大多數托管服務使用查詢變換把應用程序中的多個單租戶邏輯模式映射到數據庫中一個多租戶物理模式。這種方法會降低服務器的性能,改進的方法是在租戶間共享表,但這種技術可能會影響租戶擴展應用程序的能力。最靈活的解決方案是將邏輯表映射到固定的通用結構,如通用表和透視表。

實現共享表的多租戶數據庫可采用多種存儲模型,這些模型稱為模式映射技術[7],主要有基本布局、私有表布局、擴展表布局以及通用表布局、透視表布局、Chunk表布局等通用結構。

(1)基本布局

實現多租戶的最基本的技術是每個表增加一個租戶ID列(Tenant),所有的租戶共享此表。這種方法是從服務提供者的角度而不是租戶角度來看待數據,提供了較好的合并但不具有擴展性,傳統Web應用程序大都采用此方法。

(2)私有表布局

支持擴展性最基本的方法是每個租戶設置各自的私有表。在此方法中,查詢轉換層只需要重命名表名,非常簡單。此方法每個租戶都有不同的業務需求,需要有大量的表來滿足每個租戶的需求,因此該技術適用于較少數量的租戶。

(3)擴展表布局

可以結合上述兩種方法,擴展成不同的表。將源表分成基表和擴展表兩部分,多個租戶可以使用同樣的基表,擴展表和基表都需要一個Tenant列,還要增加一個Row列。這種方法比私有表提供了更好的合并性,但表的數量也會與租戶數成比例增加。

(4)通用表布局

通用結構允許創建任意形狀任意數量的表。通用表是一個有Tenant列、table列和許多通用數據列的通用結構表。數據列設置成一個靈活的類型,如VARCHAR類型,其他的類型可轉換為該類型。每個租戶的每個邏輯源表的第n列映射到通用表的第n個數據列,因此不同的租戶可以以不同的方式擴展同一個表。該種方法的缺點是數據表較寬,數據庫必須要處理許多空值,另外對索引支持不是太方便。

(5)透視表布局

透視表是一個可選的通用結構,在透視表中,邏輯源表中的每一行的每個字段都對應著一行。除了上述描述的Tenant、Table和Row列,透視表還有一個Col列指明了這一行所表示的是源表中的哪個字段以及一個數據列表示出那個字段的值。數據列可以給定一個靈活的類型,如VARCHAR,其他類型也可以轉換為此類型。此方法無需處理許多空值,可以較好地支持索引,但增加了元數據,增加了運行開銷,連接操作較費時。

(6)Chunk表布局

第三類通用表稱之為Chunk表。Chunk表類似于透視表,但有一組不同類型的數據列,col列被Chunk列取代,一個邏輯源表被劃分為多組列,每組設置一個chunk_ID,將一組列映射到一個Chunk表中。相比透視表,該方法減少了存儲元數據,降低了重構邏輯源表的開銷。

(7)Chunk Folding

這是一種將源表垂直劃分成塊放入不同物理多租戶表的一種技術,在需要的時候可進行連接。該技術將最常使用的租戶列映射到傳統表中,而其他列放在Chunk表中,數據庫的“元數據開銷”分攤給了專用的傳統表和一組稱為CHunk表的通用結構。應用Chunk Folding方法,參考文獻[8]中提出了基于Chunk Folding的自適應多租戶緩存管理機制,該機制以租戶的SLA需求作為驅動,依據租戶當前訪問模式,動態生成緩存單元集并計算緩存單元集的I/O效益,通過貪婪算法來選擇緩存單元集,使得租戶SLA得到滿足的同時最小化緩存資源的消耗。

4 XML支持實現多租戶數據庫(XML for realizing

multi-tenant database)

XML和關系數據庫是兩種完全不同的技術集,XML支持層次數據模型,而數據庫支持關系數據模型。關系數據庫的缺點是在數據庫層缺乏對租戶概念的支持,因此,必須在通用表的行存儲租戶ID。在參考文獻[9]中提出了一種針對多租戶應用的混合模式共享技術,該方法由兩張表組成,一張用于租戶的通用內容,如ID、名稱、聯系方式等,如表1所示。

表1 通用表

Tab.1 Universal table

Manager ID

INT Username

VARCHAR Full Name

VARCHAR Contact

INT County ID

INT

1 Ramachan Ramachandra Nayak 0831456721 2

2 Ashutosh AshutoshAgarwal 084178654 1

3 priya123 Priyanka Choudary 0832567842 3

另一張擴展表針對每一個租戶。擴展表由兩行組成:一是租戶的ID,另一行包含了一個描述某一個租戶的其他信息的XML文檔,如表2所示。每個租戶都有其存儲空間存儲私有數據。該方法采用了將擴展表與XML文檔相結合的基本思想。

表2 XML擴展表

Tab.2 XML extension table

Manager ID Extension XML

1

120

主站蜘蛛池模板: 久久国产精品麻豆系列| 国产精品一区在线麻豆| 婷婷色狠狠干| 不卡午夜视频| 亚洲日韩AV无码一区二区三区人| 欧美精品在线观看视频| 在线另类稀缺国产呦| 久久99国产精品成人欧美| 国产喷水视频| 国产成人永久免费视频| 99在线视频网站| 中文字幕2区| 天天摸天天操免费播放小视频| www.国产福利| 亚洲精品无码久久毛片波多野吉| 丁香五月激情图片| 亚洲欧美不卡| 一区二区欧美日韩高清免费| a级毛片视频免费观看| 波多野结衣中文字幕一区二区 | 亚洲国产日韩一区| 伊人久久久久久久久久| 97超碰精品成人国产| 71pao成人国产永久免费视频 | 91福利免费视频| 亚洲制服丝袜第一页| AV熟女乱| 四虎在线观看视频高清无码| 久久性妇女精品免费| 亚洲国产清纯| a国产精品| 免费啪啪网址| 婷婷六月天激情| 亚洲日本中文综合在线| 19国产精品麻豆免费观看| 激情综合网址| 国产剧情国内精品原创| 欧美人在线一区二区三区| 全免费a级毛片免费看不卡| 国产小视频a在线观看| 激情成人综合网| 久青草免费在线视频| 久久国产成人精品国产成人亚洲| 免费jizz在线播放| 在线免费亚洲无码视频| 国产视频欧美| 色哟哟国产成人精品| 免费欧美一级| 国产精品视频白浆免费视频| 欧美一区二区人人喊爽| 亚洲无码四虎黄色网站| 国产亚洲精久久久久久久91| 天天综合网亚洲网站| 亚洲天堂日本| 国产丰满成熟女性性满足视频| 日韩A∨精品日韩精品无码| 黄网站欧美内射| 国产69精品久久久久妇女| 91麻豆国产精品91久久久| 999精品在线视频| 91欧洲国产日韩在线人成| 国产一区二区三区夜色| 亚洲无码高清一区| 欧美成人手机在线视频| 天堂av综合网| 91无码人妻精品一区二区蜜桃| 91色爱欧美精品www| 毛片免费在线视频| 72种姿势欧美久久久大黄蕉| 国产日韩精品欧美一区灰| 日韩乱码免费一区二区三区| 最近最新中文字幕在线第一页| 国产三级韩国三级理| 欧美成人亚洲综合精品欧美激情| 亚洲成人77777| 强奷白丝美女在线观看| 日韩毛片免费| 中文字幕无码电影| 无码人妻免费| 久久精品国产一区二区小说| 亚洲一区二区三区麻豆| yjizz国产在线视频网|