欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)增量更新方法

文檔序號(hào):8512470閱讀:1554來源:國知局
一種數(shù)據(jù)增量更新方法【
技術(shù)領(lǐng)域
】[0001]本發(fā)明涉及計(jì)算機(jī)、智能設(shè)備、消費(fèi)電子產(chǎn)品等數(shù)據(jù)更新領(lǐng)域,尤其涉及一種數(shù)據(jù)增量更新方法?!?br>背景技術(shù)
】[0002]隨著智能手機(jī)、穿戴設(shè)備等消費(fèi)電子產(chǎn)品提供的應(yīng)用服務(wù)不斷增多,系統(tǒng)更新、應(yīng)用軟件升級(jí)、安全漏洞修復(fù)等數(shù)據(jù)更新業(yè)務(wù)應(yīng)用范圍越來越廣。其中,代碼或數(shù)據(jù)的變化是軟件新舊版本存在差異的主要原因,并且,新舊版本軟件之間的差異信息往往遠(yuǎn)小于軟件本身的大小。因此,使用數(shù)據(jù)增量方式進(jìn)行更新是非常高效的,通過增量更新找到新舊文件之間的差異,并將該差異信息表述成增量文件,增量文件含有指令和數(shù)據(jù),進(jìn)行更新的設(shè)備使用增量文件可以將舊文件轉(zhuǎn)化為新文件。[0003]圖1顯示了現(xiàn)有技術(shù)中數(shù)據(jù)增量更新的基本流程:在服務(wù)器端存儲(chǔ)著舊版本文件(軟件或者數(shù)據(jù))和新版文件,當(dāng)某個(gè)新版本要被發(fā)布前,服務(wù)器比較新文件和舊文件,并將二者的差異信息表述為增量包的形式,增量包被壓縮后得到增量壓縮包,再通過通信網(wǎng)絡(luò)傳遞給需要更新軟件的設(shè)備,設(shè)備收到增量壓縮包并解壓,按照增量包中的指令和數(shù)據(jù)將舊文件轉(zhuǎn)化為新文件。[0004]圖1所示的數(shù)據(jù)更新流程在實(shí)際應(yīng)用中,會(huì)存在受限的網(wǎng)絡(luò)帶寬、按流量計(jì)算的費(fèi)用、以及消費(fèi)電子設(shè)備較小的內(nèi)存和有限的電量等實(shí)際限制,而較小的增量壓縮包能夠減少流量費(fèi)用和下載時(shí)間,應(yīng)用增量包時(shí)較小的內(nèi)存耗費(fèi)和較少的CPU時(shí)鐘周期能夠減少生成新文件的時(shí)間、節(jié)省設(shè)備電量、降低對(duì)正在運(yùn)行的其他應(yīng)用程序的影響,最終提升用戶體驗(yàn)??梢钥闯?,消費(fèi)電子設(shè)備數(shù)據(jù)增量更新方法的主要評(píng)價(jià)標(biāo)準(zhǔn)是:增量包、增量壓縮包的大小和應(yīng)用增量包的時(shí)間。因此,減小增量包和增量壓縮包的大小,以及加快應(yīng)用增量包的速度是數(shù)據(jù)更新方法中需要重點(diǎn)解決的問題。[0005]在現(xiàn)有技術(shù)中,數(shù)據(jù)增量更新方法主要包括:T.Andrew在文獻(xiàn)《EfficientAlgorithmsforSortingandSynchronization》(AustralianNationalUniversity,1999)提出的RDIFF方法,C.Percival在文獻(xiàn)《Naivedifferencesofexecutablecode》(UniversityofOxford,2003)提出的BSDIFF方法,以及D.Korn等作者在文獻(xiàn)《TheVCDIFFGenericDifferencingandCompressionDataFormat》(RFC3284(ProposedStandard),June.2002)提出的VCDIFF方法。[0006]RDIFF方法主要將舊文件和新文件分成相同大小的連續(xù)多個(gè)數(shù)據(jù)塊,計(jì)算每個(gè)數(shù)據(jù)塊的哈希值,依據(jù)哈希值在新舊文件之間尋找相同的數(shù)據(jù)塊,增量包中包括對(duì)舊文件某個(gè)數(shù)據(jù)塊的引用,或者是一個(gè)完整的新數(shù)據(jù)塊。該方法結(jié)構(gòu)簡單,計(jì)算速度快并且適用于解決RDC(RemoteDifferentialCompression)問題,缺點(diǎn)是無法全面采集新舊文件之間所有的相似信息,應(yīng)用該方法的軟件有Rsync和rdiff-backup等。[0007]BSDIFF方法是在新文件和舊文件之間尋找完全相同的數(shù)據(jù)段,接著逐字節(jié)延伸該數(shù)據(jù)段的前綴和后綴,嘗試尋找近似但不完全相同的數(shù)據(jù)段,即近似數(shù)據(jù)段。BSDIFF方法中使用了N.S.Larsson和K.Sadakane提出的后綴數(shù)組排序算法,增量包中指令有ADD、INSERT、SEEK,ADD操作的參數(shù)是近似數(shù)據(jù)段長度和修正量,INSERT操作的參數(shù)是插入段長度和插入內(nèi)容,SEEK操作的參數(shù)是舊文件讀取指針的跳躍跨度。ADD操作的修正量參數(shù)是增量包的主要成分,新舊文件的相似程度與修正量中"〇"的比例成正比,較高的"〇"的比例使得增量壓縮包小于新文件的大小。BSDIFF方法中的增量包較小,但是構(gòu)造增量包和應(yīng)用增量包的計(jì)算量較大,因此費(fèi)時(shí)較多。目前BSDIFF方法是應(yīng)用最廣泛的增量更新算法,Bsdiff工具應(yīng)用了BSDIFF方法。[0008]V⑶IFF方法是基于LZ77(Lempel-Ziv77)壓縮算法進(jìn)行改進(jìn),實(shí)現(xiàn)增量更新。LZ77壓縮算法主要是基于一個(gè)數(shù)據(jù)流中后面的數(shù)據(jù)段與前面的數(shù)據(jù)段相似或者相關(guān)進(jìn)行數(shù)據(jù)壓縮,借鑒LZ77壓縮算法,VCDIFF方法將舊文件和新文件鏈接成一個(gè)數(shù)據(jù)流,應(yīng)用LZ77壓縮算法進(jìn)行壓縮,截取壓縮流中表達(dá)新文件的部分作為增量包。VCDIFF方法的性能介于在RDIFF方法和BSDIFF方法之間,犧牲了部分壓縮率,加快了執(zhí)行的速度。Xdelta是應(yīng)用V⑶IFF方法的軟件之一,并且該軟件還在V⑶IFF基礎(chǔ)上進(jìn)行了改進(jìn),優(yōu)化了其中的指令集,進(jìn)一步減小了增量壓縮包的大小。[0009]為此,需要提供一種數(shù)據(jù)增量更新方法,與現(xiàn)有技術(shù)相比能夠在減少增量包大小、提高增量包壓縮率和加快客戶端設(shè)備的運(yùn)行速度等方面都有顯著的性能提高。【
發(fā)明內(nèi)容】[0010]本發(fā)明主要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)中數(shù)據(jù)增量更新方法普遍存在增量包較大、壓縮率不高、運(yùn)行時(shí)間較長以及這些特性不能同時(shí)較好兼顧的不足,提供一種轉(zhuǎn)化為尋找最短代價(jià)路徑的方式構(gòu)造增量包的數(shù)據(jù)增量更新方法。[0011]為解決上述技術(shù)問題,本發(fā)明采用的一個(gè)技術(shù)方案是:提供.一種數(shù)據(jù)增量更新方法,該方法包括以下步驟:第一步,構(gòu)造相似信息集合Segment,將新文件數(shù)組New包含的字符與舊文件數(shù)組Old包含的字符進(jìn)行對(duì)比運(yùn)算,輸出相同的多個(gè)字符片段segment(s,t,1),其中,s是該字符片段在該舊文件數(shù)組Old中的位置,t是該字符片段在該新文件數(shù)組New中的位置,1是該字符片段的字節(jié)數(shù)量,得到該相似信息集合Segment為:[0012]Segment={segment(s,t,I)|old[s+i]=new[t+i],i=0,I,2,...,1-1};[0013]第二步,構(gòu)造水平線段圖,將該相似信息集合Segment中的該多個(gè)字符片段segment(s,t,1)對(duì)應(yīng)轉(zhuǎn)換為該水平線段圖中的多個(gè)水平線段Segi(t,s-t),該水平線段Segi(t,s-t)的左端點(diǎn)坐標(biāo)為(t,s-t),長度為1,i表示該水平線段Segi(t,s-t)在該水平線段圖中的序號(hào);第三步,構(gòu)造路徑圖,將該水平線段圖中的該多個(gè)水平線段Segi(t,s-t)對(duì)應(yīng)為該路徑圖中的多個(gè)節(jié)點(diǎn)Vi,在該多個(gè)節(jié)點(diǎn)\之間構(gòu)建節(jié)點(diǎn)邊,并計(jì)算每一個(gè)該節(jié)點(diǎn)邊的邊代價(jià);第四步,構(gòu)造最小代價(jià)路徑,從起始節(jié)點(diǎn)segment(0,0,0)經(jīng)過該路徑圖中的該多個(gè)節(jié)點(diǎn)Vi到達(dá)終止節(jié)點(diǎn)segment(newSize,0,0)有多條路徑,計(jì)算每一條路徑包括的多個(gè)該節(jié)點(diǎn)邊的該邊代價(jià)之和,找到和值最小的路徑即為最小代價(jià)路徑,newSize表示該新文件數(shù)組New中的字節(jié)數(shù);第五步,構(gòu)造增量包,根據(jù)該舊文件數(shù)組Old和該新文件數(shù)組New,采用指令集和數(shù)據(jù)集,從起始節(jié)點(diǎn)沿該最小代價(jià)路徑,依次確定相鄰節(jié)點(diǎn)間的指令編碼,由該指令編碼組成該增量包;第六步,應(yīng)用增量包,根據(jù)該舊文件數(shù)組Old,按照該增量包中的該指令編碼字節(jié)逐字節(jié)生成新文件。[0014]在本發(fā)明數(shù)據(jù)增量更新方法另一實(shí)施例中,該將新文件數(shù)組New包含的字節(jié)與舊文件數(shù)組Old包含的字節(jié)進(jìn)行對(duì)比運(yùn)算的方法包括:[0015]首先,對(duì)該舊文件數(shù)組Old進(jìn)行后綴排序,得到該舊文件數(shù)組Old的后綴數(shù)組I;然后,利用該后綴數(shù)組I,在該舊文件數(shù)組Old中尋找與該新文件數(shù)組New中{new[t],new[t+l],···,new[newSize_l]}前綴匹配長度最大的片段{old[s],old[s+l],···,old[s+1-1]},并輸出:[0016]new[t]=old[s],new[t+l]=old[s+l],...,new[t+l-l]=old[s+l-l]〇[0017]在本發(fā)明數(shù)據(jù)增量更新方法另一實(shí)施例中,該構(gòu)造相似信息集合Segment包括進(jìn)一步對(duì)該相似信息集合Segment進(jìn)行消減,該消減方法包括:第一,若存在segment(s',t',1')eS當(dāng)前第1頁1 2 3 4 
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
象州县| 兴城市| 曲阜市| 苗栗县| 绥中县| 图片| 吕梁市| 游戏| 湘乡市| 额敏县| 静海县| 玉门市| 稻城县| 石景山区| 太仓市| 西吉县| 二连浩特市| 吴桥县| 康平县| 五华县| 广东省| 墨竹工卡县| 永城市| 四平市| 克拉玛依市| 郯城县| 莱西市| 外汇| 长武县| 治县。| 定州市| 漯河市| 民乐县| 嘉鱼县| 通山县| 武穴市| 文水县| 新晃| 河源市| 宝山区| 嵩明县|