999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

XML文檔到關系數據庫映射方法的研究

2010-01-01 00:00:00宋余慶梁成全陳健美
計算機應用研究 2010年3期

摘 要:針對現有映射方法對XML文檔格式要求過嚴等不足,在模型映射方法基礎上提出一種XML文檔映射關系數據庫的新方法。通過給XML文檔樹做標志,將映射算法轉換后的數據放到兩張預先定義結構的表進行存儲。給出了邏輯數據模型、詳細設計、映射算法和實驗。實驗結果表明,該方法能有效地保持XML文檔的結構,能夠對存儲的數據進行語義檢索,適用于任何樹型數據結構。

關鍵詞:可擴展標記語言文檔; 模型映射; 標志; 保持結構; 樹型數據結構

中圖分類號:TP311文獻標志碼:A

文章編號:1001-3695(2010)03-0951-04

doi:10.3969/j.issn.1001-3695.2010.03.039

Research on mapping method from XML document to relational database

GENG Biao, SONG Yu-qing, LIANG Cheng-quan, CHEN Jian-mei

(School of Computer Science Communication Engineering, Jiangsu University, Zhenjiang Jiangsu 212013, China)

Abstract:To overcome the issues of the existing mapping methods being too strict to XML format requirements, this paper proposed a new method of mapping XML documents to relational database based on the modelmapping method. By making tokens for XML documents tree,data of coversion from mapping method would be stored into the two predefined structure tables.Discussed four aspects of logical data model,detailed design,mapping algorithm and experiment. The results of experiment show its ability of maintaining document structure effectively,performing first level sematic search is achievable,being a general solution for any tree data structure can be applied.

Key words:XML document; model mapping; token; maintain structure; tree data structure

0 引言

XML具有平臺無關性、自描述性、可擴展性、簡單易于處理等優點,其相關技術的成熟使之成為Internet數據表示和交換的標準[1]。隨著 XML應用的不斷深入,在Web服務、電子商務和數據集成等諸多領域產生了大量的XML文檔。同時,各種類型的存儲方法也不斷涌現,比較有代表性的有半結構化數據倉庫、文件系統、Native系統和關系數據庫[2]。其中,基于關系數據庫技術的成熟及其應用的廣泛性,XML數據存儲到關系數據庫仍是當前乃至今后很長一段時間內的常用有效手段。

目前,基于關系的XML 存儲的研究受到國內外研究者的重視,發表了一些重要的研究成果,但是總的來說根據存儲時是否使用 XML 模式(DTD 或 XML schema)可以分為結構映射方法[3,4]和模型映射方法[5,6]兩類。由于與結構映射方法相比,模型映射方法具有以下三個優點:a)支持任何靜態(XML 模式不變)或動態(XML 模式不斷變化)的 XML 數據存儲;b)支持任何格式良好的而沒有XML模式的 XML 數據存儲;c)不需要對數據庫模型進行任何擴展就可以支持 XML 的存儲。因此,本文就是針對模型映射方法而設計的XML文檔到關系數據庫映射的新方法。

1 相關工作

結構映射方法是在進行關系數據庫的 XML 存儲時,先根據 XML 模式(或挖掘出 XML 文檔中固有的模式信息)生成相應的關系模式,然后再根據生成的關系模式對 XML 文檔進行解析分解并將它存放于相應的數據表中。文獻[3]的STORED方法結合關系數據庫技術和半結構化數據處理技術來實現對半結構化數據的管理。文獻[7]的DTD方法根據XML模式信息(DTD)來生成相應的關系模式。文獻[8]的CPI方法采用混合內聯法,充分考慮了XML文檔的語義信息, 完成了從DTD到關系模式的映射。文獻[4]提出了P_Schema思想可以直接映射為關系模式,從而實現了XML文檔到關系數據庫的映射。

模型映射方法是將任何XML數據都存放在有固定關系模式的數據庫中,而不考慮 XML 文檔的模式,其本質就是存儲XML文檔的結構信息。文獻[5]提出了做全局(每個節點被分配一個數字代表節點在文檔中的絕對位置)、局部(每個節點被分配一個數字代表它在其兄弟中的相對位置)和Dewey(每個節點給一個標志作為其父標志和私有整型數字的結合)標志。文獻[9]提出了Xrel 方法,用四個固定的表來存儲XML文檔:Path(PathID,Pathexp),Element(DocID,PathID,Start,End,Ordinal),Text (DocID,PathID,Start,End,Value)和Attribute (DocID,PathID,Start,End,Value)。其中的屬性DocID、PathID、Start、End、Value分別代表 XML 文檔的標志、路徑表達式、區域起點、終點和字符類型的值。節點區域指的是該節點在文檔中某條路徑上的起始位置和終止位置,其中暗含了它們之間的包含關系。文獻[6]提出了基于群模式的標志XML樹方法。在該模式中,對一組元素而不是單個元素做標志。元素被分進各個組中,把所有的兄弟節點元素放進一個組,分配一個標志給這個組,代替每個元素給一個標志,然后存儲它們到一個關系記錄里。

以上關于XML存儲的研究所提出的方法多種多樣,但都不同程度地存在著一些問題。第一種結構映射方法對XML文檔的格式要求過于嚴格,耗費大量的數據空間,沒有考慮數據庫存儲及查詢方面的性能等因素,而第二種模型映射方法中插入節點后需要重新標志,動態更新非常困難,提取父—子和祖先—后代節點關系很麻煩,不能進行語義檢索。為了克服以上問題,鑒于模型映射方法具有的優勢,本文從邏輯數據模型、詳細設計、映射算法三個方面提出了基于模型映射的XML文檔到關系數據庫映射的新方法。該方法相對于已有的模型方法來說,其優點如下:a)不僅適用于XML文檔數據,而且還適用于任何樹狀數據結構,具有通用性;b)增加子樹節點(元素和屬性),XML文檔原有的標志不需要更改,動態更新非常容易;c)輕易低代價地維持了XML文檔的原先結構;d)能夠對存儲的數據進行語義檢索。

2 XML文檔到關系數據庫映射方法

2.1 XML邏輯數據模型

定義1 有序標志樹。一篇XML文檔D可以表示為一棵有序標志樹T=(V,v0,Σ,type,tag,val,≤)。其中:V是XML節點的集合;v0∈V是樹的根節點;有窮字母表Σ是文檔D的元素和屬性名稱組成的集合;函數type:V→{elem,attr,text}確定節點類型,若v為元素type(v)=elem,若v為屬性type(v)=attr,若v為文本type(v)=text;Ve={v|v∈V∧type(v)=elem}表示元素節點集合,Va={v|v∈V∧type(v)=attr}表示屬性節點集合,Vt={v|v∈V∧type(v)=text}表示文本節點集合;函數tag:Ve∪Va→Σ返回元素或屬性節點的名稱;函數val:Va∪Vt→str返回屬性或文本節點的值,str是XML文檔中所有合法字符串的集合;二元關系≤∈V2定義XML文檔順序,在文檔D中如果節點u出現在v之前或u=v,則(u,v)∈≤或記為u≤v。

此邏輯數據模型只定義了構成XML文檔的主要數據,即元素、屬性和文本,而忽略處理指令、注釋等次要數據,因此V=Ve∪Va∪Vt。元素節點可以有0、1或多個子節點,子節點的類型可以是元素、屬性或文本;屬性和文本節點沒有子節點。T中每個元素和屬性節點都被賦予惟一的標志,稱為節點id。對于任意v∈V,其節點id記做id(v)。節點集合可以表示為節點id的集合。

例1,對于如下XML文檔,圖1給出了相應的樹型結構。

〈pub〉

〈book year=″2008″〉

〈title〉Database System〈/title〉

〈price〉25.50〈/price〉

〈author id=″101″ sex=″m″〉Kailly Jone〈/author〉

〈/book〉

〈book year=″2009″〉

〈title〉Introduction to XML〈/title〉

〈price〉19.80〈/price〉

〈author id=″102″ sex=″f″〉Dan Oja〈/author〉

〈/book〉

〈/pub〉

根據定義1可以寫出上述XML文檔的邏輯數據模型T=(V,v0,Σ,type,tag,val,≤)。其中:

V={100,101,…,114}; v0=100;

Σ={pub,book,year,title,price,author,id,sex};

type(100)=elem,type(102)=attr,type(104)=text,…;

tag(100)=pub,tag(103)=title,…;

val(102)=“2008”,val(104)=25.50,…;

≤={(100,101),(101,102),…}。

2.2 詳細設計

XML文檔映射關系數據庫方法基于有序標志樹定義的數據模型構建,詳細設計如下:將整個XML文檔看做一個樹結構,樹中的節點即為XML元素、屬性和文本等,給XML文檔節點(元素和屬性)賦予惟一的標志。可以對節點進行如先序、中序或后序遍歷。如果增加子樹節點(元素和屬性),XML文檔原有的標志不需要更改。關系模式設置兩個表,基于文檔本身結構信息的存儲放在documents主表,基于文檔所有內容的存儲放在關系表tags從表。

1)主表documents(doc_id,doc_structure) 可以追加新字段到表結構來保存文檔本身的所有結構信息。其中:

a)doc_id是惟一標志的主鍵字段,由每個文檔本身產生來標記該文檔;

b)doc_structure是包含編碼字符串的大文本字段,用來描述文檔結構,文檔結構的任何變化都應該映射在這個字段中。

2)從表tags(doc_id,tag_id,tag_name,tag_value) 其中:

a)doc_id 是連接documents表的外鍵,反映主從表間的關系;

b)tag_id是每個標記產生的主鍵標志字段;

c)tag_name是標記名或屬性名字段;

d)tag_value是標記屬性的文本字段。

構建doc_structure字段的規則如下:

a)doc_structure字段由一系列長序列相關鍵組成。

b)每個鍵以字母表中字母為開始,元素用“T”,屬性用“A”,必須依照順序來定界鍵。字母后面緊跟著一個數值型數字代表tag_id。

c)如果元素中有一些屬性,那么這個鍵在doc_structure中的標志將由下面的一些鍵定義這些屬性。

d)如果元素中有一些子元素,那么這些子元素將由尖括號括起來的鍵字符串表示。

2.3 映射算法和示例

本映射算法模型采用W3C的文檔對象模型(document object model,DOM)來表示內存中XML文檔,用一個棧來遍歷XML文檔,以相反的順序把每個元素的子元素壓入棧,以便保留它們在doc_structure字段里的順序。映射算法描述如下所示:

輸入:根據XML文檔生成的DOM樹,doc_ id輸出:XML所有標記插入關系數據庫表

初始化棧,根元素入棧;

Do loop

//構造doc_structure字段,將元素和屬性標志加入tags表

彈出棧頂元素;

if棧頂元素為“>”then

//父輩元素的所有子元素被寫入數據庫

將“>”加入str字符串中;

else

//棧頂元素是元素

將元素名和元素值寫入數據庫表;

元素標志加入str字符串中;

if棧頂元素有屬性 then

for 屬性集中的每個屬性 do

將屬性名和屬性值寫入數據庫表;

屬性標志加入str字符串中;

end for

end if

if 棧頂元素有子元素 then

將“<”加入str字符串中;

將“>”入棧;

將所有子元素以相反順序入棧;

end if

if 棧為空 then

exit loop

end if

end loop

將str字符串寫入數據庫(documents表);

通過上述算法,所有元素的子元素都被尖括號包圍,嵌套的尖括號以區分文檔的層次。

為了更詳細地闡述上面介紹的映射算法,給出算法示例(XML文檔代碼和圖1)。在本文所述的方法里,樹里的每個節點(元素和屬性)標志假定按照先序遍歷的。經過轉換之后,這個文檔將在documents表里有一條記錄顯示,如表1中所示的doc_id為50, 表2中tags表將包含文檔內容的所有記錄。此時文檔對應的doc_structure字段為T100〈T101A102〈T103T104T105A106A107〉T108A109〈T110T111T112A113A114〉〉。

表1 Documents表

doc_iddoc_structure50T100〈T101A102〈T103T104T105A106A107〉T108A109〈T110T111T112A113A114〉〉

根據上述方法能很容易地保持文檔的結構,如要刪除id為101的作者的sex屬性,這個屬性是A107,所需做的僅是簡單地從doc_structure字符串中刪除子串A107操作。假設需要在已經存在的標記之間新增一個book標記,僅僅是在上面的字符串的合適位置做插入操作即可,如新增一本書,其結構如圖下所示:

〈book year=″2009″〉

〈title〉Data Structure〈/title〉

〈price〉22.10〈/price〉

〈/book〉

表 2 Tags表

doc_idtag_idtag_nametag_value50100pub150101book150102year200850103titleDatabase System50104price25.5050105authorKailly Jone50106id10150107sexm50108book150109year200950110titleIntroduction toXML50111price19.8050112authorDan Oja50113id10250114sexf

相應的tags表的記錄片段如表3所示,其等價的鍵字符串是T150A151〈T152T153〉。這個新的子串將在合適的位置被插入到doc_structure來保留文檔的原先次序。此時doc_structure字段將變成:

T100〈T101A102〈T103T104T105A106A107〉T150 A151〈T152T153〉T108A109〈T110T111T112A113A114〉〉

表3 等價的tags表

doc_idtag_idtag_nametag_value50150book150151year200950152titleData Structure50153price22.10

3 實驗及結果分析

根據上述分析,在微機配置為CPU Intel Pentium DualCore E2180@2.0 GHz,內存1 GB,硬盤容量160 GB下,基于操作系統Windows XP SP3,采用Borland C++ Builder 6.0開發了一個數據轉換系統。測試的XML文檔來自XML benchmark Xmark[10],通過調節文檔生成器XMLGEN的比例因子,生成五篇不同大小的XML文檔。選擇的關系數據庫類型分別為Oracle 9i, SQL Server 2005, MySQL 5.0和Access 2003四種。實驗測算的是XML文檔映射關系數據庫所需要的時間,時間以s為單位。對于每個XML文檔轉換數據庫重復五次,記錄這些時間的平均值,以便能獲得真實、準確的結果。轉換性能測試如表4所示。

表4 轉換性能測試

文檔大小Access 2003MySQL 5.0SQL Server2005Oracle 9i

13 KB0.0790.0680.0610.08329 KB0.1670.1450.1410.17264 KB0.3760.3050.3110.352580 KB2.3542.8422.2793.1141.3 MB4.9435.9684.7866.539

測試結果顯示:當XML文檔大小為13 KB時,Access 2003、MySQL 5.0、SQL Server 2005和Oracle 9i四種數據庫轉換消耗的時間分別為0.079、0.068、0.061及0.083 s;依此類推,當文檔大小從13 KB逐漸增大到1.3 MB時,每種數據庫映射所消耗的時間亦遞增。因此可以得到以下結論:

系統能夠實現XML文檔到關系數據庫表的映射,而且能輕易地、低代價地保持文檔的結構,映射時間是可以接受的,文檔大小和映射所需時間呈線性關系。同時也可以看出,上述映射算法是可行的。由于系統是在上述硬件環境下進行的轉換,XML數據轉換占用內存比較大,影響了性能,當硬件如內存增大時,系統轉換的消耗時間會大大減少。

4 結束語

隨著Web的廣泛應用,XML正發揮著越來越重要的作用[11],如何在數據庫中有效地存儲XML文檔已經成為人們研究的熱點。但由于本身的結構和目前廣泛使用的關系數據庫不匹配,XML和關系數據庫的結合一直沒有很好的解決方案。文中在模型映射法的基礎上提出了一種簡單的XML文檔映射為關系數據庫的方法。通過此方法,不需要DTD或XML Schema就能簡化映射過程,很容易地以低代價保持文檔的結構,能夠對存儲的數據進行語義檢索,可以用于任何樹型數據結構,不僅僅是XML數據,但它對復雜的混合型XML文檔還不能完全進行語義檢索。以后的工作是改善本方法以完善對復雜的混合型XML文檔的語義檢索的支持,同時還要與其他模型映射方法進行比較來觀察其查詢性能。

參考文獻:

[1]

鄭榮,馬世龍.網格環境下基于XML的異構數據集成系統[J].計算機工程,2008,34(22):52-54.

[2]吳愛華,劉小玲,王洪,等.基于混合映射的XML數據的關系存儲和查詢[J].鄭州大學學報:理學版,2007,39(2):157-160.

[3]DEUTSCH A, FERNANDEZ M, SUCIU D. Storing semistructured data with STORED[C]// Proc of ACM SIGMOD Conference.1999:431-442.

[4]BOHANNONP, FREIRE J, ROY P, et al. From XML schema to relations: a costbased approach to XML storage[C]// Proc of the 18th International Conference on Data Engineering. 2002: 64-75.

[5]TATARINOV I, VIGLAS S, BEYER K, et al. Storing and querying ordered XML using a relational database system[C]//Proc of SIGMOD. 2002: 204-215.

[6]SOLTAN S, RAHGOZAR M. A clusteringbased scheme for labeling XML trees [J].International Journal of Computer Science and Network Security,2006,6(9A): 84-89.

[7]SHANMUGASUNDARAM J, TUFTE K, ZHANG Chun, et al. Relational database for querying XML documents: limitations and opportunities[C]//Proc of the 25th International Conference on Very Large Data Bases. 1999:302-314.

[8]LEE D, CHU W W. CPI: constraintpreserving inlining algorithm for mapping XML to relational schema[J]. Data and Knowledge Engineering, 2001, 39(1):3-25.

[9]YOSHIKAWA M, AMAGASA T, SHIMURA T, et al. XRel: a pathbased approach to storage and retrieval of XML documents using relational database[J]. ACM TOIT, 2001,1(1): 110-141.

[10]XMark: an XML benchmark project[EB/OL]. http://monetdb.cwi.nl/xml/.

[11]劉健,馬宗民,嚴麗.含有效時間時態關系數據庫到XML映射方法的研究[J].計算機科學,2008,35(6):240-250.

主站蜘蛛池模板: 亚洲水蜜桃久久综合网站| 人妻丝袜无码视频| 高清无码一本到东京热| 成人在线不卡视频| 国产微拍一区| 久久人人97超碰人人澡爱香蕉| 一本色道久久88亚洲综合| 91久久偷偷做嫩草影院免费看| 波多野结衣中文字幕一区| 免费一级大毛片a一观看不卡| 97se亚洲| 亚洲高清中文字幕| 九色综合伊人久久富二代| 精品人妻无码中字系列| 波多野结衣的av一区二区三区| 国产av一码二码三码无码| 亚洲大尺码专区影院| 国产真实乱人视频| 99re热精品视频国产免费| 欧美成一级| 亚洲一道AV无码午夜福利| 国产精欧美一区二区三区| 国产黑丝一区| 欧美无专区| 亚洲天堂在线视频| 日韩人妻精品一区| 1769国产精品免费视频| 国产精品熟女亚洲AV麻豆| 国产免费人成视频网| 午夜三级在线| 久青草国产高清在线视频| 欧美A级V片在线观看| 欧美伊人色综合久久天天| julia中文字幕久久亚洲| 欧美亚洲香蕉| 精品久久久久成人码免费动漫| 白丝美女办公室高潮喷水视频 | 日韩在线第三页| 国产xx在线观看| 小说区 亚洲 自拍 另类| 日韩一区二区三免费高清| 青青草原国产一区二区| 精品国产香蕉伊思人在线| 潮喷在线无码白浆| 国产精品v欧美| 九九精品在线观看| 日韩AV手机在线观看蜜芽| 激情午夜婷婷| 色一情一乱一伦一区二区三区小说| 亚洲高清在线播放| 97视频精品全国免费观看| 国产色伊人| 国产精鲁鲁网在线视频| 国产69精品久久| 国产精品欧美激情| 国产成人AV综合久久| 国产成人av大片在线播放| 国产一区二区人大臿蕉香蕉| 国产精品久久久久婷婷五月| 四虎永久免费在线| 亚洲系列无码专区偷窥无码| 国产精品偷伦在线观看| 无码日韩精品91超碰| 色呦呦手机在线精品| 色亚洲成人| 26uuu国产精品视频| 怡红院美国分院一区二区| 国产不卡一级毛片视频| 国产精品露脸视频| 男女男免费视频网站国产| 日韩欧美成人高清在线观看| 婷婷久久综合九色综合88| 国产亚洲精| 日本精品αv中文字幕| 99视频国产精品| 亚洲欧美在线综合图区| 色老二精品视频在线观看| 中文无码精品a∨在线观看| 亚洲精品第1页| 美女国内精品自产拍在线播放| 国产区网址| 国产男女免费视频|