何文哲 范冰冰
(華南師范大學(xué)計(jì)算機(jī)學(xué)院 廣東 廣州 510631)
?
一種新型高效的多租戶共享數(shù)據(jù)模型
何文哲 范冰冰
(華南師范大學(xué)計(jì)算機(jī)學(xué)院 廣東 廣州 510631)
構(gòu)建SaaS多租戶數(shù)據(jù)庫時(shí),針對為實(shí)現(xiàn)租戶自定義數(shù)據(jù)高效存儲(chǔ)而面臨的多租戶共享數(shù)據(jù)模型設(shè)計(jì)問題,提出一種適用于多租戶數(shù)據(jù)存儲(chǔ)的多級(jí)塊折疊表數(shù)據(jù)模型。該模型使用多組結(jié)構(gòu)各異的塊表來存儲(chǔ)租戶的自定義數(shù)據(jù)。設(shè)計(jì)模型的基礎(chǔ)數(shù)據(jù)表,并給出多級(jí)塊數(shù)據(jù)表的一般性設(shè)置方法。實(shí)驗(yàn)結(jié)果表明,在一個(gè)SaaS應(yīng)用實(shí)例中,該數(shù)據(jù)模型比傳統(tǒng)塊折疊表數(shù)據(jù)模型減少了28%的查詢延時(shí)和22%的存儲(chǔ)空間,比彈性擴(kuò)展表數(shù)據(jù)模型減少了54.9%的查詢延時(shí)和83.9%的存儲(chǔ)空間,多級(jí)塊折疊表數(shù)據(jù)模型具有更高的查詢性能以及空間效率。
多租戶 數(shù)據(jù)模型 塊折疊表
SaaS模式通過互聯(lián)網(wǎng)向用戶提供軟件服務(wù),用戶根據(jù)自己的需要租賃軟件服務(wù),并支付費(fèi)用[1]。SaaS服務(wù)供應(yīng)商希望通過高效復(fù)用軟件的形式降低成本,多租戶技術(shù)能夠讓多個(gè)需要使用相同或類似軟件服務(wù)的租戶共用同一個(gè)軟件實(shí)例,實(shí)現(xiàn)最大程度的共享[2]。
多個(gè)租戶邏輯應(yīng)用需要共享一個(gè)多租戶應(yīng)用實(shí)例,不同邏輯應(yīng)用支撐的業(yè)務(wù)產(chǎn)生不同結(jié)構(gòu)的數(shù)據(jù)。本文把租戶因不同業(yè)務(wù)需求而定義的數(shù)據(jù)稱為租戶自定義數(shù)據(jù)。若一個(gè)多租戶數(shù)據(jù)庫實(shí)例為每一個(gè)租戶設(shè)置獨(dú)立的數(shù)據(jù)表,存儲(chǔ)其的自定義數(shù)據(jù)。當(dāng)數(shù)據(jù)庫的數(shù)據(jù)表數(shù)量達(dá)到一定程度時(shí),數(shù)據(jù)庫的性能會(huì)受到較大影響,難以滿足租戶的查詢性能需求[3]。因此,需要設(shè)置有限的若干張共享數(shù)據(jù)表存儲(chǔ)多個(gè)租戶的自定義數(shù)據(jù)[4]。而能夠共享存儲(chǔ)租戶數(shù)據(jù)的數(shù)據(jù)表的結(jié)構(gòu),則稱為多租戶共享數(shù)據(jù)表模型。如何設(shè)置一種高效的多租戶共享數(shù)據(jù)模型,成為了構(gòu)建多租戶數(shù)據(jù)庫的關(guān)鍵問題。
目前,國內(nèi)外學(xué)術(shù)界與工業(yè)界針對多租戶共享數(shù)據(jù)模型的設(shè)置做了大量的研究。
文獻(xiàn)[5]介紹和對比了若干種多租戶共享數(shù)據(jù)模型,評估了一個(gè)使用了拓展表數(shù)據(jù)模型的XML數(shù)據(jù)庫性能,得出了XML數(shù)據(jù)庫仍無法滿足SaaS多租戶應(yīng)用的查詢性能需求的結(jié)論。文獻(xiàn)[6]提出了一種彈性擴(kuò)展表數(shù)據(jù)模型。文獻(xiàn)[7]使用了該模型搭建了一個(gè)多租戶數(shù)據(jù)庫架構(gòu),在該模型中,租戶的異構(gòu)數(shù)據(jù)會(huì)被完全垂直切分,在存儲(chǔ)時(shí),需要存儲(chǔ)大量額外的元數(shù)據(jù),影響數(shù)據(jù)存儲(chǔ)效率,在重構(gòu)查詢結(jié)果時(shí),需要大量的連接操作,影響數(shù)據(jù)查詢性能。文獻(xiàn)[8]提出了一種索引表數(shù)據(jù)模型,在該模型中,隨著租戶數(shù)量的增加和租戶自定義數(shù)據(jù)行為的增加,數(shù)據(jù)庫的數(shù)據(jù)表量會(huì)不斷增加,造成性能瓶頸。文獻(xiàn)[3]提出一種塊折疊表數(shù)據(jù)模型。在這種模型中,用于存儲(chǔ)租戶自定義數(shù)據(jù)的塊表需要在建立多租戶數(shù)據(jù)庫之初建立,適應(yīng)性較差。文獻(xiàn)[9]提出一種以XML為基礎(chǔ)的共享數(shù)據(jù)模型的多租戶數(shù)據(jù)擴(kuò)展方法。該文獻(xiàn)僅對提出的方法進(jìn)行了性能分析,未通過實(shí)驗(yàn)對方法的性能進(jìn)行驗(yàn)證。文獻(xiàn)[10]提出基于XML的數(shù)據(jù)擴(kuò)展模型。該文獻(xiàn)未通過實(shí)驗(yàn)驗(yàn)證該模型查詢性能以及空間效率。
除了學(xué)術(shù)界外,IT企業(yè)也對多租戶數(shù)據(jù)庫展開了研究。文獻(xiàn)[11]提出了Force.com云平臺(tái)使用寬度為500列的通用表存儲(chǔ)租戶的應(yīng)用數(shù)據(jù),使用透視表存儲(chǔ)非規(guī)范化數(shù)據(jù)。由于通用表為稀疏表,且寬度較大,表中存儲(chǔ)了大量的空值,使得數(shù)據(jù)庫的空間使用率較低。
由此可知,在構(gòu)建多租戶數(shù)據(jù)庫時(shí),如何設(shè)計(jì)一個(gè)具有較高查詢性能以及空間效率的多租戶共享數(shù)據(jù)模型的問題依然亟待解決。
為了方便描述塊折疊表數(shù)據(jù)模型以及多級(jí)塊折疊表數(shù)據(jù)模型,本文以一個(gè)多租戶課程管理數(shù)據(jù)為場景,系統(tǒng)為租戶A、租戶B以及租戶C提供服務(wù)。由于三個(gè)租戶的業(yè)務(wù)管理需求差異,導(dǎo)致租戶需要存儲(chǔ)不同的課程數(shù)據(jù),分別如表1-表3所示。
表1 租戶A課程數(shù)據(jù)表
表2 租戶B課程數(shù)據(jù)表
表3 租戶C課程數(shù)據(jù)表
塊表數(shù)據(jù)模型通過設(shè)置一張塊表來存儲(chǔ)租戶按照一定規(guī)則垂直切分后的數(shù)據(jù)。在這種模型中,租戶的數(shù)據(jù)表被切分成塊,每一塊包含若干個(gè)字段,這些塊被存儲(chǔ)到同一張塊表中,塊表的一個(gè)元組用于存儲(chǔ)租戶一個(gè)元組被切分后的其中一塊。
塊折疊表數(shù)據(jù)模型是塊表數(shù)據(jù)模型的一種改進(jìn)模型。在塊表中,由于租戶的所有數(shù)據(jù)都被拆分成較小的塊,構(gòu)造查詢結(jié)果時(shí)依然需要較多的連接操作[12]。對于一個(gè)多租戶應(yīng)用來說,其服務(wù)的多個(gè)租戶邏輯應(yīng)用具有相同或類似的業(yè)務(wù)需求,用于支撐業(yè)務(wù)的數(shù)據(jù)具有部分相同的結(jié)構(gòu)。在塊折疊模型中,租戶結(jié)構(gòu)相同的數(shù)據(jù)被稱為基礎(chǔ)數(shù)據(jù),這部分?jǐn)?shù)據(jù)被“折疊”后使用基礎(chǔ)數(shù)據(jù)表存儲(chǔ),而自定義數(shù)據(jù)使用塊表數(shù)據(jù)模型進(jìn)行存儲(chǔ)。
本場景中租戶的數(shù)據(jù)存儲(chǔ)在多級(jí)塊折疊表數(shù)據(jù)模型的情況如表4和表5所示。
表4 塊折疊表數(shù)據(jù)模型Tenant_Table
表5 塊折疊表數(shù)據(jù)模型Chunk_Table
塊折疊表數(shù)據(jù)模型相對于塊表數(shù)據(jù)模型,其基礎(chǔ)數(shù)據(jù)部分被“折疊”存儲(chǔ)在基礎(chǔ)表中,需要切分成塊的數(shù)據(jù)量減少,在構(gòu)造查詢結(jié)果時(shí),需要完成的連接操作也因此減少。該模型為了減少連接操作,設(shè)置的塊需要包含多個(gè)數(shù)據(jù)字段。這樣的設(shè)置使得該模型在存儲(chǔ)字段數(shù)據(jù)類型比例與塊字段數(shù)據(jù)類型比例差異較大的用戶數(shù)據(jù)時(shí),如表5所示,在存儲(chǔ)使用特定塊表存儲(chǔ)租戶C與租戶D的數(shù)據(jù)時(shí),具有以下缺點(diǎn):
(1) 需要存儲(chǔ)大量的空值,使得有效數(shù)據(jù)占所有數(shù)據(jù)的比例較低。如表5所示,租戶B與租戶C有效數(shù)據(jù)占?jí)K內(nèi)總數(shù)據(jù)的比例僅為50%。
(2) 構(gòu)造查詢結(jié)果時(shí)需要進(jìn)行大量的連接操作。如表5所示,租戶B與租戶C的自定義數(shù)據(jù)部分都被垂直切分為5個(gè)塊進(jìn)行存儲(chǔ),在構(gòu)造其自定義數(shù)據(jù)結(jié)果時(shí)需要進(jìn)行4次連接操作。
針對塊折疊數(shù)據(jù)模型在存儲(chǔ)字段數(shù)據(jù)類型比例與塊字段數(shù)據(jù)類型比例差異較大的用戶數(shù)據(jù)時(shí)的缺點(diǎn),本文提出了一種改進(jìn)的塊折疊表數(shù)據(jù)模型——多級(jí)塊折疊表數(shù)據(jù)模型。該模型將單張塊表改進(jìn)為一組多張寬度相同,塊內(nèi)數(shù)據(jù)類型比例不同的塊表,并使用該組塊表對租戶的自定義數(shù)據(jù)進(jìn)行存儲(chǔ)。
本節(jié)依然使用第1節(jié)使用場景闡述多級(jí)塊表數(shù)據(jù)模型。在場景中,設(shè)置了1組3個(gè)級(jí)別的塊對租戶的自定義數(shù)據(jù)進(jìn)行切分與存儲(chǔ),設(shè)置的3個(gè)級(jí)別的塊分別為:
(1) 塊1:包含兩個(gè)varchar類型數(shù)據(jù)。
(2) 塊2:包含一個(gè)varchar類型數(shù)據(jù),一個(gè)int類型數(shù)據(jù)。
(3) 塊3:包含兩個(gè)int類型數(shù)據(jù)。
根據(jù)塊構(gòu)造設(shè)置3張塊表以及1張基礎(chǔ)表,將租戶的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)表中?;A(chǔ)數(shù)據(jù)的設(shè)置以及其存儲(chǔ)的數(shù)據(jù)如表6所示,3張塊表的設(shè)置以及其存儲(chǔ)數(shù)據(jù)的情況如表7-表9所示。相對于塊表折疊表數(shù)據(jù)模型,租戶B與租戶C有效數(shù)據(jù)僅占?jí)K內(nèi)總數(shù)據(jù)的比例提升至83.3%,且租戶B和租戶C的自定義部分?jǐn)?shù)據(jù)也由被切分成5塊減少至3塊,存儲(chǔ)數(shù)據(jù)所需空間減少的同時(shí),重構(gòu)查詢結(jié)果時(shí),需要的連接操作也得到了減少。
表6 多級(jí)塊折疊表數(shù)據(jù)模型Tenant_Table
表7 多級(jí)塊折疊表數(shù)據(jù)模型Chunk_Table_1
表8 多級(jí)塊折疊表數(shù)據(jù)模型Chunk_Table_2
表9 多級(jí)塊折疊表數(shù)據(jù)模型Chunk_Table_3
2.1 數(shù)據(jù)模型的一般性描述
多級(jí)塊折疊模型通過設(shè)置一張基礎(chǔ)表存儲(chǔ)租戶的同構(gòu)部分?jǐn)?shù)據(jù),設(shè)置基礎(chǔ)表的如表10所示。設(shè)置的一組多級(jí)塊表存儲(chǔ)租戶的自定義部分?jǐn)?shù)據(jù),設(shè)置的一組多級(jí)塊表如表11-表13所示。其中,基礎(chǔ)表設(shè)置的字段為:租戶id(Tenant_id),Row(行號(hào)),Com_field_1(租戶公共字段1),…,Com_field_m(租戶公共字段m)。塊表設(shè)置的字段為:租戶id(Tenant_id),Table(數(shù)據(jù)表號(hào)),Chunk(塊號(hào)),Row(行號(hào)),Cus_type_1_1(自定義數(shù)據(jù)類型1的第1字段),…,Cus_type_x_1(自定義數(shù)據(jù)類型x的第1字段),…,Com_field_o_1(自定義數(shù)據(jù)類型o的第1字段)。塊表寬度的設(shè)置、塊表級(jí)別數(shù)量的設(shè)置以及每一級(jí)別塊表自定義數(shù)據(jù)類型的組合需要根據(jù)實(shí)際SaaS多租戶應(yīng)用所需要存儲(chǔ)的具體數(shù)據(jù)決定。
表10 多級(jí)塊折疊表數(shù)據(jù)模型Tenant_Table
表11 多級(jí)塊折疊表數(shù)據(jù)模型Chunk_Table_1
表12 多級(jí)塊折疊表數(shù)據(jù)模型Chunk_Table_x
表13 多級(jí)塊折疊表數(shù)據(jù)模型Chunk_Table_n
2.2 數(shù)據(jù)模型的設(shè)置方法
要實(shí)現(xiàn)使用多級(jí)塊折疊表數(shù)據(jù)模型存儲(chǔ)SaaS多租戶應(yīng)用的數(shù)據(jù),需要完成多級(jí)塊折疊模型數(shù)據(jù)表的設(shè)置。
方法涉及的部分符號(hào)含義如下:
SaaS多租戶應(yīng)用中租戶的集合為Tenant,其大小為q,定義為Tenant={tenant1,tenant2,…,tenantq},其中tenanti為租戶。多租戶數(shù)據(jù)庫需要存儲(chǔ)的租戶的數(shù)據(jù)集為TenantData,其大小為q,定義為TenantData={tenantData1,tenantData2,…,tenantDataq},其中tenantDatai為租戶tenanti的數(shù)據(jù)。
方法的描述如下:
1) 對TenantData數(shù)據(jù)集中的租戶數(shù)據(jù)進(jìn)行分析。根據(jù)tenant1,tenant2,…,tenantq,將每個(gè)租戶的基礎(chǔ)數(shù)據(jù)部分劃分到公共數(shù)據(jù)集合ComData中,ComData={comData1,comData2,…,comDataq},其中,comDatai為tenantDatai的基礎(chǔ)數(shù)據(jù)部分。將租戶的自定義數(shù)據(jù)部分劃分到自定義數(shù)據(jù)集合CusData中,CusData={cusData1,cusData2,…,cusDataq},其中,cusDatai為tenantDatai的自定義數(shù)據(jù)部分。
2) 根據(jù)ComData集合設(shè)置多級(jí)塊表數(shù)據(jù)模型的基礎(chǔ)表。ComData集合中每一個(gè)租comDatai是同構(gòu)的,根據(jù)comDatai的結(jié)構(gòu)設(shè)置基礎(chǔ)表BaseTable的結(jié)構(gòu)。
3) 根據(jù)CusData集合設(shè)置多級(jí)塊表數(shù)據(jù)模型的塊表集。對CusData集合中的cusDatai進(jìn)行分析,得到租戶自定義數(shù)據(jù)量集合CusDataSize={cusDataSize1,cusDataSize2,…,cusDataSizeq},其中cusDataSizei為tenanti的數(shù)據(jù)元組數(shù)量,得到租戶自定義數(shù)據(jù)字段結(jié)構(gòu)集合CusDataStruc={CusDataStruc1,CusDataStruc2,…,CusDataStrucq},其中,CusDataStruci為tenanti的自定義部分?jǐn)?shù)據(jù)結(jié)構(gòu),CusDataStruci={(DataTypex,n),…,(DataTypey,m)},其中(DataTypex,n)表示tenanti的自定義字段中,有n個(gè)數(shù)據(jù)類型為DataTypex的字段。根據(jù)CusDataSize和CusDataStruc設(shè)置多組多級(jí)塊折疊表的塊寬度,表數(shù)量以及每個(gè)塊的塊內(nèi)結(jié)構(gòu)。
3.1 實(shí)驗(yàn)環(huán)境
為了驗(yàn)證多級(jí)塊折疊表數(shù)據(jù)模型的查詢性能與空間效率,實(shí)驗(yàn)以一個(gè)課程管理功能為背景,選取塊折疊表數(shù)據(jù)模型與彈性擴(kuò)展表數(shù)據(jù)模型作為參照數(shù)據(jù)模型。實(shí)驗(yàn)環(huán)境PC機(jī)的設(shè)置如圖1所示。
圖1 實(shí)驗(yàn)環(huán)境PC機(jī)設(shè)置示意圖
其中,PC1模擬若干個(gè)租戶隨機(jī)發(fā)出選擇查詢請求,每次查詢一門課程的若干項(xiàng)課程信息。PC3存儲(chǔ)8~80個(gè)租戶的數(shù)據(jù),每個(gè)租戶擁有一張字段數(shù)量為10~25個(gè)的邏輯課程數(shù)據(jù)表,每一張邏輯課程數(shù)據(jù)表擁有10 000條記錄,邏輯數(shù)據(jù)表的三個(gè)副本分別被存儲(chǔ)在多級(jí)塊折疊表模型、塊折疊表模型和彈性擴(kuò)展表模型中。PC2存儲(chǔ)租戶的元數(shù)據(jù)。
3.2 實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)將租戶的數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫中,在存儲(chǔ)不同租戶數(shù)據(jù)量的情況下,三種模型的空間效率對比如圖2所示。
圖2 三種數(shù)據(jù)模型空間效率對比圖
根據(jù)實(shí)驗(yàn)結(jié)果可知,多級(jí)塊折疊表數(shù)據(jù)模型與參照模型在存儲(chǔ)同樣數(shù)量的邏輯數(shù)據(jù)時(shí),該模型比塊折疊表模型節(jié)省約22%的存儲(chǔ)空間,比彈性擴(kuò)展表模型節(jié)省約83.9%的存儲(chǔ)空間。彈性擴(kuò)展表模型使用完全垂直切分?jǐn)?shù)據(jù)的方式存儲(chǔ)租戶的自定義數(shù)據(jù),需要存儲(chǔ)大量的元數(shù)據(jù),導(dǎo)致租戶有效數(shù)據(jù)占比較低。對于傳統(tǒng)的塊折疊表模型,多級(jí)塊折疊表與其的空間效率分析如下:
對于租戶數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)部分,多級(jí)塊折疊表數(shù)據(jù)模型與塊折疊表模型存儲(chǔ)數(shù)據(jù)的方式相同,存儲(chǔ)該部分?jǐn)?shù)據(jù)的空間效率相同。對于租戶數(shù)據(jù)的自定義數(shù)據(jù)部分,由于兩種模型對于CusData的存儲(chǔ)方式存在差異,空間效率存儲(chǔ)差異,因此對兩種數(shù)據(jù)模型存儲(chǔ)自定義數(shù)據(jù)的空間效率進(jìn)行分析。
對于租戶tenant,其自定義數(shù)據(jù)的結(jié)構(gòu)可表示為:
(1)
其中(dataTypei,dci)表示tenant的自定義數(shù)據(jù)中,含有數(shù)據(jù)類型為dataTypei的字段dci個(gè)。
對于塊折疊表數(shù)據(jù)模型,其單個(gè)塊結(jié)構(gòu)可表示為:
(2)
其中,(cfDataTypek,cfDck)表示一個(gè)塊含有數(shù)據(jù)類型為dataTypek的字段cdDck個(gè)。
對于多級(jí)塊折疊模型,其一組多級(jí)塊可表示為:
(3)
使用塊表的塊對cusDataStruc進(jìn)行切分,切分后的塊數(shù)量為:
(4)
cfDataTypek=dataTypeidci≠0
使用多級(jí)塊表對cusDataStruc進(jìn)行切分,切分后的塊數(shù)量為:
(5)
由于多級(jí)塊表模型的多個(gè)塊包含塊表的單個(gè)塊,因此可知:
mccc≤cc
(6)
對于塊表,其用于存儲(chǔ)租戶單個(gè)邏輯元組所需的數(shù)據(jù)空間cfs為:
(7)
其中,ms表示塊表單個(gè)元組的存儲(chǔ)塊描述信息所需的空間,nsdti表示塊表存儲(chǔ)數(shù)據(jù)類型為dataTypei的空值時(shí)的空間,dsi表示塊表存儲(chǔ)類型為dataTypei的數(shù)據(jù)所需的空間。
對于多級(jí)塊表,其用于存儲(chǔ)租戶單個(gè)邏輯元組所需的數(shù)據(jù)空間mccfs為:
(8)
由于mccc≤cc,因此可知:
mccfSize≤cfSize
(9)
由分析可知,多級(jí)塊折疊表數(shù)據(jù)模型在存儲(chǔ)同樣數(shù)量的邏輯元組時(shí),只在多級(jí)塊折疊表模型使用與塊折疊表模型相同的塊切分所有租戶邏輯元組時(shí),方與塊折疊表模型具有相同的空間效率,在更多的數(shù)據(jù)場景中,多級(jí)塊折疊表模型具有更高的空間效率。
在同樣的實(shí)驗(yàn)數(shù)據(jù)設(shè)置下,對多級(jí)塊折疊表數(shù)據(jù)模型的查詢性能進(jìn)行驗(yàn)證實(shí)驗(yàn)。PC1模擬2~20個(gè)隨機(jī)租戶同時(shí)發(fā)出查詢,每個(gè)租戶發(fā)起1 000個(gè)查詢?nèi)舾蓚€(gè)邏輯字段的選擇查詢,記錄并計(jì)算單個(gè)查詢的平均時(shí)間。三個(gè)模型的查詢平均延時(shí)對比如圖3所示,查詢吞吐率對比如圖4所示。
圖3 三種數(shù)據(jù)模型查詢延時(shí)對比圖
圖4 三種數(shù)據(jù)模型查詢延吞吐率對比圖
對于彈性擴(kuò)展表模型,其在構(gòu)造涉及多個(gè)數(shù)據(jù)列的查詢結(jié)果時(shí),需要進(jìn)行大量的連接操作,導(dǎo)致其查詢延時(shí)較高,查詢吞吐量較低。對于塊折疊表模型,由式(8)可知,多級(jí)塊折疊表數(shù)據(jù)模型能夠?qū)Σ煌Y(jié)構(gòu)的邏輯元組采取更加靈活的切分方式,在存儲(chǔ)同一邏輯元組時(shí),多級(jí)塊折疊模型往往只需要更少的物理元組。在構(gòu)造查詢結(jié)果時(shí),所需要進(jìn)行的連接操作也更少。在實(shí)驗(yàn)場景中,與塊折疊表數(shù)據(jù)模型相比,多級(jí)塊折疊表數(shù)據(jù)模型的平均查詢延時(shí)減少了28.04%,吞吐率提高了69.68%。
本文對塊折疊表數(shù)據(jù)模型進(jìn)行了拓展,提出了一種適用于多租戶數(shù)據(jù)存儲(chǔ)的多級(jí)塊折疊表數(shù)據(jù)模型。該數(shù)據(jù)模型通過設(shè)置基礎(chǔ)數(shù)據(jù)表存儲(chǔ)租戶同構(gòu)的基礎(chǔ)數(shù)據(jù),通過設(shè)置多組多張塊內(nèi)結(jié)構(gòu)各異的塊表存儲(chǔ)租戶的自定義數(shù)據(jù),本文通過一個(gè)多級(jí)塊折疊數(shù)據(jù)模型、塊折疊表數(shù)據(jù)模型和彈性拓展表數(shù)據(jù)模型的對比實(shí)驗(yàn),驗(yàn)證了多級(jí)塊折疊表數(shù)據(jù)模型具有較高的查詢性能與空間效率。本文實(shí)驗(yàn)分析部分對多級(jí)塊折疊表數(shù)據(jù)模型所做的有效性分析為一般性分析,如何結(jié)合生產(chǎn)環(huán)境中更多的實(shí)際使用的數(shù)據(jù)庫引擎的緩存、索引等技術(shù),對數(shù)據(jù)模型的有效性進(jìn)行進(jìn)一步分析與驗(yàn)證,是本文未來研究的方向。
[1] Chong F, Carraro G. Architecture Strategies for Catching the Long Tail[EB/OL]. (2006-06)[2016-03-21].http://msdn.microsoft.com/enus/ library/aa479069.aspx.
[2] Chong F, Carraro G, Wolter R. Multi-Tenant Data Architecture[EB/OL]. (2006-06)[2016-03-21].https://msdn.microsoft.com/en-us/library/aa479086.aspx.
[3] Aulbach S, Grust T, Jacobs D, et al. Multi-tenant databases for software as a service: schema-mapping techniques[C]// ACM SIGMOD International Conference on Management of Data. ACM, 2008:1195-1206.
[4] Saraswathi M, Bhuvaneswari T. Multitenant SaaS model of cloud computing: Issues and solutions[C]// International Conference on Communication and Network Technologies. IEEE, 2014:27-32.
[5] Fang S, Tong Q. A comparison of multi-tenant data storage solutions for Software-as-a-Service[C]// International Conference on Computer Science & Education. IEEE, 2011:95-98.
[6] Yaish H, Goyal M, Feuerlicht G. An Elastic Multi-tenant Database Schema for Software as a Service[C]// IEEE Ninth International Conference on Dependable, Autonomic and Secure Computing. IEEE, 2011:737-743.
[7] Yaish H, Goyal M. A Multi-tenant Database Architecture Design for Software Applications[C]// IEEE, International Conference on Computational Science and Engineering. 2013:933-940.
[8] Gorti I, Shiri N, Radhakrishnan T. A Flexible Data Model for Multi-tenant Databases for Software as a Service[C]// IEEE, International Conference on Computational Science and Engineering. 2013:1059-1066.
[9] 唐圣潘, 周肆清, 丁長松. 基于SAAS模式的共享模型的數(shù)據(jù)擴(kuò)展技術(shù)研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2011, 21(8):63-66.
[10] 周文瓊, 李慶忠, 范路橋,等. SaaS模式多租戶數(shù)據(jù)存貯模型的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)科學(xué), 2013, 40(10):194-197.
[11] Weissman C D, Bobrowski S. The design of the force.com multitenant internet application development platform[C]// ACM SIGMOD International Conference on Management of Data, SIGMOD 2009, Providence, Rhode Island, Usa, June 29-July. 2009:889-896.
[12] Ni J, Li G, Wang L, et al. Adaptive Database Schema Design for Multi-Tenant Data Management[J]. IEEE Transactions on Knowledge & Data Engineering, 2014, 26(9):2079-2093.
ANEWEFFICIENTMULTI-TENANTSHAREDDATAMODEL
He Wenzhe Fan Bingbing
(SchoolofComputer,SouthChinaNormalUniversity,Guangzhou510631,Guangdong,China)
Aiming at the problem of designing multi-tenant shared data model for achieving efficient storage of tenant’s custom data when building an SaaS multi-tenant database. A multi-class chunk folding data model is proposed for multi-tenant data storage. Multiple groups of heterogeneous chunk tables are used to store tenant’s custom data. The base table’s structure of the data model is designed. A general method is proposed for setting the heterogeneous chunk tables. The experimental result shows that the multi-class chunk folding model reduces the query latency by 28% and reduces the storage space by 22% compared with the classical chunk folding model. It also shows that multi-class chunk folding model reduces query latency by 54.9% and reduces storage space by 83.9% compared with the elastic extension table model, which means the multi-class chunk folding data model has higher query performance and space efficiency.
Multi-tenant Data model Chunk folding table
2016-06-24。廣東省重大科技專項(xiàng)(2014B010115001,2014B010112002,2016B030305003)。何文哲,碩士,主研領(lǐng)域:云計(jì)算。范冰冰,教授。
TP3
A
10.3969/j.issn.1000-386x.2017.08.012