陳 姍,王麗娟,張光輝
(河南農(nóng)業(yè)大學(xué)信息與管理科學(xué)學(xué)院,河南鄭州450002)
XML(eXtensible Markup Language,可擴展標記語言)具有自定義性、可移植性及其可擴展性等優(yōu)勢,便于表達各種類型的數(shù)據(jù),常作為數(shù)據(jù)存儲和交換的中介[1~4],同時 XML將其數(shù)據(jù)內(nèi)容與應(yīng)用程序分開存儲,可大大提高數(shù)據(jù)交換和聯(lián)合查詢的效率.關(guān)系數(shù)據(jù)庫技術(shù)在大規(guī)模數(shù)據(jù)處理中的高效性、穩(wěn)定性、可移植性和可擴展性是其他技術(shù)無法比擬的,該技術(shù)可在一個系統(tǒng)中同時處理XML數(shù)據(jù)和關(guān)系數(shù)據(jù).XML和關(guān)系數(shù)據(jù)庫技術(shù)的結(jié)合可解決異構(gòu)系統(tǒng)的數(shù)據(jù)集成問題.
目前XML數(shù)據(jù)在關(guān)系數(shù)據(jù)庫中的存儲方法很多,有的是直接把XML數(shù)據(jù)進行轉(zhuǎn)換存儲到關(guān)系數(shù)據(jù)庫中,有的先把XML文檔模式映射到關(guān)系模式,然后再把XML數(shù)據(jù)存儲到映射后的關(guān)系模式中.國 內(nèi) 外 研 究 學(xué) 者 提 出 Edge,STORED[5],DTD[6],XPARENT[7]等許多技術(shù)方案.但目前的研究成果主要應(yīng)用于工業(yè)領(lǐng)域,涉及農(nóng)業(yè)方面的應(yīng)用較少,特別是將XML數(shù)據(jù)關(guān)系化存儲技術(shù)應(yīng)用到農(nóng)業(yè)供應(yīng)鏈管理ASCM(Agriculture supply chain management)系統(tǒng)方面還鮮見報道.
ASCM系統(tǒng)的突出特點是數(shù)據(jù)更新速度快,其查詢效率的高低直接影響到農(nóng)資供應(yīng)商、種植商(農(nóng)戶)、批發(fā)市場、零售商、消費者等主體的經(jīng)濟效益.為高效率的實現(xiàn)ASCM系統(tǒng)中各農(nóng)業(yè)數(shù)據(jù)庫系統(tǒng)的不同來源、格式、特點、性質(zhì)的異構(gòu)數(shù)據(jù)存儲,基于XML的ASCM系統(tǒng)信息集成框架,本文提出一種XML數(shù)據(jù)到關(guān)系數(shù)據(jù)的有效轉(zhuǎn)換方法,盡可能多地保持XML模式信息以便文檔重構(gòu),為建立統(tǒng)一的農(nóng)業(yè)資源信息共享平臺[8~11]奠定基礎(chǔ).
基于XML的ASCM系統(tǒng)的框架結(jié)構(gòu)共分為應(yīng)用層、集成層、數(shù)據(jù)層(如圖1所示).應(yīng)用層:為農(nóng)戶等主體提供統(tǒng)一的界面查看全局模式;并以XML的格式顯示來自底層的查詢結(jié)果.集成層:是應(yīng)用層和數(shù)據(jù)層之間傳遞數(shù)據(jù)的工具.由中介器和包裝器構(gòu)成,中介器和包裝器通過ORB/IIOP通信.查詢分析器接收并檢查查詢語句的語法,查詢分解器根據(jù)元數(shù)據(jù)字典將全局查詢分解成針對各個局部數(shù)據(jù)庫的若干子查詢并交給相應(yīng)的包裝器,集成器將包裝器返回的查詢結(jié)果整合后以全局模式的形式返回給用戶,元數(shù)據(jù)字典存儲數(shù)據(jù)源的鏈接信息、公共數(shù)據(jù)模型以及公共數(shù)據(jù)模型與數(shù)據(jù)源的映射規(guī)則.包裝器負責(zé)將子查詢轉(zhuǎn)換成符合每個數(shù)據(jù)源模型和模式的查詢,并把查詢結(jié)果轉(zhuǎn)換成XML格式然后返回給中介器.數(shù)據(jù)層:由分布的異構(gòu)數(shù)據(jù)源構(gòu)成,是整個集成系統(tǒng)的數(shù)據(jù)提供者.主要功能是接受農(nóng)戶等主體的具體查詢請求,并將查詢結(jié)果以關(guān)系數(shù)據(jù)的形式返回給包裝器.
圖1 ASCM系統(tǒng)框架Fig.1 ASCM system framework
ASCM系統(tǒng)中XML文檔存儲的關(guān)鍵是如何建立XML文檔在關(guān)系數(shù)據(jù)庫中的關(guān)系表,其轉(zhuǎn)換過程如圖2所示.主要包括模式轉(zhuǎn)換和數(shù)據(jù)轉(zhuǎn)換2大部分.
圖2 XML數(shù)據(jù)到關(guān)系數(shù)據(jù)表的轉(zhuǎn)換過程Fig.2 Conversion process of XML data to relational data
在分析DTD模式文檔的基礎(chǔ)上,采用基于模式的結(jié)構(gòu)映射方法,首先簡化并解析DTD文檔,然后將簡化后的DTD文檔繪制成DTD圖并存儲在ASCM系統(tǒng)的映射模型庫中,根據(jù) DTD圖產(chǎn)生DTD內(nèi)聯(lián)圖,同時存儲到映射模型庫和RDB中.DTD內(nèi)聯(lián)圖到關(guān)系模式的映射方法存儲在ASCM系統(tǒng)映射模型庫中,方便相應(yīng)的XML文檔根據(jù)DTD內(nèi)聯(lián)圖進行模式轉(zhuǎn)換.
根據(jù)XML實例文檔建立XML樹,并存儲在RDB中,根據(jù)模式轉(zhuǎn)換過程中產(chǎn)生的DTD內(nèi)聯(lián)圖和ASCM系統(tǒng)映射模型庫中模式映射的方法,將XML數(shù)據(jù)存儲到相應(yīng)的關(guān)系表中.
ASCM集成系統(tǒng)的主要任務(wù)是完成XML數(shù)據(jù)和關(guān)系數(shù)據(jù)的相互轉(zhuǎn)換,其中的關(guān)鍵部分是實現(xiàn)XML模式到關(guān)系模式的轉(zhuǎn)換,轉(zhuǎn)換過程不僅要實現(xiàn)數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換,還要考慮到XML數(shù)據(jù)的語義保持和自身的順序性、層次性等特點.基于ASCM系統(tǒng)的模式轉(zhuǎn)換步驟如下.
DTD文檔的結(jié)構(gòu)可以由圖G=(V,E)來表示.其中V是圖中結(jié)點的集合,E是圖中邊的集合.結(jié)點v表示元素或?qū)傩孕畔?,e表示結(jié)點之間的關(guān)系.每個結(jié)點由對應(yīng)元素或?qū)傩缘拿Q標注,屬性名稱前加@以示區(qū)分.每條邊e包含以下信息:“,”:只有一個值;“* ”:有0到多個值;“+”:有 1到多個值;“?”:多個值選擇.默認情況下邊信息為“,”.
農(nóng)戶數(shù)據(jù)庫信息XML文檔對應(yīng)的DTD如farmerInfo.dtd 所示,根據(jù) DTD 的簡化規(guī)則[12,13]簡化DTD,簡化后的DTD按照轉(zhuǎn)換規(guī)則轉(zhuǎn)換為DTD圖:元素和屬性直接轉(zhuǎn)換為DTD圖的結(jié)點,元素與子元素或?qū)傩缘年P(guān)系轉(zhuǎn)換為結(jié)點之間的邊,箭頭由父元素指向子元素或?qū)傩?轉(zhuǎn)換后的農(nóng)戶信息DTD圖如圖3所示.
farmerInfo.dtd
<!ELEMENT農(nóng)戶信息(農(nóng)戶*)>
<!ELEMENT農(nóng)戶(名字,農(nóng)資需求+,農(nóng)產(chǎn)品出售*,地址*,電話)>
<!ATTLIST農(nóng)戶id ID#REQUIRED>
<!ELEMENT名字(#PCDATA)>
<!ELEMENT農(nóng)資需求(名字*,數(shù)量*)>
<!ELEMENT農(nóng)產(chǎn)品出售 (名字*,數(shù)量*)>
<!ELEMENT數(shù)量(#PCDATA)>
<!ELEMENT地址(城市,地區(qū))>
<!ELEMENT城市(#PCDATA)>
<!ELEMENT地區(qū)(#PCDATA)>
<!ELEMENT電話(#PCDATA)>
圖3 農(nóng)戶信息DTD圖Fig.3 Farmers'information DTD figure
ASCM系統(tǒng)數(shù)據(jù)量大,信息更新速度快,查詢效率的高低直接關(guān)系到農(nóng)戶、農(nóng)資供應(yīng)商、零售商等主體的經(jīng)濟效益,因此應(yīng)該最大程度地提高查詢效率.如果將DTD圖中的結(jié)點直接映射為關(guān)系表,那么對于ASCM系統(tǒng)數(shù)據(jù)庫中嵌套較深、子元素或?qū)傩詡€數(shù)較多的DTD文檔來說,在查詢時會過多的使用連接操作,從而影響查詢效率的提高.對于DTD圖中只有唯一值的結(jié)點,即邊信息是“,”的結(jié)點,我們稱之為可內(nèi)聯(lián)結(jié)點,可以將該結(jié)點信息內(nèi)聯(lián)到父結(jié)點中保存,以此達到減少生成關(guān)系表數(shù)目的目的.本文在DTD圖的基礎(chǔ)上采用內(nèi)聯(lián)方法實現(xiàn)XML模式到關(guān)系模式的轉(zhuǎn)換,該方法中最重要的是實現(xiàn)DTD圖到內(nèi)聯(lián)圖的轉(zhuǎn)換,具體轉(zhuǎn)算法如圖4.
根據(jù)DTD內(nèi)聯(lián)圖構(gòu)造算法,對農(nóng)戶信息DTD圖進行深度優(yōu)先遍歷,根據(jù)圖中的每個結(jié)點的信息以及結(jié)點之間邊的信息進行處理,得到的農(nóng)戶信息DTD內(nèi)聯(lián)圖如圖5所示.
在農(nóng)戶信息DTD內(nèi)聯(lián)圖的基礎(chǔ)上實現(xiàn)XML模式到關(guān)系模式的轉(zhuǎn)換,主要考慮2個方面:一方面是充分利用圖中結(jié)點的信息;另一方面還要考慮XML數(shù)據(jù)的順序性和層次性,為以后XML數(shù)據(jù)的重構(gòu)做好準備.
DTD內(nèi)聯(lián)圖到關(guān)系模式的轉(zhuǎn)換思想是:將內(nèi)聯(lián)圖中每個結(jié)點e轉(zhuǎn)換為關(guān)系模式的一個表T,e中可內(nèi)聯(lián)的結(jié)點轉(zhuǎn)換為表T中的字段.如果結(jié)點e不是根結(jié)點,添加parentID字段來存儲父結(jié)點位置;對于入度大于1的共享結(jié)點e,添加parentType字段來保存父結(jié)點的類型;如果e是普通的元素類型結(jié)點,添加endID字段來存儲最后一個子元素的編號;如果e是葉子元素類型結(jié)點,則在e對應(yīng)的表中添加字段名作為字段來存儲結(jié)點本身.對于可內(nèi)聯(lián)的結(jié)點f,如果f是元素類型而不是屬性類型,添加字段f.ID和f.endID存儲本元素相關(guān)信息;如果f是屬性或葉子元素類型結(jié)點,添加同名字段名來存儲結(jié)點本身.如果e是元素結(jié)點,標注e.ID作為關(guān)系e的主鍵,否則讓e.ID和e.parentID共同作為關(guān)系e的主鍵.根據(jù)上述轉(zhuǎn)換策略,可以把農(nóng)戶信息DTD內(nèi)聯(lián)圖轉(zhuǎn)換為關(guān)系模式,得到的結(jié)果見圖6.
圖6 農(nóng)戶信息關(guān)系模式Fig.6 Farmers'information relational schema
模式轉(zhuǎn)換過程中用DTD圖來表示XML文檔的模式信息,數(shù)據(jù)轉(zhuǎn)換中使用XML樹表示XML文檔的數(shù)據(jù)信息.XML樹構(gòu)造方法和DTD圖構(gòu)造方法相同,結(jié)點表示XML文檔中的元素,邊表示元素間的父子關(guān)系.ASCM系統(tǒng)中農(nóng)戶信息實例文檔見圖7,按照全局順序編碼方法[14]對應(yīng)的XML樹見圖8.
根據(jù)模式轉(zhuǎn)換過程中產(chǎn)生的DTD內(nèi)聯(lián)圖、關(guān)系模式和數(shù)據(jù)轉(zhuǎn)換過程中產(chǎn)生的XML樹,可以將XML文檔數(shù)據(jù)插入到相應(yīng)的關(guān)系表中.具體轉(zhuǎn)換思想是:遍歷XML樹中的每個結(jié)點元素e,求出它在DTD內(nèi)聯(lián)圖中對應(yīng)的結(jié)點d,如果d是不可內(nèi)聯(lián)的結(jié)點,說明e可能包含有其他的元素或?qū)傩?,這些元素或?qū)傩詰?yīng)保存到d對應(yīng)的表中;如果d是可內(nèi)聯(lián)的,e包含的信息保存在父結(jié)點所對應(yīng)的表中.
根據(jù)模式轉(zhuǎn)換結(jié)果圖6可知farmerInfo.xml可產(chǎn)生7個關(guān)系表,根據(jù)圖6的關(guān)系表和字段,參考轉(zhuǎn)換思想,依次添加圖7和圖8的數(shù)據(jù)信息,得到農(nóng)戶信息farmerInfo.xml生成的關(guān)系數(shù)據(jù)表,如表1~7所示.字段ID、內(nèi)聯(lián)結(jié)點f的字段f.ID均表示元素結(jié)點的全局順序;如果元素結(jié)點e.ID=e.endID,表示元素結(jié)點e在XML樹T中是一個葉子結(jié)點;parentType表示父結(jié)點類型,主要用于區(qū)分共享結(jié)點的父結(jié)點來源,由父結(jié)點名稱表示.其中表5地址表及其字段對應(yīng)圖6中的地址關(guān)系模式,元組值(11,2,13,12,12,鄭州市,13,13,金水區(qū))表示地址元素結(jié)點的全局順序為11,它的父元素結(jié)點編號為2(即農(nóng)戶結(jié)點),最后一個子元素為地區(qū),地址結(jié)點的內(nèi)聯(lián)結(jié)點城市的全局順序為12,該城市結(jié)點的最后一個子元素編號為12,因此該城市結(jié)點是葉子結(jié)點,內(nèi)容為“鄭州市”,地址結(jié)點的內(nèi)聯(lián)結(jié)點地區(qū)的全局順序為13,該地區(qū)結(jié)點是葉子結(jié)點,內(nèi)容為“金水區(qū)”.表6名字表及其字段對應(yīng)圖6中的名字關(guān)系模式,元組值(6,5,6,農(nóng)資需求,碳酸氫銨)表示該名字結(jié)點的全局順序為6,父元素結(jié)點編號是5(即農(nóng)資需求),該名字結(jié)點是葉子結(jié)點,父元素類型為農(nóng)資需求,內(nèi)容為“碳酸氫銨”.
表1 農(nóng)戶信息表Table1 Farmers'information table
表2 農(nóng)資需求表Table2 Products demand table
表3 農(nóng)產(chǎn)品出售Table3 Products sales table
表4 農(nóng)戶表Table4 Farmers'table
表5 地址表Table5 Address table
表6 名字表Table6 Name table
表7 數(shù)量表Table7 Amount table
本研究針對ASCM系統(tǒng)數(shù)據(jù)量大、數(shù)據(jù)更新快等特點,在模式映射的基礎(chǔ)上提出一種內(nèi)聯(lián)算法,將XML數(shù)據(jù)存儲到關(guān)系數(shù)據(jù)表中,可較大程度減少生成的關(guān)系表數(shù)量,直接提高ASCM系統(tǒng)數(shù)據(jù)的查詢效率.整個轉(zhuǎn)換過程包括模式轉(zhuǎn)換和數(shù)據(jù)轉(zhuǎn)換2部分,模式轉(zhuǎn)換過程中重點介紹了DTD內(nèi)聯(lián)圖的構(gòu)造算法和DTD內(nèi)聯(lián)圖到關(guān)系模式的轉(zhuǎn)換思想,整個轉(zhuǎn)換過程充分考慮到了XML數(shù)據(jù)順序性、查詢效率等問題,盡量保證信息的完整性,為實現(xiàn)ASCM系統(tǒng)信息共享提供一種有效的方法和手段.
[1] 孫會峰,萬會蕊.基于XML的糧食儲備庫異構(gòu)信息集成平臺設(shè)計[J].河南工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2008,29(4):60-63.
[2] 許 峰,張雪潔,李鳳生,等.XML數(shù)據(jù)集成平臺的研究與應(yīng)用[J].計算機工程與設(shè)計,2009,30(13):3212-3215.
[3] 邵秀麗,韓建彬,閻仲蹼.基于XML的異構(gòu)數(shù)據(jù)源間數(shù)據(jù)交換的實現(xiàn)研究[J].南開大學(xué)學(xué)報:自然科學(xué)版,2007,40(3):9-14.
[4] 趙芳云.基于XML的異構(gòu)數(shù)據(jù)源查詢系統(tǒng)設(shè)計[J].計算機應(yīng)用與軟件,2009,26(8):185-188.
[5] DEUTSCH A,F(xiàn)ERNANDEZ M,SUCIU D.Storig semistructured data with STORED[C]//DELIS A,F(xiàn)ALOUTSOSC,GHANDEHARIZADEH S.Proceedings of ACM SIGMOD International Conference on Management of Data.Philadelphia Pennsylvania:ACM Press,1999:431-442.
[6] SHANMUGASUNDARAM J,TUFTE K,HE G,et al.Relational databases for querying XML documents:Limitations and Opportunities[C]//ATKINSON M P,ORLOWSKA M E,VALDURIEZ P,et al.Proceedings of 25th international conference on very large data bases.Edinburgh,Scotland:Morgan Kaufmann Publishers Inc,1999:302-314.
[7] JIANG H,LU H,WANG W.Path materialization revisited:an efficient storage model for XML data[C]//WECKERT J.Proceedings of the 13th australasian database conference. Darlinghurst, Australia:Australian Computer Society Inc.,2002:85-94.
[8] 陳 樺,麻風(fēng)梅,韓艷艷.基于XML的異構(gòu)數(shù)據(jù)集成模式研究[J].微電子學(xué)與計算機,2009,26(1):137-139.
[9] 袁曉潔,于士濤,李志梁.基于Mediation的異構(gòu)數(shù)據(jù)集成系統(tǒng)HDIS設(shè)計與實現(xiàn)[J].計算機工程與應(yīng)用,2006,42(1):162-165.
[10]朱 靜,陳忠良.異構(gòu)數(shù)據(jù)源集成的實現(xiàn)[J].內(nèi)蒙古大學(xué)學(xué)報:自然科學(xué)版,2005,36(4):458-461.
[11]張 麗,田銀磊.基于PDA的小麥測土配方施肥信息移動查詢系統(tǒng)[J].河南農(nóng)業(yè)大學(xué)學(xué)報,2010,44(3):340-342.
[12]溫立東,黃上騰.基于DTD的XML文檔到關(guān)系模式的映射規(guī)則研究[J].計算機工程與應(yīng)用,2006,42(24):164-166
[13]張先利,陳玉蘭,于建華.基于圖的XML DTD到關(guān)系模式的映射[J].計算機應(yīng)用,2008,28(2):123-128.
[14] TATARINOV I,VIGLAS S,ALMADEN K,et al.Storing and querying ordered XML using a relational database system[C]//FRANKLIN M J,MOON B,AILAMAKI A.Proceedings of the 2002 ACM SIGMOD international conference on management of data.Madison,Wisconsin:ACM Press.2002:204-215.