專(zhuān)利名稱:一種xml數(shù)據(jù)壓縮和解壓縮方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及XML數(shù)據(jù)處理領(lǐng)域,尤其涉及一種XML數(shù)據(jù)壓縮和解壓縮方法及系統(tǒng)。
背景技術(shù):
XML (可擴(kuò)展標(biāo)記語(yǔ)言)作為一種跨平臺(tái)的標(biāo)準(zhǔn)數(shù)據(jù)交換格式而廣泛應(yīng)用于web服務(wù)、數(shù)據(jù)交換和存儲(chǔ)等方面,是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。由于XML文檔中包含大量重復(fù)出現(xiàn)的標(biāo)簽和結(jié)構(gòu)信息,所以在XML文檔中存在大量數(shù)據(jù)冗余,因此在很多應(yīng)用中需要對(duì)其進(jìn)行壓縮。常用的XML壓縮方法有XMILL、XMLPPM、XffRT等等。XMILL壓縮方法首先通過(guò)語(yǔ)法解析器SAX將XML結(jié)構(gòu)信息從XML文檔中分離出來(lái), 然后根據(jù)不同的語(yǔ)義將XML文檔數(shù)據(jù)項(xiàng)重組到不同的容器中,最后使用GZip對(duì)各個(gè)容器分別進(jìn)行壓縮,從而生成壓縮的XML文檔。關(guān)于XMILL壓縮方法的具體內(nèi)容可參見(jiàn)“XMill AnEfficient Compressor for XML Data,,,Proc. of the ACM SIGMODInternational Conference on Management of Data, 2000 :153-164。XMLPPM 壓縮方法首先采用 MHM(Multiplexed HierarchicalModeling)技術(shù)將 XML文檔中的標(biāo)簽、屬性和數(shù)據(jù)項(xiàng)按照四種模型進(jìn)行分類(lèi),然后采用PPM(Prediction by Partial Match)編碼方式對(duì)各個(gè)模型中的數(shù)據(jù)進(jìn)行壓縮編碼。關(guān)于XMLPPM壓縮方法的具 {φI^I^n]"#jAL“Compressing XML with Multiplexed Hierarchical PPMModeIs", Proc. of the IEEE Data Compression Conference,2000 :163一172。XWRT壓縮方法類(lèi)似于XMill,采取了類(lèi)似的語(yǔ)義分組策略。但是,它用更短的代碼代替了頻繁使用的單詞,創(chuàng)建了一個(gè)半動(dòng)態(tài)的詞典,并利用zlib (默認(rèn))、LZMA、PPMVC或 lpaq6作為后端壓縮器。關(guān)于XWRT壓縮方法的具體內(nèi)容可參見(jiàn)“Effective Asymmetric XMLCompression. Software Practice and Experience, August 2008, Volume 38, Number 10,1027-1047”。另夕卜,在將 XML schema 作為其核心 DDL (DescriptionDefinition Language)的基礎(chǔ)語(yǔ)言的MPEG-7中提出了一種基于khema的XML壓縮方法。這種壓縮方法利用khema中的結(jié)構(gòu)信息生成規(guī)范的語(yǔ)法樹(shù),進(jìn)而生成用于壓縮和解壓縮的自動(dòng)機(jī)。關(guān)于MPEG-7的具體
” MPEG-7 Binary Format for XML Data, " dcc,pp. 0467, Data Compression Conference (DCC,02),2002”。上述這些壓縮方法雖然能夠較好地對(duì)一些特定的XML文件進(jìn)行壓縮,但是由于這些壓縮方法主要都是針對(duì)XML文檔中規(guī)整部分進(jìn)行處理并且大部分都是采用將數(shù)據(jù)按節(jié)點(diǎn)分塊壓縮的方式,而沒(méi)有考慮XML文檔對(duì)應(yīng)的XML樹(shù)中的不規(guī)則結(jié)構(gòu)和存在的微型數(shù)據(jù)塊(即,其大小很小的數(shù)據(jù)塊)。因此,當(dāng)XML文檔結(jié)構(gòu)比較復(fù)雜時(shí),很可能會(huì)存在大量的微型數(shù)據(jù)塊,而現(xiàn)有的這些壓縮方法對(duì)于這樣的XML文檔的壓縮率往往都不高。
發(fā)明內(nèi)容
為了解決上述問(wèn)題,本發(fā)明提出了一種新穎的XML數(shù)據(jù)壓縮和解壓縮方法及系統(tǒng),以實(shí)現(xiàn)適用性更強(qiáng)、壓縮率更高的XML壓縮方法。本發(fā)明提供的XML數(shù)據(jù)壓縮方法包括以下步驟對(duì)XML schema進(jìn)行優(yōu)化,以去除冗余結(jié)構(gòu)信息和節(jié)點(diǎn)間的間接使用,并存儲(chǔ)優(yōu)化后的schema ;利用優(yōu)化后的schema提取以所述schema為規(guī)范的XML數(shù)據(jù)的結(jié)構(gòu)信息部分;按照優(yōu)化后的schema節(jié)點(diǎn)將所述XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊;和分別使用通用壓縮方法對(duì)結(jié)構(gòu)信息部分和數(shù)據(jù)塊進(jìn)行壓縮,并將壓縮結(jié)果輸出到文件。優(yōu)選地,在按照優(yōu)化后的schema節(jié)點(diǎn)將所述XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊之后,將小于給定閾值的微型數(shù)據(jù)塊合并。相應(yīng)地,提供一種對(duì)通過(guò)上述壓縮方法而得到的壓縮XML數(shù)據(jù)進(jìn)行解壓的方法, 包括以下步驟對(duì)存儲(chǔ)的schema進(jìn)行解析;對(duì)壓縮的結(jié)構(gòu)信息部分進(jìn)行解壓;對(duì)壓縮的數(shù)據(jù)部分進(jìn)行解壓;建立schema節(jié)點(diǎn)和解壓后的數(shù)據(jù)之間的綁定關(guān)系;根據(jù)解析的schema 和解壓的結(jié)構(gòu)信息還原XML數(shù)據(jù)的結(jié)構(gòu),并從對(duì)應(yīng)的schema節(jié)點(diǎn)的數(shù)據(jù)塊中獲取相應(yīng)的數(shù)據(jù),生成XML文檔。為了實(shí)現(xiàn)以上壓縮和解壓縮方法,還分別提供了相應(yīng)的XML數(shù)據(jù)壓縮系統(tǒng)和解壓縮系統(tǒng)。壓縮系統(tǒng)包括輸入單元、優(yōu)化單元、存儲(chǔ)單元、結(jié)構(gòu)單元、數(shù)據(jù)單元和壓縮輸出單元。解壓縮系統(tǒng)包括schema解析單元、結(jié)構(gòu)解壓?jiǎn)卧?、?shù)據(jù)解壓?jiǎn)卧⑦€原單元和解壓輸出單元。本發(fā)明通過(guò)去除冗余結(jié)構(gòu)信息和節(jié)點(diǎn)間的間接引用來(lái)對(duì)XMLschema進(jìn)行簡(jiǎn)化,然后利用簡(jiǎn)化后的schema分離出以該schema為規(guī)范的XML數(shù)據(jù)的結(jié)構(gòu)信息部分和數(shù)據(jù)部分,可得到最小化的結(jié)構(gòu)信息和優(yōu)化分組的數(shù)據(jù)塊,從而提高了壓縮率。此外,通過(guò)合并微型數(shù)據(jù)塊,進(jìn)一步提高了壓縮效果。
圖1是根據(jù)本發(fā)明的第一實(shí)施例的XML數(shù)據(jù)壓縮方法的流程圖;圖2是對(duì)根據(jù)圖1所示壓縮方法得到的壓縮XML數(shù)據(jù)進(jìn)行解壓的方法的流程圖;圖3a和圖北分別是根據(jù)本發(fā)明的第一實(shí)施例的XML數(shù)據(jù)壓縮系統(tǒng)和解壓縮系統(tǒng)的框圖;圖4是根據(jù)本發(fā)明的第二實(shí)施例的XML數(shù)據(jù)壓縮方法的流程圖;圖5是根據(jù)本發(fā)明的第二實(shí)施例的XML數(shù)據(jù)壓縮系統(tǒng)的框圖;圖6a和圖6b分別是第一實(shí)例中所使用的原始XML schema結(jié)構(gòu)圖和根據(jù)本發(fā)明方法優(yōu)化后的schema結(jié)構(gòu)圖;圖7a和圖7b分別是第二實(shí)例中所使用的原始XML schema結(jié)構(gòu)圖和根據(jù)本發(fā)明方法優(yōu)化后的schema結(jié)構(gòu)圖。
具體實(shí)施例方式以下將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。(第一實(shí)施例)圖1是根據(jù)本發(fā)明的第一實(shí)施例的XML數(shù)據(jù)壓縮方法的流程圖。參照?qǐng)D1,該XML 數(shù)據(jù)壓縮方法包括以下步驟
6
步驟S100、對(duì)XML schema進(jìn)行優(yōu)化,以去除冗余結(jié)構(gòu)信息和節(jié)點(diǎn)間的間接使用, 并存儲(chǔ)優(yōu)化后的schema ;步驟S101、利用優(yōu)化后的schema提取以所述schema為規(guī)范的XML數(shù)據(jù)的結(jié)構(gòu)信息部分;步驟S102、按照優(yōu)化后的schema節(jié)點(diǎn)將所述XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊;和步驟S103、分別使用通用壓縮方法對(duì)結(jié)構(gòu)信息部分和數(shù)據(jù)塊進(jìn)行壓縮,并將壓縮結(jié)果輸出到文件。具體地,在步驟SlOO中,可按照以下優(yōu)化原則對(duì)XML schema進(jìn)行優(yōu)化1、對(duì)于以引用、擴(kuò)展和限定等方式連接到另一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn),直接將該節(jié)點(diǎn)連接到所述另一個(gè)節(jié)點(diǎn),這里,這些間接使用的節(jié)點(diǎn)的類(lèi)型包括類(lèi)型(Type)、引用(Ref)Ji (Group)、擴(kuò)展(Extension)、限定(Restriction);2、對(duì)于其所有子節(jié)點(diǎn)都是可選節(jié)點(diǎn)的序列指示器,將該序列指示器變?yōu)榭蛇x;3、對(duì)于沒(méi)有子節(jié)點(diǎn)的序列指示器,刪除該序列指示器;4、對(duì)于只有一個(gè)子節(jié)點(diǎn)而且這個(gè)子節(jié)點(diǎn)也是序列指示器的序列指示器,將作為其子節(jié)點(diǎn)的序列指示器和該序列指示器進(jìn)行合并。按照以上優(yōu)化原則對(duì)schema進(jìn)行簡(jiǎn)化之后,為保留的每個(gè)schema節(jié)點(diǎn)分配一個(gè)編號(hào)。經(jīng)過(guò)上述優(yōu)化處理之后,刪去了 schema中的Type、SimpleType, ComplexType, AttributeGroup, Group等類(lèi)型的節(jié)點(diǎn),僅保留了 kquence、Choice、All等類(lèi)型的節(jié)點(diǎn)信息,從而得到一個(gè)結(jié)構(gòu)信息極為簡(jiǎn)化的schema。在步驟SlOl中提取XML數(shù)據(jù)的結(jié)構(gòu)信息時(shí),對(duì)于XML數(shù)據(jù)的每個(gè)節(jié)點(diǎn),僅記錄其對(duì)應(yīng)的schema節(jié)點(diǎn)中實(shí)際出現(xiàn)的子節(jié)點(diǎn)的出現(xiàn)情況及出現(xiàn)次數(shù)。具體地,對(duì)于minOccurs =0且maxOccurs > 0的節(jié)點(diǎn),需要記錄其是否出現(xiàn)的信息,如果該節(jié)點(diǎn)出現(xiàn)的話,還需記錄其出現(xiàn)次數(shù)。對(duì)于minOccurs > 0的節(jié)點(diǎn),如果minOccurs不等于maxOccurs,需要記錄其出現(xiàn)次數(shù)。從圖1所示流程圖可看出,本發(fā)明通過(guò)去除schema中的冗余結(jié)構(gòu)信息和節(jié)點(diǎn)間的間接引用來(lái)實(shí)現(xiàn)schema的簡(jiǎn)化,繼而通過(guò)這種簡(jiǎn)化的schema,獲得了以該schema為規(guī)范的 XML數(shù)據(jù)的最小化的結(jié)構(gòu)信息和優(yōu)化分組的數(shù)據(jù)塊,從而提高了壓縮率。此外,對(duì)于以所述schema為規(guī)范的其它待壓縮XML數(shù)據(jù),可以直接使用存儲(chǔ)的優(yōu)化后的schema對(duì)該XML數(shù)據(jù)進(jìn)行壓縮,從而可節(jié)省用于再次解析和優(yōu)化schema的時(shí)間,提高處理效率。圖2是對(duì)通過(guò)圖1所示壓縮方法得到的壓縮XML數(shù)據(jù)進(jìn)行解壓的方法的流程圖。 如圖2所示,解壓方法包括以下步驟步驟S200、對(duì)存儲(chǔ)的schema進(jìn)行解析;步驟S201、對(duì)壓縮的結(jié)構(gòu)信息部分進(jìn)行解壓;步驟S202、對(duì)壓縮的數(shù)據(jù)部分進(jìn)行解壓;步驟S203、建立schema節(jié)點(diǎn)和解壓后的數(shù)據(jù)之間的綁定關(guān)系;步驟S204、根據(jù)解析的schema和解壓的結(jié)構(gòu)信息還原XML數(shù)據(jù)的結(jié)構(gòu),并從對(duì)應(yīng)的schema節(jié)點(diǎn)的數(shù)據(jù)塊中獲取相應(yīng)的數(shù)據(jù),生成XML文檔。為了實(shí)現(xiàn)以上壓縮方法,本發(fā)明提供一種XML數(shù)據(jù)壓縮系統(tǒng)。參照?qǐng)D3a,該XML數(shù)據(jù)壓縮系統(tǒng)包括輸入單元301,其用于將待處理的XML數(shù)據(jù)的schema輸入給優(yōu)化單元302,并將待處理的XML數(shù)據(jù)輸入給結(jié)構(gòu)單元304和數(shù)據(jù)單元305 ;優(yōu)化單元302,其用于對(duì)XML schema進(jìn)行優(yōu)化,以去除冗余結(jié)構(gòu)信息和節(jié)點(diǎn)間的間接使用,并將優(yōu)化后的schema存儲(chǔ)到存儲(chǔ)單元303 ;存儲(chǔ)單元303,其用于存儲(chǔ)從優(yōu)化單元302接收的優(yōu)化后的schema ;結(jié)構(gòu)單元304,其用于利用優(yōu)化后的schema提取從輸入單元301接收的XML數(shù)據(jù)的結(jié)構(gòu)信息部分,并將提取的結(jié)構(gòu)信息部分發(fā)送給壓縮輸出單元306 ;數(shù)據(jù)單元305,其用于按照優(yōu)化后的schema節(jié)點(diǎn)將從輸入單元301接收的XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊,并將這些數(shù)據(jù)塊發(fā)送給壓縮輸出單元306 ;和壓縮輸出單元306,其用于分別使用通用壓縮方法對(duì)提取的結(jié)構(gòu)信息部分和數(shù)據(jù)塊進(jìn)行壓縮,并將壓縮結(jié)果輸出到文件。另外,為了實(shí)現(xiàn)以上解壓縮方法,本發(fā)明提供一種XML解壓縮系統(tǒng)。參照?qǐng)D北,該 XML解壓縮系統(tǒng)包括schema解析單元307,其用于獲取優(yōu)化后的schema,并對(duì)其進(jìn)行解析;結(jié)構(gòu)解壓?jiǎn)卧?08,其用于獲取壓縮的結(jié)構(gòu)信息部分,并對(duì)其進(jìn)行解壓;數(shù)據(jù)解壓?jiǎn)卧?09,其用于獲取壓縮的數(shù)據(jù)部分,并對(duì)其進(jìn)行解壓;還原單元310,其用于建立schema節(jié)點(diǎn)和解壓后的數(shù)據(jù)之間的綁定關(guān)系;根據(jù)解析的schema和解壓的結(jié)構(gòu)信息還原XML數(shù)據(jù)的結(jié)構(gòu),并從對(duì)應(yīng)的schema節(jié)點(diǎn)的數(shù)據(jù)塊中獲取相應(yīng)的數(shù)據(jù),生成XML文檔;和解壓輸出單元311,其用于輸出還原單元310生成的XML文檔。圖3a和圖北所示單元的具體操作與上述方法中的相應(yīng)步驟相同,因此,省略其詳細(xì)描述。(第二實(shí)施例)圖4是根據(jù)本發(fā)明的第二實(shí)施例的XML數(shù)據(jù)壓縮方法的流程圖。從圖4和圖1 對(duì)比可看出,第二實(shí)施例與第二實(shí)施例的不同之處在于,在步驟S402中,在按照優(yōu)化后的 schema節(jié)點(diǎn)將所述XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊之后,還要將小于給定閾值的微型數(shù)據(jù)塊合并。通過(guò)合并,可優(yōu)化微型數(shù)據(jù)塊的存儲(chǔ),進(jìn)一步提高了壓縮率。圖5是實(shí)現(xiàn)圖4所示方法的XML數(shù)據(jù)壓縮系統(tǒng)的框圖。從圖5和圖3a對(duì)比可看出,其不同之處在于,增加了合并單元507,其用于合并小于給定閾值的微型數(shù)據(jù)塊,并將合并的微型數(shù)據(jù)塊發(fā)送給壓縮輸出單元506。第二實(shí)施例的解壓縮方法和系統(tǒng)與第一實(shí)施例相同,因此,省略其描述。以上參照?qǐng)D1至圖5對(duì)本發(fā)明提出的方法和系統(tǒng)進(jìn)行了概括性描述,以下將結(jié)合具體的實(shí)例對(duì)本發(fā)明的具體實(shí)現(xiàn)進(jìn)行說(shuō)明。首先,需要指出的是,在具體實(shí)現(xiàn)中,可采取以下兩種方式來(lái)記錄子節(jié)點(diǎn)的出現(xiàn)情況和出現(xiàn)次數(shù)。(1)第一種編碼方式
8
采用表1所示前綴編碼的方式對(duì)實(shí)際出現(xiàn)的子節(jié)點(diǎn)的編號(hào)及出現(xiàn)次數(shù)進(jìn)行二進(jìn)制編碼。表 權(quán)利要求
1.一種XML數(shù)據(jù)壓縮方法,包括以下步驟對(duì)XML schema進(jìn)行優(yōu)化,以去除冗余結(jié)構(gòu)信息和節(jié)點(diǎn)間的間接使用,并存儲(chǔ)優(yōu)化后的 schema ;利用優(yōu)化后的schema提取以所述schema為規(guī)范的XML數(shù)據(jù)的結(jié)構(gòu)信息部分; 按照優(yōu)化后的schema節(jié)點(diǎn)將所述XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊;和分別使用通用壓縮方法對(duì)結(jié)構(gòu)信息部分和數(shù)據(jù)塊進(jìn)行壓縮,并將壓縮結(jié)果輸出到文件。
2.根據(jù)權(quán)利要求1所述的XML數(shù)據(jù)壓縮方法,其特征在于,所述對(duì)XMLschema進(jìn)行優(yōu)化的步驟包括以下步驟對(duì)于以引用、擴(kuò)展和限定等方式連接到另一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn),直接將該節(jié)點(diǎn)連接到所述另一個(gè)節(jié)點(diǎn);對(duì)于其所有子節(jié)點(diǎn)都是可選節(jié)點(diǎn)的序列指示器,將該序列指示器變?yōu)榭蛇x; 對(duì)于沒(méi)有子節(jié)點(diǎn)的序列指示器,刪除該序列指示器;對(duì)于只有一個(gè)子節(jié)點(diǎn)而且這個(gè)子節(jié)點(diǎn)也是序列指示器的序列指示器,將作為其子節(jié)點(diǎn)的序列指示器和該序列指示器進(jìn)行合并;和為經(jīng)過(guò)上述步驟優(yōu)化后的每個(gè)schema節(jié)點(diǎn)分配一個(gè)編號(hào)。
3.根據(jù)權(quán)利要求2所述的XML數(shù)據(jù)壓縮方法,其特征在于,所述提取XML數(shù)據(jù)的結(jié)構(gòu)信息部分的步驟包括以下步驟對(duì)于所述XML數(shù)據(jù)的每個(gè)節(jié)點(diǎn),僅記錄其對(duì)應(yīng)的schema節(jié)點(diǎn)中實(shí)際出現(xiàn)的子節(jié)點(diǎn)的出現(xiàn)情況及出現(xiàn)次數(shù)。
4.根據(jù)權(quán)利要求3所述的XML數(shù)據(jù)壓縮方法,其特征在于,采用前綴編碼的方式對(duì)實(shí)際出現(xiàn)的子節(jié)點(diǎn)的編號(hào)和出現(xiàn)次數(shù)進(jìn)行二進(jìn)制編碼。
5.根據(jù)權(quán)利要求3所述的XML數(shù)據(jù)壓縮方法,其特征在于,以下述方式記錄子節(jié)點(diǎn)的出現(xiàn)情況將子節(jié)點(diǎn)依次排列,根據(jù)子節(jié)點(diǎn)的出現(xiàn)情況,依次使用1位來(lái)標(biāo)識(shí),“1”表示出現(xiàn),“0” 表示未出現(xiàn),末尾補(bǔ)0保證字節(jié)對(duì)齊。
6.根據(jù)權(quán)利要求1所述的XML數(shù)據(jù)壓縮方法,其特征在于,在按照優(yōu)化后的schema節(jié)點(diǎn)將所述XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊之后,將小于給定閾值的微型數(shù)據(jù)塊合并。
7.根據(jù)權(quán)利要求1所述的XML數(shù)據(jù)壓縮方法,其特征在于,對(duì)于以所述schema為規(guī)范的其它待壓縮XML數(shù)據(jù),直接使用存儲(chǔ)的優(yōu)化后的schema對(duì)該XML數(shù)據(jù)進(jìn)行壓縮。
8.一種對(duì)通過(guò)權(quán)利要求1-7中的任何一個(gè)所述的XML壓縮方法而得到的XML壓縮數(shù)據(jù)進(jìn)行解壓的方法,包括以下步驟對(duì)存儲(chǔ)的schema進(jìn)行解析;對(duì)壓縮的結(jié)構(gòu)信息部分進(jìn)行解壓;對(duì)壓縮的數(shù)據(jù)部分進(jìn)行解壓;建立schema節(jié)點(diǎn)和解壓后的數(shù)據(jù)之間的綁定關(guān)系;根據(jù)schema和解壓的結(jié)構(gòu)信息還原XML數(shù)據(jù)的結(jié)構(gòu),并從對(duì)應(yīng)的schema節(jié)點(diǎn)的數(shù)據(jù)塊中獲取相應(yīng)的數(shù)據(jù),生成XML文檔。
9.一種XML數(shù)據(jù)壓縮系統(tǒng),包括輸入單元,其用于將待處理的XML數(shù)據(jù)的schema輸入給優(yōu)化單元,并將待處理的XML 數(shù)據(jù)輸入給結(jié)構(gòu)單元和數(shù)據(jù)單元;優(yōu)化單元,其用于對(duì)XML schema進(jìn)行優(yōu)化,以去除冗余結(jié)構(gòu)信息和節(jié)點(diǎn)間的間接使用, 并將優(yōu)化后的schema存儲(chǔ)到存儲(chǔ)單元;存儲(chǔ)單元,其用于存儲(chǔ)從優(yōu)化單元接收的優(yōu)化后的schema ;結(jié)構(gòu)單元,其用于利用優(yōu)化后的schema提取從輸入單元接收的XML數(shù)據(jù)的結(jié)構(gòu)信息部分,并將提取的結(jié)構(gòu)信息部分發(fā)送給壓縮輸出單元;數(shù)據(jù)單元,其用于按照優(yōu)化后的schema節(jié)點(diǎn)將從輸入單元接收的XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊,并將這些數(shù)據(jù)塊發(fā)送給壓縮輸出單元;和壓縮輸出單元,其用于分別使用通用壓縮方法對(duì)提取的結(jié)構(gòu)信息部分和數(shù)據(jù)塊進(jìn)行壓縮,并將壓縮結(jié)果輸出到文件。
10.根據(jù)權(quán)利要求9所述的XML數(shù)據(jù)壓縮系統(tǒng),其特征在于,所述優(yōu)化單元執(zhí)行以下優(yōu)化XML schema的步驟對(duì)于以引用、擴(kuò)展和限定等方式連接到另一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn),直接將該節(jié)點(diǎn)連接到所述另一個(gè)節(jié)點(diǎn);對(duì)于其所有子節(jié)點(diǎn)都是可選節(jié)點(diǎn)的序列指示器,將該序列指示器變?yōu)榭蛇x; 對(duì)于沒(méi)有子節(jié)點(diǎn)的序列指示器,刪除該序列指示器;對(duì)于只有一個(gè)子節(jié)點(diǎn)而且這個(gè)子節(jié)點(diǎn)也是序列指示器的序列指示器,將作為其子節(jié)點(diǎn)的序列指示器和該序列指示器進(jìn)行合并;和為經(jīng)過(guò)上述步驟優(yōu)化后的每個(gè)schema節(jié)點(diǎn)分配一個(gè)編號(hào)。
11.根據(jù)權(quán)利要求10所述的XML數(shù)據(jù)壓縮系統(tǒng),其特征在于,所述結(jié)構(gòu)單元在執(zhí)行提取 XML數(shù)據(jù)的結(jié)構(gòu)信息的步驟時(shí),對(duì)于所述XML數(shù)據(jù)的每個(gè)節(jié)點(diǎn),僅記錄其對(duì)應(yīng)的schema節(jié)點(diǎn)中實(shí)際出現(xiàn)的子節(jié)點(diǎn)的出現(xiàn)情況及出現(xiàn)次數(shù)。
12.根據(jù)權(quán)利要求11所述的XML數(shù)據(jù)壓縮系統(tǒng),其特征在于,采用前綴編碼的方式對(duì)實(shí)際出現(xiàn)的子節(jié)點(diǎn)的編號(hào)和出現(xiàn)次數(shù)進(jìn)行二進(jìn)制編碼。
13.根據(jù)權(quán)利要求11所述的XML數(shù)據(jù)壓縮系統(tǒng),其特征在于,以下述方式記錄子節(jié)點(diǎn)的出現(xiàn)情況將子節(jié)點(diǎn)依次排列,根據(jù)子節(jié)點(diǎn)的出現(xiàn)情況,依次使用1位來(lái)標(biāo)識(shí),“1”表示出現(xiàn),“0” 表示未出現(xiàn),末尾補(bǔ)0保證字節(jié)對(duì)齊。
14.根據(jù)權(quán)利要求9所述的XML數(shù)據(jù)壓縮系統(tǒng),其特征在于,還包括合并單元,其用于將數(shù)據(jù)單元中劃分的小于給定閾值的微型數(shù)據(jù)塊合并,并將合并的微型數(shù)據(jù)塊發(fā)送給壓縮輸出單元。
15.根據(jù)權(quán)利要求9所述的XML數(shù)據(jù)壓縮系統(tǒng),其特征在于,對(duì)于以所述schema為規(guī)范的其它待壓縮XML數(shù)據(jù),直接使用存儲(chǔ)單元中存儲(chǔ)的優(yōu)化后的schema對(duì)該XML數(shù)據(jù)進(jìn)行壓縮。
16.一種用于對(duì)通過(guò)權(quán)利要求9-15中的任何一個(gè)所述的XML數(shù)據(jù)壓縮系統(tǒng)而得到的 XML壓縮數(shù)據(jù)進(jìn)行解壓的系統(tǒng),包括schema解析單元,其用于獲取優(yōu)化后的schema,并對(duì)其進(jìn)行解析; 結(jié)構(gòu)解壓?jiǎn)卧?,其用于獲取壓縮的結(jié)構(gòu)信息部分,并對(duì)其進(jìn)行解壓;數(shù)據(jù)解壓?jiǎn)卧?,其用于獲取壓縮的數(shù)據(jù)部分,并對(duì)其進(jìn)行解壓; 還原單元,其用于建立schema節(jié)點(diǎn)和解壓后的數(shù)據(jù)之間的綁定關(guān)系;根據(jù)schema和解壓的結(jié)構(gòu)信息還原XML數(shù)據(jù)的結(jié)構(gòu),并從對(duì)應(yīng)的schema節(jié)點(diǎn)的數(shù)據(jù)塊中獲取相應(yīng)的數(shù)據(jù), 生成XML文檔;和解壓輸出單元,其用于輸出還原單元生成的XML文檔。
全文摘要
本發(fā)明提供了一種XML數(shù)據(jù)壓縮方法。該方法包括對(duì)XMLschema進(jìn)行優(yōu)化,以去除冗余結(jié)構(gòu)信息和節(jié)點(diǎn)間的間接使用,并存儲(chǔ)優(yōu)化后的schema;利用優(yōu)化后的schema提取以所述schema為規(guī)范的XML數(shù)據(jù)的結(jié)構(gòu)信息部分;按照優(yōu)化后的schema節(jié)點(diǎn)將所述XML數(shù)據(jù)的數(shù)據(jù)部分分成多個(gè)數(shù)據(jù)塊;和分別使用通用壓縮方法對(duì)結(jié)構(gòu)信息部分和數(shù)據(jù)塊進(jìn)行壓縮,并將壓縮結(jié)果輸出到文件。相應(yīng)地,提供了一種解壓縮方法及其壓縮系統(tǒng)和解壓縮系統(tǒng)。本發(fā)明通過(guò)簡(jiǎn)化XMLschema,獲得了最小化的結(jié)構(gòu)信息,改進(jìn)了數(shù)據(jù)的分組存儲(chǔ)策略,從而提高了壓縮率。此外,還對(duì)微型數(shù)據(jù)塊的存儲(chǔ)進(jìn)行了優(yōu)化,從而進(jìn)一步提高了壓縮率。
文檔編號(hào)G06F17/30GK102214170SQ20101014158
公開(kāi)日2011年10月12日 申請(qǐng)日期2010年4月6日 優(yōu)先權(quán)日2010年4月6日
發(fā)明者仇睿恒, 胡薇 申請(qǐng)人:北京北大方正技術(shù)研究院有限公司, 北京大學(xué), 北大方正集團(tuán)有限公司