徐 智,王 岳,王 欣
(1. 三江學(xué)院機(jī)械與電氣工程學(xué)院,江蘇 南京 210012;2. 江蘇科技大學(xué)船舶與海洋工程學(xué)院,江蘇 鎮(zhèn)江 212003)
傳統(tǒng)網(wǎng)絡(luò)中,數(shù)據(jù)大部分以結(jié)構(gòu)化形式傳遞與存儲,隨著云計(jì)算網(wǎng)絡(luò)的發(fā)展,非結(jié)構(gòu)化數(shù)據(jù)大量涌現(xiàn)。所謂非結(jié)構(gòu)化,表示不具有固定格式,不具有約定規(guī)則[1],這類數(shù)據(jù)不容易統(tǒng)一處理,也不利于理解。但是在IDC的統(tǒng)計(jì)報告中提到,這類無規(guī)則數(shù)據(jù)的年增長速度超過60%,在2020年會達(dá)到40ZB。當(dāng)前,Google日處理網(wǎng)頁量在20PB以上;Facebook日存儲數(shù)據(jù)量在15TB以上;一些實(shí)驗(yàn)室和教育機(jī)構(gòu)的非結(jié)構(gòu)化數(shù)據(jù)日生成量也在TB或者PB級別,其中,主要由本文、網(wǎng)頁、音視頻等組成。依托著云計(jì)算,非結(jié)構(gòu)數(shù)據(jù)正在向著海量發(fā)展,其存儲負(fù)擔(dān)和存儲成本也急劇上升,同時,對非結(jié)構(gòu)大數(shù)據(jù)的持久化和操作也有著嚴(yán)格的可靠程度和時延要求。在其優(yōu)化存儲研究中,可靠程度的保證主要是采取冗余持久化機(jī)制;而在提高時效方面,由于現(xiàn)有的存儲機(jī)制采取的是統(tǒng)一結(jié)構(gòu)處理,將其直接向非結(jié)構(gòu)化拓展存在很大難度,所以針對非結(jié)構(gòu)化存儲機(jī)制和存儲方法的優(yōu)化亟待解決[2]。采用Hadoop集群并行存儲,是當(dāng)下主流的持久化框架,但是還需要在此基礎(chǔ)上部署數(shù)據(jù)清洗和存儲調(diào)度策略等。有學(xué)者[3]設(shè)計(jì)了有關(guān)節(jié)點(diǎn)類型的存儲方案,根據(jù)節(jié)點(diǎn)所屬類型,以及相應(yīng)的流行度對數(shù)據(jù)采取差異性存儲。這種存儲機(jī)制有利于降低云存儲數(shù)據(jù)的傳輸距離與訪問時延,但是沒有針對非結(jié)構(gòu)化數(shù)據(jù)的優(yōu)化處理。也有學(xué)者[4]提出了UDSS存儲,通過MongoDB[5]或者NoSQL數(shù)據(jù)庫的拓展查詢機(jī)制,與其它組件集成非關(guān)系數(shù)據(jù)庫[6]。另外,非結(jié)構(gòu)化數(shù)據(jù)由于不規(guī)則,在云存儲過程中很容易受到損壞,因此通常進(jìn)行數(shù)據(jù)審計(jì)。當(dāng)前多采用三方審計(jì),這種方法存在著單點(diǎn)失效、時間開銷增加等問題。考慮到區(qū)塊鏈網(wǎng)絡(luò)具有良好的去中心化和拓展能力[7],可以替代三方審計(jì),改善交互速度。為此,本文在優(yōu)化非結(jié)構(gòu)化大數(shù)據(jù)云存儲方法的同時,引入?yún)^(qū)塊鏈,并在區(qū)塊鏈網(wǎng)絡(luò)中對數(shù)據(jù)進(jìn)行完整性驗(yàn)證,進(jìn)一步提高非結(jié)構(gòu)化大數(shù)據(jù)的云存儲性能。
根據(jù)云環(huán)境中的分布與偏好差異,將數(shù)據(jù)調(diào)度方程描述如下
mij=w1a+w2b+w3c+w4d
(1)
這里的w1~w4為加權(quán)系數(shù),它們的和為1;a項(xiàng)為云存儲數(shù)據(jù)包采樣時間成本;b項(xiàng)為數(shù)據(jù)包符合要求的程度;c項(xiàng)為存儲質(zhì)量;d項(xiàng)為存儲消耗。假定云環(huán)境面臨的非結(jié)構(gòu)化數(shù)據(jù)總量為n,對應(yīng)的持久化集合為(1,2,…,n+a),a>0。集合中n+a代表網(wǎng)絡(luò)中節(jié)點(diǎn)的數(shù)量,也代表了存儲的數(shù)據(jù)量。由此可以得到任意存儲數(shù)據(jù),如下所示
yi=λi[x1,x2,…,xn]
(2)
其中,λi是域F2={0,1}中的行向量;xi為數(shù)據(jù)包。為保證數(shù)據(jù)包的唯一性,構(gòu)成向量λi的元素應(yīng)符合如下分布規(guī)則

(3)


(4)


(5)
其中,v是節(jié)點(diǎn)總數(shù)。在存儲節(jié)點(diǎn)選擇概率為0.5時,非滿秩概率關(guān)系化簡成pfailure≤(0.5)a。考慮到存儲過程中的損耗受節(jié)點(diǎn)數(shù)量影響,將其關(guān)系采取指數(shù)形式表示為

(6)
在進(jìn)行存儲操作時,本文采用了F2={0,1}域獲得存儲所需信息。調(diào)度控制根據(jù)域首判斷出數(shù)據(jù)狀況,并實(shí)時更新存儲策略。將調(diào)度控制存儲窗表示為{di|i=1,2,…,m},包采集窗表示為{dj|j=m-k+1,…,m}。其中,k為采集窗大小,且k (7) 對下一輪存儲數(shù)據(jù)包進(jìn)行預(yù)估,dm+1代表實(shí)際值;m+1代表估計(jì)值。于是,可以得到關(guān)于數(shù)據(jù)的動態(tài)振蕩 (8) 當(dāng)D(m,k)增加,即云環(huán)境中的非結(jié)構(gòu)化大數(shù)據(jù)振蕩活躍時,應(yīng)該加速存儲頻次;當(dāng)D(m,k)減小,即云環(huán)境中的非結(jié)構(gòu)化大數(shù)據(jù)振蕩活躍度下降,應(yīng)該降低存儲頻次。 為了更好的提升非結(jié)構(gòu)大數(shù)據(jù)云存儲效率,引入審計(jì)方案進(jìn)行優(yōu)化存儲。首先對云存儲數(shù)據(jù)包采取審計(jì)需求分析。存儲數(shù)據(jù)包是否進(jìn)行審計(jì),審計(jì)的必要程度有多大,受數(shù)據(jù)包的屬性〈dv,hv〉影響,dv表示數(shù)據(jù)損壞的概率;hv表示數(shù)據(jù)熱度。把單一屬性的與審計(jì)需求關(guān)系擴(kuò)展至數(shù)據(jù)包級別,得到云存儲數(shù)據(jù)包的存儲審計(jì)需求如下 (9) Qmax是最大審計(jì)需求;μ1、μ2依次是屬性dv與hv的加權(quán)系數(shù)。 然后對數(shù)據(jù)存儲時間采取審計(jì)。由于對時間進(jìn)行審計(jì)能夠確定數(shù)據(jù)存儲的時間消耗,在完成數(shù)據(jù)存儲的前提下盡可能降低節(jié)點(diǎn)存儲時間。假定數(shù)據(jù)包存儲集合是{D1,D2,…,Dn},任意數(shù)據(jù)包Di被存儲次數(shù)是ci,于是可以得到存儲審計(jì)時間如下 (10) 其中,ti,j代表第j次存儲審計(jì)的耗時。再對云存儲數(shù)據(jù)包的數(shù)量進(jìn)行審計(jì)。根據(jù)審計(jì)周期將存儲數(shù)據(jù)包采取正序排列{T1,T2,…,Tu},在第i個周期內(nèi)數(shù)據(jù)包存儲所需的平均耗時是τi,于是可以得到存儲數(shù)據(jù)包的數(shù)量審計(jì)如下 (11) 對于周期Ti,如果取值偏小,會使審計(jì)結(jié)果急劇上升;如果取值偏大,則會使存儲數(shù)據(jù)包的審計(jì)集合過于龐大。審計(jì)過程中,結(jié)合匹配指標(biāo)盡可能保證數(shù)據(jù)包分散在各個周期中。這里將匹配指標(biāo)定義如下 Maudit=(Sp-Smin)/Smin (12) 其中,Sp為審計(jì)強(qiáng)度;Smin為滿足存儲數(shù)據(jù)審計(jì)需求的Sp下限。Maudit指標(biāo)用于衡量審計(jì)處理的偏差。當(dāng)Maudit>0時,說明審計(jì)的強(qiáng)度超出需求范圍;當(dāng)Maudit<0時,說明強(qiáng)度在需求范圍內(nèi);當(dāng)Maudit=0時,說明強(qiáng)度正好滿足需求。Sp指標(biāo)能夠體現(xiàn)存儲數(shù)據(jù)的審計(jì)效果,如數(shù)據(jù)識別能力。假定將數(shù)據(jù)審計(jì)效果表示為關(guān)于審計(jì)周期的鍵值對形式〈Tv,Zv〉,其中Zv表示Tv周期內(nèi)的數(shù)據(jù)識別率。則對應(yīng)的Sp指標(biāo)表示如下 (13) Smax代表最大審計(jì)強(qiáng)度;Tmax、Zmax依次為Tv與Zv的最大值;η1、η2依次為Tv與Zv的加權(quán)系數(shù)。 云計(jì)算采用數(shù)組與Merkle樹對非結(jié)構(gòu)化大數(shù)據(jù)進(jìn)行存儲。將保存非結(jié)構(gòu)化數(shù)據(jù)的數(shù)組以一對一的形式映射至Merkle樹,數(shù)組結(jié)構(gòu)包含ID與Merkle根節(jié)點(diǎn)地址。這樣一來,在有數(shù)據(jù)增加的情況下,就轉(zhuǎn)變?yōu)閿?shù)組相應(yīng)Merkle樹的操作。Merkle樹由inner與leaf兩種節(jié)點(diǎn)構(gòu)成,其中,leaf采用(O,Hash,)形式數(shù)據(jù)結(jié)構(gòu),它的Hash選取的是同態(tài)Hash[8],O表示加密數(shù)據(jù)ID和數(shù)組ID,表示D的加密數(shù)據(jù)。inner采用(O,Hash)鍵值對形式的數(shù)據(jù)結(jié)構(gòu),它的Hash選取的是MD5,O表示leaf內(nèi)的最大O值。假定任意非結(jié)構(gòu)化數(shù)據(jù)D(ID,NAME,d1,d2,d3),在區(qū)塊鏈中,根據(jù)ID和NAME分辨數(shù)據(jù),所有節(jié)點(diǎn)會通過共享密鑰實(shí)現(xiàn)除ID和NAME以外的加密處理[9]。當(dāng)系統(tǒng)存在數(shù)據(jù)更新,只需要對加密后的數(shù)據(jù)進(jìn)行修改,于是,數(shù)據(jù)更新過程描述為 UD=(1+Δd1,2+Δd2,3+Δd3) (14) 根據(jù)數(shù)據(jù)更新計(jì)算可知該過程符合同態(tài)Hash。在區(qū)塊鏈結(jié)構(gòu)設(shè)計(jì)中,其首部組件有父Hash、Merkle根Hash、時間戳,以及所在區(qū)塊Hash。其中,父Hash用于構(gòu)造鏈型結(jié)構(gòu),指向了前一區(qū)塊Hash。所在區(qū)塊Hash是由其余三個組件經(jīng)過MD5計(jì)算得到,該Hash將會作為下一區(qū)塊的父Hash。區(qū)塊體組件有HashTable、Merkle樹和認(rèn)證路徑。其中,HashTable用于存放區(qū)塊鏈網(wǎng)絡(luò)驗(yàn)證的請求,根據(jù)這些請求創(chuàng)建Merkle樹。在Merkle樹中,由leaf構(gòu)成的數(shù)組即為認(rèn)證路徑。在區(qū)塊鏈網(wǎng)絡(luò)的創(chuàng)世區(qū)塊中,父Hash和Merkle均是空值,創(chuàng)世區(qū)塊Hash僅由時間戳計(jì)算得到。圖1描述了本文的區(qū)塊鏈模型。 圖1 區(qū)塊鏈模型 考慮到非結(jié)構(gòu)化大數(shù)據(jù)云存儲過程中,存儲數(shù)據(jù)完整性審計(jì)依托于三方引發(fā)的存儲效率下降問題,基于區(qū)塊鏈網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)據(jù)完整性驗(yàn)證。驗(yàn)證階段,區(qū)塊鏈網(wǎng)絡(luò)授權(quán)中心首先根據(jù)計(jì)算得到密鑰鍵值,然后節(jié)點(diǎn)將非結(jié)構(gòu)化數(shù)據(jù)采取加密、Hash操作,得到Lk(),并傳送出去。云計(jì)算網(wǎng)絡(luò)接收到數(shù)據(jù)后經(jīng)過審計(jì)進(jìn)行存儲,同時得到區(qū)塊鏈網(wǎng)絡(luò)加密數(shù)據(jù)的Merkle樹葉子節(jié)點(diǎn)。當(dāng)區(qū)塊鏈網(wǎng)絡(luò)發(fā)現(xiàn)數(shù)據(jù)存在更新,則將Merkle對應(yīng)的葉子節(jié)點(diǎn)進(jìn)行修改。網(wǎng)絡(luò)中負(fù)責(zé)驗(yàn)證的節(jié)點(diǎn)會隨機(jī)選擇數(shù)據(jù)ID,與云存儲網(wǎng)絡(luò)、區(qū)塊鏈網(wǎng)絡(luò)中該ID數(shù)據(jù)相關(guān)的節(jié)點(diǎn)做驗(yàn)證。云存儲網(wǎng)絡(luò)搜索到數(shù)據(jù)標(biāo)簽后回送響應(yīng)至區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn),一起回送的還有Merkle樹根Hash,區(qū)塊鏈節(jié)點(diǎn)搜索到對應(yīng)標(biāo)簽Lk()后對比Merkle樹根Hash,當(dāng)確認(rèn)Hash值一致時,則表明驗(yàn)證成功,數(shù)據(jù)完整性驗(yàn)證結(jié)束。 基于4臺PC建立實(shí)驗(yàn)平臺,配置為:Ubuntu12.04.3系統(tǒng),16GB內(nèi)存,150GB ATAHitachiHTS54501硬盤。其中,2臺PC建立云存儲網(wǎng)絡(luò)集群,部署非結(jié)構(gòu)化數(shù)據(jù)存儲方法與存儲審計(jì)策略。另外2臺PC建立區(qū)塊鏈,部署驗(yàn)證策略。仿真時間設(shè)定24h,審計(jì)策略參數(shù)設(shè)置為μ1=μ2=0.5,η1=0.3,η2=0.7,dmax=0.3,hmax=2,Tmax=5,Zmax=1。 首先,仿真確定格式差異對非結(jié)構(gòu)化數(shù)據(jù)云存儲時間的影響,實(shí)驗(yàn)用的非結(jié)構(gòu)化數(shù)據(jù)含有文本、圖像、網(wǎng)頁三種格式,總量達(dá)到100萬條。在文本、圖像、網(wǎng)頁三種格式下,依次改變請求進(jìn)程的數(shù)量,得到存儲時間的變化情況,結(jié)果如圖2所示。根據(jù)存儲時間的變化曲線可知,在請求進(jìn)程數(shù)量相同時,三種格式數(shù)據(jù)的存儲時間比較接近,說明非結(jié)構(gòu)化數(shù)據(jù)的格式差異并不會導(dǎo)致存儲時間的明顯差異,方法對于格式差異的非結(jié)構(gòu)化數(shù)據(jù)具有良好的普適性。在請求進(jìn)程增加的過程中,存儲時間的增速在逐漸放緩,并接近與平穩(wěn),表明本文提出的非結(jié)構(gòu)化數(shù)據(jù)云存儲方法能夠應(yīng)對大量請求訪問,具有良好的大數(shù)據(jù)處理能力。 圖2 三種格式非結(jié)構(gòu)化數(shù)據(jù)存儲時間 再針對存儲數(shù)據(jù)完整性審計(jì)功能進(jìn)行驗(yàn)證,在給定數(shù)據(jù)包為1024kB的前提下,通過遞增數(shù)據(jù)包數(shù)量,仿真得到數(shù)據(jù)完整性審計(jì)的時間開銷,結(jié)果如圖3所示。本文引入TPA[10]審計(jì)作為對比,根據(jù)結(jié)果對比可知,本文的完整性審計(jì)時間開銷明顯縮短,且受數(shù)據(jù)包數(shù)量影響較小。在給定數(shù)據(jù)包數(shù)量為100的情況下,依次增加數(shù)據(jù)包的大小,每次增幅為1024kB,通過仿真得到此時數(shù)據(jù)完整性審計(jì)的時間開銷,結(jié)果如圖4所示。根據(jù)數(shù)據(jù)完整性審計(jì)結(jié)果可以發(fā)現(xiàn),兩種方法的審計(jì)時間受數(shù)據(jù)包數(shù)量變化影響較小,受數(shù)據(jù)包大小的影響較大,但是經(jīng)過與TPA審計(jì)對比可知,對于同樣大小的數(shù)據(jù)包,本文方法所需的審計(jì)時間明顯更短,且隨數(shù)據(jù)包大小變化的增幅更為緩慢。數(shù)據(jù)完整性審計(jì)時間開銷的縮短,是由于云存儲網(wǎng)絡(luò)每接收固定個數(shù)據(jù)包就會構(gòu)造出相應(yīng)的區(qū)塊數(shù)據(jù),由區(qū)塊鏈網(wǎng)絡(luò)完成數(shù)據(jù)完整性審計(jì),并且結(jié)合匹配指標(biāo)盡可能保證數(shù)據(jù)包分散在各個審計(jì)周期內(nèi),避免云存儲節(jié)點(diǎn)出現(xiàn)空閑和審計(jì)急劇上升的情況。 圖3 存儲數(shù)據(jù)量對完整性審計(jì)時間的影響 圖4 數(shù)據(jù)包大小對完整性審計(jì)時間的影響 最后,為了驗(yàn)證本文方法在非結(jié)構(gòu)化大數(shù)據(jù)云存儲時間開銷上的性能優(yōu)勢,仿真過程中通過依次遞增非結(jié)構(gòu)化數(shù)據(jù)的大小,得到云存儲的時間開銷,并與文獻(xiàn)[3]方法的性能做對比,結(jié)果如圖5所示。根據(jù)結(jié)果對比可知,本文方法的非結(jié)構(gòu)化大數(shù)據(jù)云存儲時間開銷明顯小于對比方法,存儲效率顯著提升。 圖5 非結(jié)構(gòu)化大數(shù)據(jù)云存儲時間開銷 本文提出了基于區(qū)塊鏈技術(shù)的非結(jié)構(gòu)化大數(shù)據(jù)云存儲方法。針對云存儲網(wǎng)絡(luò)端的非結(jié)構(gòu)化數(shù)據(jù),通過域分析獲得存儲信息,根據(jù)估算的數(shù)據(jù)振蕩情況動態(tài)調(diào)整存儲頻次。同時在云存儲網(wǎng)絡(luò)端設(shè)計(jì)了數(shù)據(jù)存儲審計(jì)方案,旨在提高數(shù)據(jù)存儲效率。為了保證非結(jié)構(gòu)化大數(shù)據(jù)云存儲的完整性驗(yàn)證效率,引入?yún)^(qū)塊鏈技術(shù),設(shè)計(jì)了相應(yīng)的區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu),并在其中實(shí)現(xiàn)了數(shù)據(jù)完整性高效驗(yàn)證。通過仿真,證明了本文所提方法對于格式差異的非結(jié)構(gòu)化數(shù)據(jù)具有良好的普適性,且顯著提高了非結(jié)構(gòu)化數(shù)據(jù)的云存儲效率,能夠有效應(yīng)對大量請求訪問數(shù)據(jù),具有良好的大數(shù)據(jù)處理能力。

3 云存儲數(shù)據(jù)審計(jì)




4 區(qū)塊鏈網(wǎng)絡(luò)設(shè)計(jì)

5 實(shí)驗(yàn)與結(jié)果分析
5.1 實(shí)驗(yàn)參數(shù)設(shè)置
5.2 實(shí)驗(yàn)結(jié)果分析




6 結(jié)束語