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

一種面向SaaS應用的差異數據存儲方法

2016-05-09 07:18:48歐陽凱周敬利
計算機應用與軟件 2016年4期
關鍵詞:定義差異

蔡 婷 蔡 宇 歐陽凱 周敬利

一種面向SaaS應用的差異數據存儲方法

蔡 婷1蔡 宇1歐陽凱2周敬利2

1(重慶郵電大學移通學院 重慶 401520)

2(華中科技大學計算機學院 湖北 武漢 430074)

為解決SaaS(Software as a Service)應用中多租戶重復定制造成的數據冗余存儲問題,提出一種基于元數據的差異數據存儲方法。該方案研究傳統元數據驅動的存儲模式,通過對元數據的分類定義,給出差異存儲方案的形式化語義和數據存儲策略。最后分別對增刪改查操作提出該方案的數據訪問算法。計算表明,差異存儲方法在冗余減少的概率分析下顯示出較高的存儲空間利用效率,有效地減少了租戶的冗余存儲。同時性能測試結果還反映出該方案具有較好的數據訪問性能。

SaaS 多租戶 元數據 差異存儲 方法

0 引 言

在以互聯、開放、共享和協作為主旋律的互聯網計算環境下,軟件呈現出網絡化、服務化、虛擬化和集成化的發展趨勢。SaaS作為云計算環境下一種新興的服務供給模式誕生了[1]。SaaS是指可共享的Web應用的部署、運營和使用模式,它強調將應用軟件統一部署在運營端,用戶則通過網絡以按需付費等商業模式來使用應用軟件,并且由運營端統一對應用軟件需要的計算、存儲、帶寬資源進行分配管理和優化[2]。

多租戶是SaaS模式的核心概念之一。SaaS最大的特征之一就是單實例多租賃,即一個應用可以被多個租戶租賃,并且支持租戶的按需定制[3]。然而,隨著SaaS應用中租戶的數目及定制數據量呈海量增長,給SaaS系統的數據存儲帶來了巨大的挑戰。一般來說,SaaS系統中多租戶數據存儲服務應該同時滿足以下兩個技術指標:

1) 高效的存儲空間利用率;

2) 良好的數據訪問性能。

然而,以上兩點可能會相互制約。例如空間利用率高的數據存儲模式,存儲空間固然小,但系統性能可能會因此受到影響。圍繞SaaS應用中多租戶的數據存儲問題,國內外學者開展了大量研究。例如:定制追加字段法[4]、預先分配字段法[5]、擴展關聯表[5]、數據透視表[6]、Chunk Folding[4,6]、XML字段拓展技術[7]、純元數據技術[8-10]等。總結當前學術界的研究成果,主流的數據存儲方式可以劃分為兩類:(1) 基于鍵值對方式的數據存儲方式;(2) 基于元數據驅動的數據存儲模式。其中,元數據技術是互聯網分布式系統實現SaaS模式下多租戶定制的關鍵,定制過程中通過字段元數據表明確租戶和定義字段間的映射關系。本文在基于元數據存儲模式的基礎上展開研究,分析了SaaS應用中在進行多租戶的定制行為時出現的不同租戶對于相同數據對象重復定制從而導致的存儲空間浪費問題,提出一種面向SaaS應用的差異數據存儲方法。最后通過數學計算和實驗測試驗證了該策略的存儲效率和訪問性能。

1 問題提出

元數據驅動的支持SaaS模式的多租戶定制系統能夠給用戶提供良好的數據定制服務[11]。基于元數據的數據存儲設計不同于傳統的靜態數據庫存放方式,它采用運行時動態生成租戶數據完整視圖的方式,很好地支持了大量租戶靈活多變的數據結構,從而極大地方便了用戶的定制服務。然而,在租戶的定制過程中,相同的數據對象,可以被不同的租戶定制。Saas應用模式的這種多租戶的特性極易導致定制對象大量的重復存儲,造成存儲空間的過度浪費。表1為借鑒Force.com[6]的元數據設計方式描述的一個多租戶數據定制實例。其中,TID表示租戶標識,ObjID表示租戶的定制對象,FieldID用來唯一標識定制對象的屬性字段,Val則代表租戶對應于某個屬性的具體值。

表1 多租戶數據定制實例

表1描述了用來存儲租戶定制對象的元數據表。從存儲結果可以看到T1、T2、T3等多個租戶同時定制了相同的對象OBJECT,并且每個租戶對于OBJECT對象的三個屬性信息(a,b,c)都進行了完全存儲。可以預測,隨著SaaS應用中租戶數量的激烈增長,這種傳統的基于元數據的存儲模式必將導致定制對象的大量重復存儲,加大了存儲成本開銷。為解決該問題,本文分析并提出了基于元數據的差異數據存儲模式,同時給出了存儲方案的數學定義與算法設計。

2 元數據差異存儲模式

2.1 元數據分類與定義

為描述和定義差異數據存儲模式,本文對元數據進行了進一步分類,其語義描述如下:

定義1 基本元數據 基本元數據是指由軟件提供商所提供的元數據,其還包括在該元數據基礎上共享生成的其他定義和配置數據對象。設mi為SaaS應用中某個對象對應的基本元數據,集合Basic_Metadata為系統中所有對象的基本元數據集合,則:Basic_Metadata={m1,m2,…,mi,…,mn}(1≤i≤n)。

定義2 擴展元數據 擴展元數據主要是指SaaS運營商和租戶所設置的可共享元數據對象。設ej為第三方或租戶所配置的元數據對象,則擴展元數據對象集合Ex_Metadata可以表示為:Ex_Metadata={e1,e2,…,ej,…,en}(1≤j≤n)。

定義3 租戶元數據 租戶元數據是指租戶自己的個性化配置對應的元數據對象,它的基礎是基本元數據和擴展元數據。設tk是SaaS中某定制租戶自己的個性化配置對象,那么所有租戶的元數據對象集合Te_Metadata可表示成:Te_Metadata={t1,t2,…,tk,…,tn}(1≤k≤n)。

在對元數據進行分類的基礎上,通過分析不同的元數據類型及其屬性,本文提出基本元數據、擴展元數據以及租戶元數據之間存在著繼承關系。如圖1描述了SaaS應用中的租戶定制與元數據之間的關系。

圖1 滿足繼承關系的租戶定制

定義4 元數據關系 三類元數據間存在如下繼承關系:Ex_Metadata可以繼承Basic_Metadata集合中的對象mi,Te_Metadata則可以同時繼承Ex_Metadata的集合對象ej以及Basic_Metadata的集合對象mi。因此,在這種對元數據進行分類的存儲模式下,租戶的定制相當靈活,可以根據Ex_Metadata、Ex_Metadata、Te_Metadata三者中任一個集合數據完成相應的定制配置。

多租戶數據模式的個性化定制,允許租戶在應用中根據業務需求修改數據庫建模專家預設定的數據模式。即由開發商提供基礎公共數據模式模版,租戶在模版上定制個性化需求的數據模式實例[1]。結合前面的定義和分析,本文提出將SaaS模式下的應用程序配置抽象成基本定制模板。

定義5 基本元數據模板

Basic_Template= {mi,ej|mi∈Basic_Metadata,ej∈

Ex_Metadata,1≤i≤n,1≤j≤n}

基本元數據模板中的對象組成主要由兩方面構成,基本元數據對象mi以及擴展元數據對象ej。并且在SaaS應用中,mi、ej、tk共同決定了每個租戶對應的定制元數據,則SaaS系統的租戶定制差異數據就可以表示成由基本元數據模板差異和租戶自己定義的元數據差異所組成的集合,定義如下:

定義6 差異數據

diff_Metadata={diff_M,diff_E,tk}

其中,diff_M表示租戶間關于基本元數據的定制差異數據,diff_E表示租戶關于擴展元數據的定制差異數據,tk表示租戶自己定義的元數據。本文不考慮租戶自定義的個性化定制差異,后面將主要針對基本模板的定制差異數據研究相關的存儲策略。

2.2 差異數據存儲策略

在傳統的基于元數據驅動的數據存儲方式[8]中,SaaS模式下的定制租戶必須存儲定制對象的所有屬性。這種存儲設計造成重復對象、相同屬性的大量冗余存儲,浪費了大量寶貴的存儲空間。為此,結合前面的差異元數據理論,本文提出一種面向SaaS應用的差異數據存儲策略。該方案相比傳統的元數據存儲模式減少了租戶在定制過程中的存儲數據量,新方案中定制租戶只需要存儲定制對象的部分差異屬性,從而提高了存儲空間利用效率。

在差異數據存儲方法中,第一個租戶要求完整存儲定制對象的全部屬性。根據差異存儲設計,如果要插入一條定制字段數據到元數據表中,要先比較該記錄是否為差異數據,即比較兩個相鄰租戶對于相同的定制對象的字段屬性值是否相等。算法1給出了差異數據存儲方法的過程描述。

算法1 差異數據存儲過程

輸入:租戶標識TID,所屬對象ObjID,字段標識FieldID,字段對應的屬性值Val

輸出:差異數據存儲表(diff_metadata table)

S1:定制差異表初始狀態為空;

S2:輸入待增加的租戶Ti的定制信息:

Ti的TID、ObjID、FieldID和Val;

S3:在差異存儲表中檢索相鄰租戶Ti-1的定制信息:

Ti-1的TID、ObjID、FieldID和Val;

S4:比較S2和S3步驟中的對應字段的屬性值ValTi-1與ValTi是否相等;

S5:如果相等,則表示該字段為差異值,將該信息存入差異表;

如果不相等,則表示該字段不是差異值,不寫入。

示例1 如表1所示,假設參與定制的租戶是T1、T2、T3,定制對象有3個屬性,分別為0、1、2 ,ai表示租戶Ti對應于屬性0的值(1≤i≤3),bi表示租戶Ti對應于屬性1的值(1≤i≤3),ci表示租戶Ti對應于屬性2的值(1≤i≤3)。利用差異數據存儲方法進行租戶的定制存儲。

表2為按照算法1存儲的多租戶數據定制實例表。對比表1可以看出,差異存儲方法比傳統的元數據存儲方法減少了租戶T2、T3的定制數據存儲量,對于一個具有m個租戶的SaaS應用,其共同定制具有n個屬性的某相同對象,采用差異數據存儲方式需要存儲的定制數據量要小于傳統元數據方案的m×n的存儲量級。

表2 采用差異數據存儲方法的租戶定制表

3 模型的數據訪問

前面針對元數據驅動的傳統存儲模型存儲利用率低的缺點進行了改進,提出了基于元數據分類的多租戶差異存儲解決方案。接下來需要討論的便是基于新存儲方案的數據訪問問題。在差異存儲模式下,查詢某個租戶的指定字段定制信息時,根據租戶有序排列這一前提,能夠快速得到該字段的上一個租戶定制信息,進而計算出該租戶的相關字段信息。對數據的訪問分為增刪改查,下面分別給出四種數據訪問方式的算法偽代碼描述。

首先需要進行一些形式化定義和基本約定:

diff_Table表示差異表;

beforeTID表示當前租戶Ti的上一個租戶Ti-1;

fieldValue表示查詢結果;

beforeValue表示上一個租戶Ti-1該字段的值。

算法2 SELECT

輸入:租戶標識tID,對象標識objID,字段標識fieldID

輸出:字段值fieldValue

S1: createConnection(diff_Table);

//連接數據庫

S2: tID,objID,fieldID→getValue()

//獲取查詢租戶的字段信息

S3: if getValue() is not null

getValue()→fieldValue;

return fieldValue;

S4: if fieldValue is null

beforeTID(beforeValue)→beforeValue;

S5: while beforeValue is null

//繼續前找

getBeforeTenant(beforeTID)→beforeTID;

getValue(before)→beforeValue;

S6: beforeValue→fieldValue;

S7: return fieldValue.

算法3 INSERT

輸入:租戶標識tID,對象標識objID,字段標識fieldID字段值fieldValue

輸出:更新表

S1: createConnection(diff_Table);

S2: 獲取上個租戶相同字段的信息:

getBeforeTenant(tID)→beforeTID

getValue(beforeTID,objID,fieldID)→beforeValue

S3: while beforeValue is null

getBeforeTenant(beforeTID)→beforeTID;

getValue(before)→beforeValue;

S4: if beforeValue=fieldValue

return;

S5: else

inserttID,objID,fieldID,fieldValue;

算法4 UPDATE

輸入:租戶標識tID,對象標識objID,字段標識fieldID字段值fieldValue

輸出:更新表

S1: createConnection(diff_Table);

S2: 獲取當前待修改租戶Ti的字段信息:

tID,objID,fieldID

S3:查詢下一個租戶Ti+1相同字段的信息:objID,fieldID

S4: if Ti+1(objID,fieldID) is exist

updateTi(tID,objID,fieldID);

S5: else

Ti(tID,objID,fieldID)→diff_table;

updateTi(tID,objID,fieldID);

算法5 DELETE

輸入:租戶標識tID,對象標識objID,字段標識fieldID字段值fieldValue

輸出:更新表

S1: createConnection(diff_Table)→con;

S2: 獲取當前待刪除租戶Ti的字段信息:

tID,objID,fieldID

S3: 查詢下一個租戶Ti+1相同字段的信息:objID,fieldID

S4: if Ti+1(objID,fieldID) is exist

deleteTi(tID,objID,fieldID);

S5: else

Ti(tID,objID,fieldID)→diff_table;

deleteTi(tID,objID,fieldID);

4 試驗結果及分析

4.1 存儲空間利用效率實驗

在差異數據存儲模式中,由于定制租戶只存儲了定制對象的部分屬性數據,故相比傳統元數據的完全存儲方式要具有更高效的存儲空間利用率。為進一步量化差異存儲方案的冗余減少量,本文將采用數學理論對該方案的冗余存儲空間減少概率進行分析,從而評估差異數據存儲方法的存儲空間利用效率。在差異存儲方法中,一條定制數據存儲與否只取決于差異是否存在這兩種狀態,其符合0-1分布特性,如果將配置n個屬性字段看成n次貝努里試驗,則它們符合二項分布特性,故實驗采用二項分布來估算差異數據的存儲空間減少概率。

實驗參數為某SaaS應用中,一共有t個租戶要進行定制服務。該系統中由第三方運營商提供的定制模板具有m個定制對象,每個租戶在定制一個具體的對象時都要設置n個字段屬性,且每個屬性可供租戶進行配置的值有r個。計算兩個租戶定制時發生q次相同配置的概率為:

其中,ξ表示概率隨機試驗結果。當相鄰租戶存在冗余時,則不存儲該數據。則在該概率下減少的數據存儲量為:

t×m×q

為進一步量化對比結果,實驗將相關參數固定為10 000個租戶,50個對象,10個屬性,可配置屬性字段5個,分別測試傳統存儲和差異存儲在不同冗余發生概率下的存儲數據量。表3為實驗數據測試結果。

表3 存儲空間消耗對比數據

根據表3,對比兩種存儲方式分別在p(ε=1)=27.03%,p(ε=2)=30.21%,p(ε=3)=20.78%,p(ε=4)=9.98%概率下的存儲數據量,使用差異數據存儲方式對于定制數據的存儲消耗要明顯小于傳統的存儲方法。這是因為差異存儲免去了對于相同定制數據的存儲,提高了系統存儲空間的利用效率。

4.2 訪問性能的比較分析

在性能評估實驗中,本文主要考慮與SaaS應用相關的重要因素租戶的規模,測試比較差異存儲方案和傳統元數據完全存儲方案的數據訪問性能。首先,實驗設計了兩類SQL查詢語句:(1) 模擬通過客戶ID查詢一個客戶的特定屬性值;(2) 查詢客戶信息表中的所有客戶信息。我們將這兩類測試語句分別命名為select1、select2。其次,實驗測試了更新操作的響應時間,固定租戶規模為100個時分別設計某個特定屬性字段的插入、刪除、更改語句。

實驗系統的運行環境是一個配置為Intel(R) Core(TM) i5-2450M CPU, 2.50 GHz的處理器,4.00 GB內存,64位Windows 7操作系統的PC機。數據庫為MySQL 5.6.10,采用P6Spy和IronTrackSQL工具來統計不同實驗場景下的數據庫訪問時間。

實驗使用的數據情況為,設計三個不同的租戶規模分別為1個、50個以及1000個。定制模板中每個對象的字段屬性個數為8,假定任意兩個相鄰租戶間具有2個相同的屬性設置,分別測試執行以上兩類SQL語句獲得的響應時間。

如圖2-圖4可以看出,差異存儲模式執行效率要略低于傳統存儲模式。考慮到差異存儲計算步驟明顯多于完全存儲,訪問響應時間會有所增加也是意料之中。隨著租戶規模的擴大,傳統存儲的響應時間幾乎不變,差異存儲的響應時間增長幅度很小,漲幅完全在可接受范圍之內。并且由于定制中差異存儲的存儲數據量會小于傳統存儲,在一定程度上又提升了訪問執行效率,所以本文提出的差異數據存儲模式在提高空間利用率的情況下,還是具有較好的數據訪問性能的。

圖2 select1的性能比較 圖3 select2的性能比較

圖4 更新操作的性能比較

5 結 語

本文提出了一種適用于SaaS模式下的多租戶差異數據存儲方法。該方案首先通過分類元數據來建立差異數據的語義,然后根據差異數據存儲策略判斷租戶定制信息是否需要存儲。最后還通過數學計算證實了該模型具有良好的空間存儲利用率。此外,文中還給出了差異存儲方案的數據訪問算法,實驗數據表明,該方案的數據訪問性能還是不錯的。

下一步的研究工作主要包括:

(1) 對于不相鄰租戶間存在的冗余,通過進一步分析和擴展差異存儲模型來減少冗余;

(2) 優化多租戶存儲模式的數據訪問算法,降低計算時間;

(3) 研究并提高方案對于不同應用領域的可擴展性。

[1] 韓燕波,王桂玲,劉晨,等.互聯網計算機的原理與實踐[M].北京:科學出版社,2010.

[2] 林海略,韓燕波.多租戶應用的性能管理關鍵問題研究[J].計算機學報,2010,33(10):1881-1895.

[3] Vidyanand C.Software as a service:Implications for investment in software development[C]//Proceedings of the 40th Hawii International Conference on System Sciences(HICSS’07),2007:209-219.

[4] 葉偉,趙偉,葉軍.互聯網時代的軟件革命:SaaS架構設計[M].北京:電子工業出版社,2009.

[5] Lakshman A,Malik P.Cassandra:a decentralized structured storage system[J].SIGOPS Operating Systems Review,2010,44(2):35-40.

[6] Aulbach S,Grust T,Jacobs D,et al.Multi-Tenant databases for software as a service:schema mapping techniques[C]//Proceedings of the ACM SIGMOD Conference,2008:1195-1206.

[7] 唐圣潘,周肆清,丁長松.基于SASA模式的共享模型的數據擴展技術研究[J].計算機技術與發展,2011,21(8):63-65.

[8] Weissman C D,Bobrowski S.The design of the force.com multi-tenant internet application development platform[C]//Proceedings of the ACM SIGMOD International Conference on Management of Data,2009.Providence,Rhode Island,USA:Ugur Cetintemel,2009:889-896.

[9] 周文瓊,李慶忠,范路橋,等.SaaS模式多租戶數據存貯模型的研究與實現[J].計算機科學,2013,40(10):194-197.

[10] Salesforce.com.Inc.Database.com[EB/OL].[2011-06-08].http://www. data -base.com/.

[11] 李保棟,孔蘭菊,陸春生,等.SaaS交付平臺多租戶數據管理模型研[J].小型微型計算機系統,2012,33(12):2658-2663.

[12] Agrawal D,Abbadiae E,Antony S,et al.Data management challenges in cloud computing infrastructures databases in Networked Information Systems the 6th International Workshop,DNIS 2010[C]//AizuWakamatsu,Japan,2010:1-10.

AN SAAS APPLICATION-ORIENTED DIFFERENCES DATA STORAGE METHOD

Cai Ting1Cai Yu1Ouyang kai2Zhou Jingli2

1(SchoolofMobileTelecom,ChongqingUniversityofPostsandTelecom,Chongqing401520,China)2(SchoolofComputer,HuazhongUniversityofScienceandTechnology,Wuhan430074,Hubei,China)

To cope with the problem of data redundancy storage caused by the repeated customisations of multi-tenant in SaaS application, we proposed a metadata-based differences data storage method. In the scheme we studied the traditional metadata-driven storage pattern, and addressed the formal semantics and data storage strategy for differences storage scheme by the definition of metadata classification. At last, we proposed the data access algorithms of the scheme for the operations of addition and deletion, query and modification respectively. It was indicated by the calculation that the differences storage method exhibited higher storage space utilisation under the probabilistic analysis of redundant reduction, which reduced tenants’ redundant storages effectively. Meanwhile, the performance test result also reflected a preferable data access performance of the scheme.

Software as a service(SaaS) Multi-tenant Metadata Differences storage Method

2014-10-29。重慶市教委科學技術研究項目(KJ1402 002);重慶市本科高校“三特行動計劃”特色專業建設項目(渝教高(2013)49號)。蔡婷,講師,主研領域:網絡安全結構與控制技術,互聯網計算。蔡宇,講師。歐陽凱,博士。周敬利,教授。

TP391

A

10.3969/j.issn.1000-386x.2016.04.010

猜你喜歡
定義差異
相似與差異
音樂探索(2022年2期)2022-05-30 21:01:37
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風格”
找句子差異
DL/T 868—2014與NB/T 47014—2011主要差異比較與分析
生物為什么會有差異?
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
M1型、M2型巨噬細胞及腫瘤相關巨噬細胞中miR-146a表達的差異
收入性別歧視的職位差異
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 美女被操黄色视频网站| 欧美日韩资源| 国产91线观看| 亚洲国产成人久久精品软件 | 高清不卡一区二区三区香蕉| 国产精品主播| 欧美日韩午夜| 亚洲国产日韩在线成人蜜芽| 国产欧美日韩在线一区| 99视频在线免费看| 四虎永久免费地址| 日韩成人在线网站| 青青操视频免费观看| 久久动漫精品| 亚洲伦理一区二区| 欧美一区二区啪啪| 99精品欧美一区| 成人午夜视频网站| 好久久免费视频高清| 亚洲一本大道在线| 永久免费av网站可以直接看的| 午夜视频日本| 久久国产免费观看| 亚洲天堂久久新| 国产美女人喷水在线观看| 亚洲成人免费看| 3344在线观看无码| 99精品国产高清一区二区| 精品福利国产| 欧洲成人在线观看| 怡红院美国分院一区二区| 午夜在线不卡| 亚洲日韩高清无码| 国产新AV天堂| 日韩无码视频专区| 91丝袜乱伦| 91亚洲精选| 红杏AV在线无码| 久久久久青草线综合超碰| 欧美日本在线观看| 国产一区自拍视频| 国产特级毛片| 久久精品娱乐亚洲领先| 亚洲第一极品精品无码| 中国一级特黄大片在线观看| 91po国产在线精品免费观看| 亚洲天堂福利视频| 欧美区国产区| 国产鲁鲁视频在线观看| 亚洲天堂啪啪| 国产浮力第一页永久地址| 亚洲女同欧美在线| 97久久超碰极品视觉盛宴| 国产97视频在线观看| 91丝袜美腿高跟国产极品老师| 永久免费无码成人网站| 九色最新网址| 欧美日韩一区二区在线播放 | 日本人妻一区二区三区不卡影院| 国产精品一线天| 午夜福利免费视频| 就去吻亚洲精品国产欧美| 人人看人人鲁狠狠高清| 欧美国产中文| 亚洲AⅤ永久无码精品毛片| 日本a∨在线观看| 波多野结衣AV无码久久一区| 日本www在线视频| 综合五月天网| 午夜无码一区二区三区| 久久精品只有这里有| 97国产精品视频自在拍| 2020精品极品国产色在线观看 | 精品精品国产高清A毛片| 午夜老司机永久免费看片| 国产精品va免费视频| 精品人妻一区无码视频| 日本一区中文字幕最新在线| 欧美一区二区三区国产精品| 一级毛片免费高清视频| 六月婷婷综合| 91成人在线观看|