陳俊志,白尚旺,張少波
(太原科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院,太原 030024)
云模式下共享模型的數(shù)據(jù)備份與恢復(fù)策略研究
陳俊志,白尚旺,張少波
(太原科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院,太原030024)
軟件即服務(wù)[1](Software as a Service,SaaS)是云計算發(fā)展環(huán)境下一種新興的商業(yè)模式。它基于互聯(lián)網(wǎng)平臺,將軟件產(chǎn)品做為服務(wù)放到云平臺上。SaaS最大的特征就是單實例多租賃,即多個租戶租賃一個應(yīng)用服務(wù),并且支持租戶按需定制。
SaaS服務(wù)面向互聯(lián)網(wǎng)上的所有租戶,每個租戶根據(jù)自身的實際情況,所要求的數(shù)據(jù)結(jié)構(gòu)各不相同,SaaS軟件開發(fā)商們在搭建基于共享模型的SaaS架構(gòu)時就不得不考慮各租戶之間數(shù)據(jù)結(jié)構(gòu)的差異性問題。同時,為租戶提供的數(shù)據(jù)備份與恢復(fù)策略也是一個無法避免需要解決的問題。
在設(shè)計基于SaaS模式的系統(tǒng)數(shù)據(jù)模型時,出于降低開發(fā)成本和接受服務(wù)的租戶量等考慮,在數(shù)據(jù)的隔離、共享之間取得一定的平衡是一個必須考慮的重要因素。就一般而言,SaaS系統(tǒng)的數(shù)據(jù)模型有如下三種形式[2]:
(1)獨立數(shù)據(jù)庫。
在此數(shù)據(jù)模型中,每個租戶單獨享有一套數(shù)據(jù)庫系統(tǒng),這些數(shù)據(jù)可以布置在獨立的服務(wù)器中,也可以部署在同一個服務(wù)器中,無論哪種情況,租戶之間的數(shù)據(jù)都是高度隔離的,如圖1所示。
圖1 獨立數(shù)據(jù)庫模型
這種數(shù)據(jù)模型有一個明顯的缺點就是物理資源共享程度很低,有多少個租戶就要安裝多少個獨立的數(shù)據(jù)庫,隨之帶來的就是增加了購置成本和維護成本,這對于一般的SaaS服務(wù)提供商來說是無法承受的。
(2)共享數(shù)據(jù)庫、獨立Schema。
共享數(shù)據(jù)庫獨立Schema模型,即多個租戶共同使用一個數(shù)據(jù)庫,但獨立使用自己的數(shù)據(jù)模式集,各租戶各自有一套獨有的數(shù)據(jù)表來存放各個租戶的數(shù)據(jù),如圖2所示。相比于獨立數(shù)據(jù)庫架構(gòu),這在各租戶數(shù)據(jù)的隔離和共享之間采取了折中的方法。
圖2 共享數(shù)據(jù)庫獨立Schema模型
(3)共享數(shù)據(jù)庫、共享Schema。
共享數(shù)據(jù)庫共享Schema模型,即多個租戶不但共用同一個數(shù)據(jù)庫,還共享數(shù)據(jù)表,如圖 3所示。這種模式下多個租戶的數(shù)據(jù)放在一個表里,通過租戶編號“租戶ID”來區(qū)分不同租戶的數(shù)據(jù)。相對于前兩種數(shù)據(jù)庫架構(gòu),這種模式下的數(shù)據(jù)隔離性程度最低,共享程度最高,相同規(guī)模的硬件設(shè)備下,支撐的租戶數(shù)量最大,最節(jié)省設(shè)備成本和運維開支。
圖3 共享數(shù)據(jù)庫共享Schema模型
共享數(shù)據(jù)庫共享Schema模型,不僅具有投入成本低等特點,而且每臺數(shù)據(jù)庫服務(wù)器可以支持最大的租戶量;但是由于數(shù)據(jù)共享程度高,所以要實現(xiàn)租戶數(shù)據(jù)間的隔離和安全需要更加復(fù)雜的系統(tǒng)設(shè)計和實現(xiàn)。多個租戶的數(shù)據(jù)都放在同一個表里面,但是在任何情況下,即使系統(tǒng)出現(xiàn)異常和故障,租戶間的數(shù)據(jù)都是彼此透明的,一個租戶不能訪問操作其他租戶的數(shù)據(jù)。這對系統(tǒng)的數(shù)據(jù)存儲和安全來說是巨大的挑戰(zhàn)。
從獨立數(shù)據(jù)庫,獨立Schema模式,到共享Schema模式,數(shù)據(jù)共享程度越來越高,相應(yīng)的,數(shù)據(jù)備份恢復(fù)的操作復(fù)雜度也越來越高。因為所有租戶的數(shù)據(jù)都放在一起,數(shù)據(jù)備份和恢復(fù)操作都不能針對某一租戶而是所有租戶。而且進行大量數(shù)據(jù)修改操作時會影響其他租戶的事務(wù)處理相應(yīng)速度,降低系統(tǒng)性能。但是這種架構(gòu)在租戶量大的時候,資源的重用導(dǎo)致成本降低,非常符合SaaS軟件的優(yōu)勢,是SaaS成熟度模型中最高一級成熟度模型的數(shù)據(jù)庫架構(gòu)。
使用共享數(shù)據(jù)庫共享Schema模式,就不得不面對一個問題——數(shù)據(jù)備份和恢復(fù)操作的問題,當(dāng)系統(tǒng)出現(xiàn)異常情況需要將歷史備份數(shù)據(jù)重新恢復(fù)的話,流程將變得相對復(fù)雜。因為如果每個租戶擁有獨立數(shù)據(jù)庫的話,那么只需恢復(fù)該租戶最近的數(shù)據(jù)庫備份即可。但在獨立模式的情景下,如果簡單的恢復(fù)數(shù)據(jù)庫備份,那就意味著數(shù)據(jù)庫內(nèi)所有租戶的數(shù)據(jù)將一同被恢復(fù),無論該租戶是否數(shù)據(jù)受損或需要做數(shù)據(jù)恢復(fù)與否。因此,在共享模式下,如果系統(tǒng)管理員希望恢復(fù)某個特定租戶的數(shù)據(jù),就需要采取一些必要的處理操作,然而這是相對復(fù)雜、受多方面因素影響的。
(1)完全備份
完全備份[3],就是復(fù)制指定的文件數(shù)據(jù)或數(shù)據(jù)庫數(shù)據(jù),不管其是否改變都進行備份。對當(dāng)前系統(tǒng)范圍內(nèi)所有的數(shù)據(jù)文件進行備份,它不依賴于文件的備份標(biāo)記,并在備份的文件重新加上備份標(biāo)記。這樣,在完全備份之后,所有的文件的都會具備備份標(biāo)記。當(dāng)下次完全備份時,并不會檢查備份標(biāo)記,它只是機械性地對當(dāng)前備份范圍內(nèi)所有的數(shù)據(jù)文件進行備份,而備份標(biāo)記是為了增量備份和差異備份準(zhǔn)備的,其目的是用于確定備份哪些文件。
優(yōu)點是:數(shù)據(jù)恢復(fù)速度快。每次備份就包含了所有的數(shù)據(jù)文件,只要進行一次恢復(fù)操作就可以全部恢復(fù),多以恢復(fù)速度會很快。
缺點是:浪費磁盤空間,加大備份成本。由于每次是備份所有數(shù)據(jù),而沒有改變的數(shù)據(jù)也會備份,產(chǎn)生了大量重復(fù)的數(shù)據(jù)。重復(fù)的數(shù)據(jù)備份文件對用戶毫無意義,只會占用磁盤空間,加大備份成本。隨著數(shù)據(jù)文件的增多,每次備份時間會越來越長。
(2)增量備份
增量備份,備份在前一次備份后有所變動的數(shù)據(jù)。可以多級增量備份,每次備份都源自前一次備份后的改動部分。增量備份同樣會增加備份標(biāo)記,備份前都會對上次的備份標(biāo)記進行判斷,對不同于上次備份標(biāo)記的進行備份。
優(yōu)點是:縮短了備份時間,提高了備份效率。由于增量備份只備份變動的數(shù)據(jù),這樣就解決了完全備份的缺點。
缺點是:數(shù)據(jù)恢復(fù)時間增長,可靠性降低。每次恢復(fù)數(shù)據(jù)前,要將之前的所有增量備份進行依次恢復(fù)。多次的增量備份文件如果不慎丟失一兩個,就無法全部還原,所以可靠性降低。
(3)差異備份
差異備份,是對完全備份后有所改動的數(shù)據(jù)部分。如果完全備份后存在一次增量備份和一次差異備份,那么這兩次備份的內(nèi)容是一樣的。差異備份以完全備份為分界線,每次的差異備份都是針對上次完全備份后數(shù)據(jù)的改動部分,直到下次完全備份,差異備份才會終止。差異備份是一個累積的過程,在數(shù)據(jù)庫中叫做累計備份。雖然差異備份的備份時間也會隨著數(shù)據(jù)文件的不斷變大而不斷增加,但是卻比完全備份的時間要短,而且恢復(fù)起來較增量備份簡單,只需恢復(fù)一次完全備份和一次差異備份即可??傊?,從空間和時間上來看,差異備份介于增量備份與完全備份之間,在兩者之間取得了一定的平衡。
(4)混合搭配應(yīng)用策略
在理解上面的三種備份方式后,可以根據(jù)需要選擇合適的備份類型。每種備份方式都有優(yōu)缺點,如果想要節(jié)省備份時間和空間就要犧牲恢復(fù)的速度,如果想要恢復(fù)的速度,就不得不犧牲備份資源。因此,在實際情況中,很少有單一使用的情況,將不同的備份類型結(jié)合起來才是比較符合實際需求的備份策略。在實際備份中,采用的備份策略經(jīng)常是一下三種模式:
(1)完全備份+增量備份
(2)完全備份+差異備份
(3)完全備份+增量備份+差異備份
以第三種備份策略為例,一個數(shù)據(jù)庫的備份任務(wù)可以做如下的安排,如表1所示。
表1 數(shù)據(jù)庫備份周期表
這樣的備份模式,第二周重復(fù)這一周的安排。假設(shè)在第七天,數(shù)據(jù)庫出現(xiàn)異常,維護人員按照順序,先恢復(fù)A,然后恢復(fù)E,再恢復(fù)F,這樣就能夠回到出現(xiàn)異常的前一天的情況了。相比于單一的備份方式,這種混合策略既節(jié)省了空間資源,也在備份時間和恢復(fù)時間上都有所改善,是一種相對最優(yōu)的策略。
云環(huán)境下的SaaS理念強調(diào)的是多租戶,為多租戶提供相同的基礎(chǔ)服務(wù)下滿足每個租戶的個性化業(yè)務(wù)需求。SaaS其本質(zhì)是為租戶提供個性化服務(wù),決定了SaaS的應(yīng)用系統(tǒng)對用戶的各種業(yè)務(wù)需求。當(dāng)然,這其中也包含數(shù)據(jù)備份和恢復(fù)數(shù)據(jù)的服務(wù)。采用共享數(shù)據(jù)庫共享Schema模型的云平臺當(dāng)提供單一用戶的數(shù)據(jù)備份和恢復(fù)策略時候,已存在的備份方案無法滿足要求。因此,下面給出針對這一問題的解決方案。
基于共享Schema模型數(shù)據(jù)的存儲方式以租戶ID來標(biāo)識每個租戶的數(shù)據(jù),這是唯一區(qū)分多租戶數(shù)據(jù)的方式。提供單一租戶的備份和恢復(fù)方案,首先要區(qū)分租戶的數(shù)據(jù),同樣也是根據(jù)租戶ID來區(qū)分。其思想如圖4所示,將租戶A的數(shù)據(jù)首先從數(shù)據(jù)庫中提取出,然后存入到備份數(shù)據(jù)庫中。
基于共享Schema模型備份和恢復(fù)策略方案存在兩種情況:
(1)當(dāng)數(shù)據(jù)備份和恢復(fù)的操作是云平臺的維護人員操作時。備份數(shù)據(jù)庫不需要實時存在,當(dāng)需要恢復(fù)某單一租戶的數(shù)據(jù)時,再根據(jù)備份文件構(gòu)建備份數(shù)據(jù)庫,然后將備份數(shù)據(jù)庫中需要恢復(fù)數(shù)據(jù)的租戶的數(shù)據(jù)存入到數(shù)據(jù)庫中,在此之前需要將數(shù)據(jù)庫中該租戶的數(shù)據(jù)刪除干凈。這種情況的備份操作可以采用第三節(jié)提到的混合備份策略,將整體的數(shù)據(jù)備份,當(dāng)需要恢復(fù)某一租戶的數(shù)據(jù)時,備份庫中的數(shù)據(jù)存入到數(shù)據(jù)庫中即可。這種備份恢復(fù)策略在已有的備份策略基礎(chǔ)之上,構(gòu)建數(shù)據(jù)庫,然后恢復(fù)數(shù)據(jù)是比較容易想到的。在云平臺以服務(wù)提供給租戶時,備份和恢復(fù)的功能作為一種服務(wù)提供給租戶時,就不能使用這種方法了。
(2)租戶使用備份和恢復(fù)功能服務(wù)。其作為一種服務(wù)實時提供給租戶,因此需要云平臺使用的數(shù)據(jù)庫之外,還需要一個備份數(shù)據(jù)庫。這個備份數(shù)據(jù)庫是實時存在的,云平臺提供備份和恢復(fù)兩種操作,都是將數(shù)據(jù)存入到備份庫中。備份的實現(xiàn)方法可以采用存儲過程,使用游標(biāo)將租戶A的數(shù)據(jù)提取出來,然后使用循環(huán)和插入操作將數(shù)據(jù)備份到備份數(shù)據(jù)庫。恢復(fù)的方法類似備份的方法,只是從備份庫中提取數(shù)據(jù),將提取的數(shù)據(jù)存入到數(shù)據(jù)庫中,如圖5所示。
圖4 基于共享Schema模型數(shù)據(jù)備份示意圖
圖5 租戶自己進行備份和恢復(fù)示意圖
某珠寶店業(yè)務(wù)管理云平臺使用的是Oracle數(shù)據(jù)庫,以此為例實現(xiàn)上述的兩種備份與恢復(fù)策略,并分析其優(yōu)缺點。Oracle數(shù)據(jù)庫是一個優(yōu)秀而且功能強大的數(shù)據(jù)庫,其對數(shù)據(jù)備份和恢復(fù)策略的實現(xiàn)有很好的支持[4]。
(1)當(dāng)數(shù)據(jù)備份和恢復(fù)的操作是云平臺的維護人員操作時,其實現(xiàn)方案如下:
第一步,實現(xiàn)數(shù)據(jù)備份,使用混合備份模式。其腳本如下:
第二步,當(dāng)需要進行恢復(fù)時,構(gòu)建備份數(shù)據(jù)庫。
第三步,假如是第七天數(shù)據(jù)庫發(fā)生異常,需要恢復(fù)某單一租戶的數(shù)據(jù)。
第四步,創(chuàng)建恢復(fù)數(shù)據(jù)的存儲過程(不是備份庫,而是使用的數(shù)據(jù)庫中)
完成以上四步,即可恢復(fù)某一租戶的數(shù)據(jù)。
(2)當(dāng)數(shù)據(jù)備份和恢復(fù)操作作為功能服務(wù)由租戶使用時,其實現(xiàn)方案如下:
第一步:前提條件。創(chuàng)建一個和云平臺使用的數(shù)據(jù)庫一樣大的空間的備份庫。
第二步:創(chuàng)建備份存儲過程。
第三步,借助云平臺的程序端調(diào)用該存儲過程,完成數(shù)據(jù)備份。
第四步,同上面(一)的第四步。
第五步,借助云平臺的程序端調(diào)用該存儲過程,完成數(shù)據(jù)恢復(fù)。
通過將兩種方案實現(xiàn)并測試發(fā)現(xiàn),第一種方案在備份和恢復(fù)的整個過程中,其缺點是步驟繁瑣,維護人員的工作量相對較大;優(yōu)點是服務(wù)器不需要同時運行兩個數(shù)據(jù)庫,服務(wù)器負載小。第二種方案,其最大優(yōu)點是數(shù)據(jù)備份和恢復(fù)過程操作簡單,但其也有缺點,服務(wù)器同時負載兩個數(shù)據(jù)庫,當(dāng)備份操作密集時,云平臺性能有所降低;當(dāng)數(shù)據(jù)表過多,且表之間關(guān)聯(lián)較多,采用此方案,需要考慮數(shù)據(jù)存入表的先后順序,將關(guān)聯(lián)度的影響降到最低。
總而言之,兩種方案各有優(yōu)勢,沒有哪個完全優(yōu)于另一個,各有其適合的環(huán)境。在云平臺發(fā)展初期,可以采用上面第二種備份與恢復(fù)策略。由于其發(fā)展初期,租戶較少,且其數(shù)據(jù)庫結(jié)構(gòu)相對不復(fù)雜,而且成本較低,操作相對簡單,適合云平臺的起步發(fā)展階段。當(dāng)云平臺發(fā)展到一定程度,租戶較多,不同的租戶需求不同,可以根據(jù)實際情況選擇適當(dāng)?shù)膫浞菖c恢復(fù)方案。
[1]葉偉.互聯(lián)網(wǎng)時代的軟件革命——SaaS架構(gòu)設(shè)計[M].電子工業(yè)出版社,2009:6-9.
[2]唐圣潘,周肆清,丁長松.基于SaaS模式的共享模型的數(shù)據(jù)擴展技術(shù)研究[J].計算機技術(shù)與發(fā)展,2011,27(No.8):63-70
[3]劉淑艷,魯小利.數(shù)據(jù)庫災(zāi)難備份與恢復(fù)技術(shù)分析與研究[J].電子技術(shù)與軟件工程,2013,16:233-234
[4]李峰,劉曉潔,林翰融.基于Oracle數(shù)據(jù)庫的容災(zāi)系統(tǒng)[J].計算機工程與設(shè)計,2011,32(No.11):3573-3577
Cloud Mode;Shared Schema;Data Backup and Recovery;SaaS
Research on Data Backup and Recovery Strategies Based on Shared Schema Model in Cloud Mode
CHEN Jun-zhi,BAI Shang-wang,ZHANG Shao-bo
(College of Computer Science and Technology,Taiyuan University of Science and Technology,Taiyuan 030024)
1007-1423(2016)02-0052-06
10.3969/j.issn.1007-1423.2016.02.013
太原科技大學(xué)校研究生創(chuàng)新基金資助項目(No.20145023)
陳俊志(1990-),男,天津?qū)氎嫒?,碩士,研究方向為軟件工程技術(shù)
白尚旺(1964-),男,山西文水人,碩士,教授,從事領(lǐng)域為數(shù)據(jù)庫與軟件工程技術(shù)、信息管理與決策支持等方面的科研與教學(xué)工作
張少波(1989-),男,河北石家莊人,碩士,軟件工程專業(yè),研究方向為軟件分析與建模
2015-12-01
2015-12-23
對云模式下共享模型的數(shù)據(jù)備份與恢復(fù)策略進行研究,解決多租戶應(yīng)用中單一租戶數(shù)據(jù)恢復(fù)難的問題。首先,簡單地描述了SaaS及其數(shù)據(jù)模型,分析共享數(shù)據(jù)庫共享Schema模型,提出采用該模型下不得不面對的數(shù)據(jù)備份和恢復(fù)的問題。根據(jù)數(shù)據(jù)備份和恢復(fù)的操作者不同,給出兩種解決方案,并在實際的云平臺中應(yīng)用實現(xiàn),最后對兩種解決方案進行對比分析,給出分析結(jié)果。
云模式;共享模型;備份與恢復(fù);SaaS
To solve a single tenant's difficulty of data recovery in multi-tenant application,studies the data backup and recovery strategies based on the shared schema in cloud mode.Describes SaaS and its data model,and mainly analyzes the shared database sharing schema model, proposes to solve the issue of data backup and recovery under the model.According to different data backup and recovery of the operator, are gives and realizes two solutions in the actual application in the cloud platform.Compares and analyzes the results,and presents the analysis.