《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 擴展哈弗曼前綴編碼實現XML數據與關系數據轉換
擴展哈弗曼前綴編碼實現XML數據與關系數據轉換
來源:微型機與應用2013年第17期
裴 松,武 彤
(貴州大學 計算機科學與信息學院,貴州 貴陽550025)
摘要: 為從企業(yè)生產線上XML半結構化數據中抽取富有意義數據,分析了XML半結構化數據和關系數據庫中結構化數據特點,以及XML半結構化數據在關系數據庫中的存儲方法。針對實際應用,提出采用擴展哈弗曼前綴編碼方法,對XML文檔樹進行唯一編碼,實現XML文檔與關系數據庫映射,同時給出最長前綴匹配策略,支持數據查詢,以提高查詢效率。
Abstract:
Key words :

摘  要: 為從企業(yè)生產線上XML半結構化數據中抽取富有意義數據,分析了XML半結構化數據和關系數據庫中結構化數據特點,以及XML半結構化數據在關系數據庫中的存儲方法。針對實際應用,提出采用擴展哈弗曼前綴編碼方法,對XML文檔樹進行唯一編碼,實現XML文檔與關系數據庫映射,同時給出最長前綴匹配策略,支持數據查詢,以提高查詢效率。
關鍵詞: XML;關系數據庫;哈弗曼前綴編碼;匹配策略;模型映射

 互聯網的迅速發(fā)展,使得網上數據不斷增加,這些數據形式不統(tǒng)一,其數據結構的組織方式也各不相同,促使XML半結構化數據成為互聯網上數據交換或數據瀏覽的中間媒介,其無模式及自描述的特點適于描述網上數據,它的出現推動了互聯網在電子商務和企業(yè)生產線等多方面的應用。但要想對這種半結構化數據進行有效地管理十分困難,傳統(tǒng)的DBMS主要用于管理結構化數據,半結構化數據與傳統(tǒng)的DBMS管理的數據的模式大不相同,如何對半結構化數據實施有效的管理成為新的研究領域。而在理論和實踐上都非常成熟的關系數據庫使用廣泛,數據處理能力強,查詢性能好,采用關系數據庫對XML數據進行存儲和操作,將半結構化數據轉為結構化數據,通過查詢數據庫來提取、綜合和分析XML數據,充分利用成熟的數據庫技術處理XML數據已成為重要手段[1-2]。
 互聯網的發(fā)展也使企業(yè)中大量信息資源以XML半結構化數據的形式存在,半結構化數據成為企業(yè)決策人員獲取、傳播和交換信息的重要途徑。本文基于一個實際的生產項目,主要對企業(yè)生產線中XML半結構化數據資源,采用擴展哈弗曼前綴編碼技術轉化為在關系數據庫中存儲,并采用前綴匹配策略實現XML數據查詢,抽取富有意義的數據,為管理部門提供完整的決策支持數據,有助于企業(yè)決策者實現其目標。
1 XML與關系數據庫
 XML(Extensible Markup Language)用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型。一個XML文檔是由一個根元素和若干個子元素組成,元素用標記來標識和界定,XML可看作是有層次結構的半結構化數據。XML其優(yōu)勢在于可擴展性強,簡單易懂,不同平臺間的信息交換性好,支持國際化。隨著XML技術越來越被人們認識和了解,其在數據傳輸和數據存儲方面的優(yōu)越性也逐漸被人們重視起來。
 關系數據庫是為存儲和管理結構化數據設計的,采用二維表作為存儲數據的模型,二維表由行和列組成,列用于表示組成數據有效信息屬性,行用于表示一條由各個字段組成的完整數據記錄。表間相關性通過主鍵—外鍵來關聯。
 XML文檔是一種典型的半結構化數據[3],它既能表示關系、對象等結構化數據,也能表示Web半結構化數據。具有層次結構的半結構化數據與扁平的二維表關系模型之間存在固有的不匹配性。如果采用關系數據庫來存儲XML數據,首先要解決如何把XML文檔模式映射為關系模式,即兩個異構模式之間的模式映射。
2 XML數據與關系數據庫轉換
2.1 XML數據與關系數據庫映射方法

 目前,基于關系的XML存儲的研究受到國內外研究者的重視,總的來說根據存儲時是否使用XML模式(DTD或XML Schema)可以分為結構映射方法和模型映射方法兩類。
 (1)結構映射是與XML模式(DTD或XML schema)相關[4],即依賴于文檔模式的關系存儲。這種存儲映射策略把XML文檔本身看作是數據庫中的數據區(qū),DTD或者Schema可以看成是數據模式。依賴于文檔模式的關系存儲映射就是把DTD或Schema映射為關系數據庫中的Schema,然后把XML文檔存儲到關系數據庫中。對XML數據中結構化的信息建模時,采用關系數據庫中的主外鍵連接來映射XML樹的父子關系。
 (2)模型映射方法維護用來存儲XML文檔的一個固有的模式[4],其基本的思想是捕捉XML文檔的樹結構。主要特點是將任何數據都放在有固定關系模式的數據庫中,而不考慮XML文檔模式(DTD或XML Schema),其本質是存儲XML文檔本身的結構信息。在模型映射方法中,XML文檔被看做由元素和屬性等結點組成的有向有序的樹或圖,關系模式相當于一個模板,XML在關系數據庫中的存儲按數據庫提供的模板來組織數據。
 由于模型映射方法與XML模式(DTD或XML schema)無關,而企業(yè)生產線上XML數據是一種無模式XML數據,更加符合模型映射的特征。本文采用模型映射方法實現映射轉換工作,以便更好地利用關系數據庫成熟技術進行數據管理。
2.2 XML文檔編碼方案

 


 XML文檔可以樹模型來描述,文檔中的元素、屬性和值對應樹模型中的結點,文檔中元素與元素、元素與值對應樹模型中的邊。對于XML文檔樹編碼方案,主要分為兩種:基于區(qū)間的編碼和基于路徑編碼。基于區(qū)間編碼是利用每一個元素在原XML文檔中字典順序位置給每一個結點賦予唯一編碼;基于路徑編碼利用XML文檔嵌套關系,給從XML文檔根節(jié)點開始到達的每一個路徑元素結點賦予唯一編碼[5]。以上編碼方案雖各自有其優(yōu)點,但不能有效地支持XML數據查詢,尤其對于部分匹配復雜查詢。因此本文采用擴展的哈弗曼前綴編碼方案,在保持XML文檔位置關系特性同時,優(yōu)化XML數據查詢,提高查詢效率。圖1為企業(yè)生產線上部分XML文檔片段。

 哈弗曼編碼技術是對二叉樹的結點進行編碼,即右子樹的根結點編碼為1,左子樹的根結點編碼為0,從而確定結點之間的關系。但是XML文檔樹并不局限于二叉樹,其分支是隨意的,因此需要對哈弗曼前綴編碼技術擴展。
 擴展的哈弗曼前綴編碼對于元素和屬性所對應的內容結點,不對其進行編碼;其中任何結點編碼都由該節(jié)點父結點編碼和該結點順序碼組成,并且采用十進制編碼方式。對XML文檔樹從根結點以1開始編碼;每個結點的孩子結點按順序從1,2,3…8,9開始,依次遞增、依次類推。這種編碼方案不僅能夠保存XML文檔中節(jié)點間包含關系,如雙親/孩子,祖先/后裔,也保存了結點之間的位置關系,如左/右兄弟結點。對于這種編碼方法,當判斷一個結點v是否為另一個結點u的后裔,只需判斷結點編碼Node(u)是否是Node(v)的前綴字符,因此,這種編碼方式能夠有效地支持文檔位置關系計算,也能支持包含關系的計算。
具體算法步驟:
 (1)輸入XML文檔生成DOM樹;
 (2)對根節(jié)點進行編碼為“1”,根元素入隊列;
 (3)判斷隊列是否為空,否則退出循環(huán);
 (4)從隊列中取結點p,從左到右依次遍歷孩子結點;
 (5)當訪問p的孩子結點非內容結點進行哈弗曼前綴編碼,并入隊列操作,返回步驟(3)。
 當執(zhí)行算法完畢,XML文檔樹所有非內容結點編碼完成,圖2是由圖1轉換的擴展哈弗曼前綴編碼。

 
2.3 XML數據存儲結構
 XML文檔與關系數據庫映射是基于DOM樹構建的數據模型,將整個XML文檔看作一個樹結構DOM樹,樹中結點即為XML元素、屬性和文本等,對DOM樹進行遍歷,給XML文檔結點(元素和屬性)賦予惟一擴展哈弗曼前綴編碼,所對應的內容結點不對其進行編碼。關系模式設置兩個基本表,Path表用于存儲文檔本身的結構信息,Node表存儲文檔本身的內容信息:
 (1)主表Path(Pid,PathInfo,Nodes),保存文檔本身結構路徑信息,如表1所示。

 Pid路徑編號,每條路徑都有其唯一編號;PathInfo存儲是XML文檔中的路徑標簽,從XML文檔根結點到每一個元素或屬性結點上的所有標簽;Nodes記錄同一條標簽路徑對應的所有結點路徑。
 (2)從表Node(Nid,Pid,Node,Element,Value),保存文檔本身內容信息,如表2所示。
Nid是XML文檔中結點編號;Pid對應于Path表Pid字段路徑編號;Node是XML文檔樹中結點編碼;Element保存XML文檔中結點的元素名或屬性;Value保存XML文檔中葉子屬性結點的內容值,如果為非葉子結點的話,則相應的Value值為null。
3 查詢過程優(yōu)化
 基于關系存儲的XML查詢最終都要將XML查詢轉化為SQL查詢,由于Path表中記錄數變化不大,而Node表保存每個結點內容信息,企業(yè)生產線上XML文檔資源很多,導致Node表記錄冗長。為提高查詢效率,首先在Node表Pid字段上建立索引,并在查詢時使用最長前綴匹配方法,即首先將復雜查詢分解為限制分支子查詢和主子查詢,并分別得到其查詢編碼結果集,使用限制分支子查詢得到編碼同主子查詢得到編碼集進行比較,僅保留與限制分支子查詢擁有公共前綴編碼最長的結點,這樣可以得到符合查詢的目標編碼集。
為獲取擁有最長公共前綴編碼集,在SQL SERVER中定義標量值函數:CheckString(@Sql nvarchar(100),@Str nvarchar(2),@Split nvarchar(30))此函數是獲取擁有最長公共前綴目標編碼集的重要函數,其返回值是以逗號分隔的編碼集字符串;并定義fn_getArray(@inStr1 nvarchar(100),@inStr2 nvarchar(100))是獲取兩字符串公共前綴標量值函數,其返回值是公共前綴;定義fn_Split(@Sql nvarchar(100),@Str nvarchar(2))是按照@Str分解字符串,返回值是分解后的Table類型虛擬表。
 針對XML數據查詢有很多種查詢語言,XML查詢核心是XPath路徑表達式查詢,按照查詢過程的復雜程度,針對查詢路徑表達式,可以分為三類[6]:
 查詢1:簡單查詢
 只含有雙親/子女關系或祖先/后裔關系的路徑查詢,如:/productCase/Product/Plate,就是按照路徑選出相應信息,對應SQL查詢:
 SELECT B.Nid,B.Value FROM Path as A,Node as B
WHERE A.PathInfo like‘/productCase/Product/Plate’and A.Pid=B.Pid
 查詢2:分支查詢
 帶有分支謂詞的路徑查詢,如://Fault[/FaultType=‘遙控不良’]/FaultCause
在分支謂詞出現的地方將表達式拆分為兩個子查詢Q1(限制分支查詢)://Fault/FaultType=‘遙控不良’和Q2(主查詢)://Fault/FaultCause,執(zhí)行Q1得到限制分支結點{1141}和主結點集{1142,1242},利用限制分支結點對主結點集作最長公共前綴匹配,得到擁有最長前綴編碼目標結點{1142},得其內容信息{V707},對應的SQL查詢:
 SELECT A.Short,B.Value
    FROM(SELECT Short FROM dbo.[fn_Split](
   (SELECT dbo.[CheckString](T.nos,‘,’,S.no)
     FROM(SELECT Path.Nodes as nos FROM Path
WHERE Path.PathInfo like‘%/Fault/FaultCause’)as T,
      (SELECT Path.Nodes as no FROM Path,Node
WHERE Path.PathInfo like‘%/Fault/FaultType’AND Node.Value=‘遙控不良’
       AND Path.Pid= Node.Pid)as S),‘,’))as A
Node as B WHERE A.Short=B.Node
 查詢3:通配符查詢
 包含通配符的路徑查詢,如:/ProductCase/*/FaultType
 在通配符出現的地方將表達式拆分為兩個子查詢,Q1(限制分支查詢):/ProductCase和Q2(主查詢):/ProductCase//FaultType,執(zhí)行Q1得到編碼{1},執(zhí)行Q2得到編碼集{1141,1241},這兩個編碼都是擁有最長前綴編碼的結點,因此目標結點是{1141,1241},可得其內容信息{‘遙控不良’,‘分量異常’}對應的SQL查詢:
 SELECT A.Short,B.Value
 FROM(SELECT Short FROM dbo.[fn_Split](
 (SELECT dbo.[CheckString](T.nos,’,’,S.no)
 FROM(SELECT Path.Nodes as nos FROM Path
 WHERE Path.PathInfo like‘/ProductCase%/FaultType’)as T,
 (SELECT Path.Nodes as no FROM Path
 WHERE Path.PathInfo like‘/ProductCase’)as S),‘,’))as A,
 Node as B WHERE A.Short=B.Node
 三類查詢中,簡單查詢不涉及使用最長前綴匹配策略;而分支查詢、通配符查詢時需進行子查詢分解,再用最長前綴匹配策略進行查詢優(yōu)化,此時,查詢效率要優(yōu)于常采用的XRel[7]方法。
 隨著互聯網發(fā)展,XML正發(fā)揮著越來越重要的作用,使用關系數據庫的成熟技術來處理XML文檔成為研究的熱點。由于XML半結構化數據本身特征與關系數據庫中結構化數據具有不匹配性,如何解決XML數據到關系數據庫映射是重點。本文使用擴展哈弗曼前綴編碼的模型映射方法,實現XML數據與關系數據庫的映射,這種方法很好地保存XML文檔中結點間位置關系,采用最長前綴匹配策略,更好地支持數據查詢策略,提高了查詢效率。
 本文的研究實驗基于特定的項目所涉及的數據,因此難免有一定的局限性,對于推廣應用還需進一步研究。
參考文獻
[1] 孟小峰.XML數據管理概念與技術[M].北京:清華大學出版社,2009.
[2] 吳潔.XML應用教程[M].北京:清華大學出版社,2007.
[3] 潘順,金遠平.半結構化數據到結構化數據的模式抽取[J].計算機工程,2002(5):55-57.
[4] 付靈麗.XML與關系數據庫實現轉換初探[J].河北工業(yè)大學成人教育學報,2007(1):33-36.
[5] 謝桂芳.XML文檔編碼方案研究[J].科學技術與工程,2009(5):1294-1297.
[6] 王燕麗.基于XML的半結構化數據存儲研究[D].山東:山東科技大學,2008.
[7] YOSHIKAWA M, SHIMURA T, UEMURA S. Xrel: A Path-Based approach to storage and retrieval of XML documents using relational database[C]. ACM TOIT,1(1),2001.

此內容為AET網站原創(chuàng),未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲电影免费观看高清完整版在线观看 | 亚洲伦理自拍| 午夜电影亚洲| 一区二区三区你懂的| 亚洲裸体俱乐部裸体舞表演av| 永久域名在线精品| 国内精品视频久久| 国产一区二区观看| 国产一区二区日韩精品欧美精品| 国产精品成人在线| 欧美日韩在线视频一区| 欧美日韩亚洲成人| 欧美日韩精品免费观看| 欧美日韩另类一区| 欧美日韩情趣电影| 欧美性色aⅴ视频一区日韩精品| 欧美日韩国产一级片| 欧美日韩不卡视频| 欧美日韩亚洲国产一区| 欧美视频中文在线看 | 一区精品在线| 在线色欧美三级视频| 亚洲高清免费| 亚洲人成小说网站色在线| 亚洲国产一二三| 亚洲精品永久免费| 一区二区三区视频在线观看| 一区二区三区视频在线播放| 亚洲一区在线看| 性做久久久久久免费观看欧美| 欧美一级视频精品观看| 久久国产精品99精品国产| 新67194成人永久网站| 欧美资源在线| 亚洲人成亚洲人成在线观看| 99国内精品久久| 正在播放欧美一区| 午夜在线播放视频欧美| 久久精品国产久精国产思思 | 久久亚洲综合网| 欧美福利一区二区| 国产精品v欧美精品v日韩 | 一区二区电影免费在线观看| 亚洲综合欧美| 久久精品人人爽| 蜜臀av一级做a爰片久久| 欧美日韩精品二区第二页| 国产精品羞羞答答xxdd| 韩国成人精品a∨在线观看| 最新中文字幕亚洲| 亚洲一区免费看| 亚洲电影免费观看高清完整版在线 | 欧美日韩亚洲91| 国产日韩精品在线观看| 亚洲第一福利在线观看| 一区二区激情小说| 欧美一区二区在线视频| 亚洲人妖在线| 亚洲欧美日韩另类| 可以看av的网站久久看| 欧美少妇一区| 国产综合亚洲精品一区二| 亚洲精品视频在线观看网站| 亚洲在线免费| 亚洲人成网在线播放| 亚洲免费小视频| 麻豆国产精品va在线观看不卡 | 黄色成人片子| 99亚洲一区二区| 欧美影院在线| 亚洲一区二区在线看| 久久久久一区二区| 欧美午夜不卡视频| 亚洲国产经典视频| 亚洲欧美国产毛片在线| 亚洲国产一区二区三区青草影视| 亚洲免费视频中文字幕| 免费人成精品欧美精品| 国产精品欧美久久久久无广告| 亚洲第一精品福利| 亚洲欧美色婷婷| 在线视频亚洲| 狂野欧美性猛交xxxx巴西| 国产精品久久久| 亚洲激情偷拍| 久久精品国产清自在天天线| 亚洲欧美日韩久久精品| 欧美激情精品久久久久久黑人| 国产日韩亚洲| 中国女人久久久| 亚洲黄页一区| 欧美一区亚洲二区| 国产精品扒开腿做爽爽爽视频 | 欧美14一18处毛片| 国产亚洲精品成人av久久ww| 一区二区三区免费在线观看| 亚洲人体一区| 久久久久一区二区三区| 国产伦精品一区二区三区高清| 亚洲另类自拍| 亚洲精品女av网站| 久久视频这里只有精品| 国产精品无人区| 一本色道久久综合亚洲二区三区| 亚洲精品视频免费在线观看| 久久综合电影| 国产一区二区三区四区五区美女| 亚洲一区二区av电影| 一区二区电影免费观看| 欧美黄色免费网站| 亚洲黄色天堂| 亚洲激情偷拍| 久久夜色精品国产欧美乱| 国产色产综合色产在线视频| 亚洲在线视频一区| 亚洲欧美日韩精品综合在线观看| 欧美色图首页| 一区二区三区成人精品| 亚洲天堂黄色| 欧美日韩视频在线第一区| 亚洲精品久久久久久久久| 亚洲欧洲一区二区三区| 欧美成人综合| 亚洲国产精品欧美一二99| 亚洲精品午夜| 欧美激情第4页| 亚洲欧洲精品一区二区精品久久久| 亚洲三级视频| 欧美成人精品1314www| 一区视频在线| 亚洲精品中文字幕女同| 欧美激情女人20p| 亚洲精品视频在线观看网站| 一本色道久久综合一区| 欧美午夜视频在线| 亚洲婷婷在线| 西瓜成人精品人成网站| 国产精品一区二区久久精品| 亚洲欧美日韩国产综合精品二区| 欧美中文字幕在线| 国产一区二区在线免费观看| 久久爱www.| 免费一级欧美在线大片| 亚洲日本中文字幕免费在线不卡| 妖精成人www高清在线观看| 欧美日韩一区二区视频在线| 中文一区字幕| 欧美亚洲一区三区| 国产一区二区成人久久免费影院| 久久精品免视看| 欧美国产日韩一区二区| 日韩一区二区精品视频| 亚洲免费在线观看| 国产欧美一二三区| 亚洲国产成人在线| 欧美精品一区二区三区视频| 夜夜爽www精品| 久久精品国产77777蜜臀| 亚洲成人资源| 一区二区三区国产在线| 国产精品夜夜夜| 亚洲国产欧美精品| 欧美日韩激情网| 午夜免费日韩视频| 久久嫩草精品久久久精品一| 亚洲欧洲视频| 性一交一乱一区二区洋洋av| 极品少妇一区二区| 亚洲视屏在线播放| 国产综合av| 在线视频亚洲一区| 国产欧美日韩精品丝袜高跟鞋 | 亚洲一级在线| 国产一区二区毛片| 亚洲精品综合精品自拍| 国产精品日韩久久久久| 亚洲国产老妈| 国产精品成人在线观看| 欧美资源在线| 欧美日韩一区二区在线视频| 欧美在线一级视频| 欧美人与性动交cc0o| 性色一区二区| 欧美日韩久久| 亚洲成色精品| 国产精品高潮呻吟视频| 亚洲电影中文字幕| 国产精品乱人伦中文| 亚洲国产日韩欧美一区二区三区| 欧美性事免费在线观看| 久久爱www.| 国产精品久久久久三级| 亚洲精品久久久久久久久久久| 国产精品女同互慰在线看| 亚洲人成网站在线观看播放| 国产伦精品一区二区三区免费迷 | 欧美国产视频在线| 午夜亚洲一区| 国产精品a久久久久| 亚洲国产精品日韩|