專利名稱:一種大型xml文件的網(wǎng)絡(luò)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及XML文件的傳輸,特別涉及一種大型XML文件的網(wǎng)絡(luò)傳輸方法。
背景技術(shù):
XML (可擴(kuò)展標(biāo)記文件)是一種標(biāo)記語言,其具有如下優(yōu)點(diǎn)(1)自描述性;(2)支持文檔內(nèi)容的驗(yàn)證;C3)允許不同領(lǐng)域的標(biāo)記語言的存在;(4)支持高級(jí)搜集,故而,XML格式的文件在現(xiàn)今的互聯(lián)網(wǎng)應(yīng)用中被大量使用。由于現(xiàn)今hternet網(wǎng)絡(luò)帶寬容量的限制,使得系統(tǒng)在進(jìn)行大型XML文件傳輸時(shí),對(duì)XML進(jìn)行有效的壓縮及傳輸機(jī)制的設(shè)計(jì)顯得尤為重要。大型XML文件傳輸現(xiàn)有如下的兩種方式(1)文件結(jié)構(gòu)感知;(2)非文件結(jié)構(gòu)感知兩種方式;而在文件結(jié)構(gòu)感知方式中又分為基于schema方式和非schema方式兩種??紤]到XML文件是以文本方式進(jìn)行存儲(chǔ),在非結(jié)構(gòu)感知方式下現(xiàn)行系統(tǒng)多采用傳統(tǒng)的文本壓縮方式進(jìn)行XML文件的壓縮,例如采用bzip2,gzip等方式。雖然該種方式在對(duì)文本文件壓縮時(shí)具有較大的壓縮率,但同時(shí)此種方式缺點(diǎn)也較為明顯(1)壓縮需占用較多計(jì)算資源(CPU,內(nèi)存,IO等);( 需要在發(fā)送端和接收端,同時(shí)具有相同的壓縮/解壓縮算法;(3)無法對(duì)壓縮后的文件進(jìn)行在線查詢。結(jié)構(gòu)感知方式的壓縮方式,其旨在利用對(duì)XML文檔結(jié)構(gòu)的感知來實(shí)現(xiàn)壓縮的一種壓縮方式,相對(duì)XML文檔進(jìn)行一般文本壓縮處理的方式來說,該方法進(jìn)一步提供了壓縮率, 但其依賴于其后端的壓縮/解壓算法和相應(yīng)的XML文檔的格式或XML文檔的khema,而沒有對(duì)于XML文檔中的一些冗余信息進(jìn)行相應(yīng)的處理。基于對(duì)上述問題的討論我們提出一種新的基于壓縮和分批傳輸?shù)拇笮蚗ML文件網(wǎng)絡(luò)傳輸方法,該方法具有較高的壓縮率,較低的壓縮/解壓資源消耗,以及較快的傳輸速率等優(yōu)點(diǎn)從而以較低的資源需求來完成海量數(shù)據(jù)的傳輸。在進(jìn)行大型XML文件網(wǎng)絡(luò)傳輸時(shí),首要考慮的問題是網(wǎng)絡(luò)帶寬,其次是要考慮盡可能地減少所需要傳輸文檔的大小,最后要考慮的是傳輸過程所造成文檔誤差的檢查和修復(fù)能力。在此,我們主要關(guān)注前面兩點(diǎn),即如何在有限的網(wǎng)絡(luò)帶寬下,提高系統(tǒng)的吞吐量?,F(xiàn)有對(duì)于大型XML文檔進(jìn)行網(wǎng)絡(luò)傳輸時(shí)所采用的方法有上述提及的基于XML文檔結(jié)構(gòu)感知和非結(jié)構(gòu)感知的兩種主要方法,他們的重點(diǎn)均側(cè)重于對(duì)于XML文檔的壓縮處理, 而對(duì)于壓縮后的文件的傳輸問題則沒有過多的討論。下面就主要討論一下上述各個(gè)方案。首先,對(duì)于非結(jié)構(gòu)感知,其主要側(cè)重于對(duì)于 XML文檔進(jìn)行相關(guān)的壓縮,其所采用的方法是將XML文檔作為文本文件進(jìn)行壓縮/解壓處理,從而達(dá)到減少相應(yīng)所需傳輸文件大小的目的。如在進(jìn)行XML文檔傳輸之前對(duì)相關(guān)文檔使用文本壓縮算法進(jìn)行壓縮,在接收端使用相應(yīng)的解壓算法對(duì)所接收的壓縮文件進(jìn)行解壓并還原出源文件。該方案主要使用基于LZ77和Huffman編碼,Burrows-Wheeler轉(zhuǎn)換和自適應(yīng)統(tǒng)計(jì)數(shù)據(jù)壓縮技術(shù)的gzip,bzip2, PPM等算法對(duì)XML文檔進(jìn)行相關(guān)壓縮。結(jié)構(gòu)感知的壓縮算法主要利用了 XML文檔的高度結(jié)構(gòu)化的特點(diǎn),對(duì)XML文檔進(jìn)行結(jié)構(gòu)分析,將XML文檔的結(jié)構(gòu)和數(shù)據(jù)分開,將XML文檔結(jié)構(gòu)使用樹型數(shù)據(jù)結(jié)構(gòu)來表示,然后將各個(gè)節(jié)點(diǎn)的數(shù)據(jù)保存至該樹的各個(gè)葉子節(jié)點(diǎn)上的同質(zhì)的容器中。XMill作為獨(dú)立模式的結(jié)構(gòu)感知的壓縮算法現(xiàn)在已經(jīng)廣泛的應(yīng)用在大型XML文檔壓縮中。例如對(duì)于如下的XML文檔
<books>
<bookid="bookl">
<title> Discovery in deep ocean </title> <price>12.5</price> <author>Brad.Pitt</author〉 </book>
〈book id="book2">
<title>anonymous</title> <price>21.4</price> <authro>annoy</author〉 </book> </books>XMill首先根據(jù)文檔中的所有元素節(jié)點(diǎn)構(gòu)造相應(yīng)的元素容器,下表表示上述的 XML文檔所對(duì)應(yīng)的元素容器及屬性容器和數(shù)據(jù)容器的情況。元素表
權(quán)利要求
1.一種大型XML文件的網(wǎng)絡(luò)傳輸方法,其特征在于,包括以下步驟51讀取XML文檔;52對(duì)XML文檔的所有節(jié)點(diǎn)標(biāo)簽進(jìn)行預(yù)處理;53對(duì)XML文檔中的冗余標(biāo)簽進(jìn)行處理;54完成XML文檔的壓縮處理和分片傳輸。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S2進(jìn)一步包括S21 尋找出XML文檔中所有節(jié)點(diǎn)標(biāo)簽信息,并將所述節(jié)點(diǎn)標(biāo)簽信息保存至一張節(jié)點(diǎn)數(shù)據(jù)表中,并對(duì)所述節(jié)點(diǎn)數(shù)據(jù)表中的每一項(xiàng)賦予唯一編號(hào)作為該項(xiàng)在表中的索引值;S22:在完成所述節(jié)點(diǎn)數(shù)據(jù)表的建立后,使用節(jié)點(diǎn)所對(duì)應(yīng)的索引號(hào)對(duì)所述XML文檔進(jìn)行相應(yīng)的處理,對(duì)于所述節(jié)點(diǎn)在文檔中的出現(xiàn)的位置使用其對(duì)應(yīng)的節(jié)點(diǎn)索引號(hào)進(jìn)行代替。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述步驟S4進(jìn)一步包括541設(shè)置分片的初始大小為hitial_Size ;542取出若干個(gè)數(shù)據(jù)作為一個(gè)數(shù)據(jù)包進(jìn)行壓縮處理,并進(jìn)行網(wǎng)絡(luò)傳輸;其中所述數(shù)據(jù)包的大小為hitial_Size ;543判斷當(dāng)前網(wǎng)絡(luò)負(fù)載狀況,并得到網(wǎng)絡(luò)自動(dòng)生成的最大傳輸單元的值;544根據(jù)當(dāng)前網(wǎng)絡(luò)負(fù)載狀況和最大傳輸單元的值重新確定分片大小為New_Size ;545重新取大小為New_Size的數(shù)據(jù)包進(jìn)行壓縮處理,并進(jìn)行網(wǎng)絡(luò)傳輸;546重復(fù)步驟S43至步驟S45,直至XML文檔全部傳輸完成。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟S43中,判斷當(dāng)前網(wǎng)絡(luò)負(fù)載狀況, 具體包括A431 步驟S42中數(shù)據(jù)包傳輸后,計(jì)算得到所述數(shù)據(jù)包的數(shù)據(jù)傳輸時(shí)間TT,其中,所述數(shù)據(jù)傳輸時(shí)間TT為所述數(shù)據(jù)包發(fā)送時(shí)間與響應(yīng)時(shí)間之間的差值;A432 設(shè)定所述數(shù)據(jù)傳輸時(shí)間TT的初始上限值TT_MAX,用以描述數(shù)據(jù)在該網(wǎng)絡(luò)中的傳輸所需的最大時(shí)間,即在網(wǎng)絡(luò)異常擁堵的情況下,數(shù)據(jù)由發(fā)送端傳輸?shù)浇邮斩怂璧淖畲髠鬏敃r(shí)間;A433 判斷網(wǎng)絡(luò)負(fù)載狀況若所述數(shù)據(jù)傳輸時(shí)間TT在區(qū)間(0,ΤΤ_ΜΑΧ]內(nèi),則認(rèn)為該網(wǎng)絡(luò)負(fù)載較為正常;若所述數(shù)據(jù)傳輸時(shí)間TT在區(qū)間(TT_MAX,+ -)內(nèi)則表明該段網(wǎng)絡(luò)狀況較差。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟S44進(jìn)一步包括5441在時(shí)間T內(nèi)隨機(jī)抽取1\、T2......V1, Tn.....Tm個(gè)數(shù)據(jù)傳輸時(shí)間,這里的T指的是采樣時(shí)間;5442計(jì)算所述m個(gè)數(shù)據(jù)傳輸時(shí)間的統(tǒng)計(jì)算術(shù)平均值,即統(tǒng)計(jì)平均傳輸時(shí)間ATm = m/ (1/V1/V......+1/TJ(4. 1)5443設(shè)定一個(gè)閾值,用以描述所述ATm的最大值;5444比較TN_i、Tn兩段時(shí)間內(nèi)數(shù)據(jù)報(bào)文的統(tǒng)計(jì)平均傳輸時(shí)間ATn和AT1^1的差值;檢查所述ATAn和所述ATim的關(guān)系是否滿足如公式(4. 2),如滿足,則可以進(jìn)一步按照公式(4. 3) 來增加發(fā)送分片的大小,否則執(zhí)行S445 ;1- ( (ATn-AV1) /AV1)彡闕值(4. 2)New_Size = Initial_Size*(l+a)N(4. 3)其中dnitialSize為初始分片大小,New_SiZe為調(diào)整后的數(shù)據(jù)分片大小,a為數(shù)據(jù)分片的增幅大小,N為增幅指數(shù),其初始值可以設(shè)置為1,每次執(zhí)行所述算法時(shí)候?qū)設(shè)置為N =N士 1 ;S445 將a設(shè)置為_a,N設(shè)置為N-I (N彡1),并用公式(4. 3)來重新調(diào)整數(shù)據(jù)分片的大
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S3進(jìn)一步包括刪除所有節(jié)點(diǎn)的右標(biāo)簽。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟S42中取出的數(shù)據(jù)同時(shí)包括該數(shù)據(jù)在整個(gè)文檔中的節(jié)點(diǎn)數(shù)據(jù)表。
全文摘要
本發(fā)明公開了一種大型XML文件的網(wǎng)絡(luò)傳輸方法,包括S1讀取XML文檔。S2對(duì)XML文檔的所有節(jié)點(diǎn)標(biāo)簽進(jìn)行預(yù)處理。S3對(duì)XML文檔中的冗余標(biāo)簽進(jìn)行處理。S4完成XML文檔的壓縮處理和分片傳輸,進(jìn)一步包括S41設(shè)置分片的初始大小為Initial_Size;S42取出若干個(gè)數(shù)據(jù)作為一個(gè)數(shù)據(jù)包進(jìn)行壓縮處理,并進(jìn)行網(wǎng)絡(luò)傳輸,其中該數(shù)據(jù)包的大小為Initial_Size;S43判斷當(dāng)前網(wǎng)絡(luò)負(fù)載狀況,并得出最大傳輸單元的值;S44根據(jù)當(dāng)前網(wǎng)絡(luò)負(fù)載狀況和最大傳輸單元的值重新確定分片大小為New_Size;S45重新取大小為New_Size的數(shù)據(jù)包進(jìn)行壓縮處理,網(wǎng)絡(luò)傳輸;S46重復(fù)步驟S43至步驟S45。
文檔編號(hào)H04L29/08GK102571966SQ20121001318
公開日2012年7月11日 申請(qǐng)日期2012年1月16日 優(yōu)先權(quán)日2012年1月16日
發(fā)明者關(guān)健, 劉鈺, 孫偉豐, 徐邵稀, 李 浩, 王恒, 王文軍, 程仁波, 羅正海, 胡奎, 賴錚, 趙偉, 鄭程光 申請(qǐng)人:上海方正數(shù)字出版技術(shù)有限公司