陳 姍,王麗娟,張光輝
(河南農(nóng)業(yè)大學(xué)信息與管理科學(xué)學(xué)院,河南鄭州450002)
XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語言)具有自定義性、可移植性及其可擴(kuò)展性等優(yōu)勢,便于表達(dá)各種類型的數(shù)據(jù),常作為數(shù)據(jù)存儲(chǔ)和交換的中介[1~4],同時(shí) XML將其數(shù)據(jù)內(nèi)容與應(yīng)用程序分開存儲(chǔ),可大大提高數(shù)據(jù)交換和聯(lián)合查詢的效率.關(guān)系數(shù)據(jù)庫技術(shù)在大規(guī)模數(shù)據(jù)處理中的高效性、穩(wěn)定性、可移植性和可擴(kuò)展性是其他技術(shù)無法比擬的,該技術(shù)可在一個(gè)系統(tǒng)中同時(shí)處理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ù)庫中的存儲(chǔ)方法很多,有的是直接把XML數(shù)據(jù)進(jìn)行轉(zhuǎn)換存儲(chǔ)到關(guān)系數(shù)據(jù)庫中,有的先把XML文檔模式映射到關(guān)系模式,然后再把XML數(shù)據(jù)存儲(chǔ)到映射后的關(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)系化存儲(chǔ)技術(shù)應(yīng)用到農(nóng)業(yè)供應(yīng)鏈管理ASCM(Agriculture supply chain management)系統(tǒng)方面還鮮見報(bào)道.
ASCM系統(tǒng)的突出特點(diǎn)是數(shù)據(jù)更新速度快,其查詢效率的高低直接影響到農(nóng)資供應(yīng)商、種植商(農(nóng)戶)、批發(fā)市場、零售商、消費(fèi)者等主體的經(jīng)濟(jì)效益.為高效率的實(shí)現(xiàn)ASCM系統(tǒng)中各農(nóng)業(yè)數(shù)據(jù)庫系統(tǒng)的不同來源、格式、特點(diǎn)、性質(zhì)的異構(gòu)數(shù)據(jù)存儲(chǔ),基于XML的ASCM系統(tǒng)信息集成框架,本文提出一種XML數(shù)據(jù)到關(guān)系數(shù)據(jù)的有效轉(zhuǎn)換方法,盡可能多地保持XML模式信息以便文檔重構(gòu),為建立統(tǒng)一的農(nóng)業(yè)資源信息共享平臺(tái)[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ù)字典將全局查詢分解成針對各個(gè)局部數(shù)據(jù)庫的若干子查詢并交給相應(yīng)的包裝器,集成器將包裝器返回的查詢結(jié)果整合后以全局模式的形式返回給用戶,元數(shù)據(jù)字典存儲(chǔ)數(shù)據(jù)源的鏈接信息、公共數(shù)據(jù)模型以及公共數(shù)據(jù)模型與數(shù)據(jù)源的映射規(guī)則.包裝器負(fù)責(zé)將子查詢轉(zhuǎn)換成符合每個(gè)數(shù)據(jù)源模型和模式的查詢,并把查詢結(jié)果轉(zhuǎn)換成XML格式然后返回給中介器.數(shù)據(jù)層:由分布的異構(gòu)數(shù)據(jù)源構(gòu)成,是整個(gè)集成系統(tǒng)的數(shù)據(jù)提供者.主要功能是接受農(nóng)戶等主體的具體查詢請求,并將查詢結(jié)果以關(guān)系數(shù)據(jù)的形式返回給包裝器.
圖1 ASCM系統(tǒng)框架Fig.1 ASCM system framework
ASCM系統(tǒng)中XML文檔存儲(chǔ)的關(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圖并存儲(chǔ)在ASCM系統(tǒng)的映射模型庫中,根據(jù) DTD圖產(chǎn)生DTD內(nèi)聯(lián)圖,同時(shí)存儲(chǔ)到映射模型庫和RDB中.DTD內(nèi)聯(lián)圖到關(guān)系模式的映射方法存儲(chǔ)在ASCM系統(tǒng)映射模型庫中,方便相應(yīng)的XML文檔根據(jù)DTD內(nèi)聯(lián)圖進(jìn)行模式轉(zhuǎn)換.
根據(jù)XML實(shí)例文檔建立XML樹,并存儲(chǔ)在RDB中,根據(jù)模式轉(zhuǎn)換過程中產(chǎn)生的DTD內(nèi)聯(lián)圖和ASCM系統(tǒng)映射模型庫中模式映射的方法,將XML數(shù)據(jù)存儲(chǔ)到相應(yīng)的關(guān)系表中.
ASCM集成系統(tǒng)的主要任務(wù)是完成XML數(shù)據(jù)和關(guān)系數(shù)據(jù)的相互轉(zhuǎn)換,其中的關(guān)鍵部分是實(shí)現(xiàn)XML模式到關(guān)系模式的轉(zhuǎn)換,轉(zhuǎn)換過程不僅要實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換,還要考慮到XML數(shù)據(jù)的語義保持和自身的順序性、層次性等特點(diǎn).基于ASCM系統(tǒng)的模式轉(zhuǎn)換步驟如下.
DTD文檔的結(jié)構(gòu)可以由圖G=(V,E)來表示.其中V是圖中結(jié)點(diǎn)的集合,E是圖中邊的集合.結(jié)點(diǎn)v表示元素或?qū)傩孕畔?,e表示結(jié)點(diǎn)之間的關(guān)系.每個(gè)結(jié)點(diǎn)由對應(yīng)元素或?qū)傩缘拿Q標(biāo)注,屬性名稱前加@以示區(qū)分.每條邊e包含以下信息:“,”:只有一個(gè)值;“* ”:有0到多個(gè)值;“+”:有 1到多個(gè)值;“?”:多個(gè)值選擇.默認(rèn)情況下邊信息為“,”.
農(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é)點(diǎn),元素與子元素或?qū)傩缘年P(guān)系轉(zhuǎn)換為結(jié)點(diǎn)之間的邊,箭頭由父元素指向子元素或?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)濟(jì)效益,因此應(yīng)該最大程度地提高查詢效率.如果將DTD圖中的結(jié)點(diǎn)直接映射為關(guān)系表,那么對于ASCM系統(tǒng)數(shù)據(jù)庫中嵌套較深、子元素或?qū)傩詡€(gè)數(shù)較多的DTD文檔來說,在查詢時(shí)會(huì)過多的使用連接操作,從而影響查詢效率的提高.對于DTD圖中只有唯一值的結(jié)點(diǎn),即邊信息是“,”的結(jié)點(diǎn),我們稱之為可內(nèi)聯(lián)結(jié)點(diǎn),可以將該結(jié)點(diǎn)信息內(nèi)聯(lián)到父結(jié)點(diǎn)中保存,以此達(dá)到減少生成關(guān)系表數(shù)目的目的.本文在DTD圖的基礎(chǔ)上采用內(nèi)聯(lián)方法實(shí)現(xiàn)XML模式到關(guān)系模式的轉(zhuǎn)換,該方法中最重要的是實(shí)現(xiàn)DTD圖到內(nèi)聯(lián)圖的轉(zhuǎn)換,具體轉(zhuǎn)算法如圖4.
根據(jù)DTD內(nèi)聯(lián)圖構(gòu)造算法,對農(nóng)戶信息DTD圖進(jìn)行深度優(yōu)先遍歷,根據(jù)圖中的每個(gè)結(jié)點(diǎn)的信息以及結(jié)點(diǎn)之間邊的信息進(jìn)行處理,得到的農(nóng)戶信息DTD內(nèi)聯(lián)圖如圖5所示.
在農(nóng)戶信息DTD內(nèi)聯(lián)圖的基礎(chǔ)上實(shí)現(xiàn)XML模式到關(guān)系模式的轉(zhuǎn)換,主要考慮2個(gè)方面:一方面是充分利用圖中結(jié)點(diǎn)的信息;另一方面還要考慮XML數(shù)據(jù)的順序性和層次性,為以后XML數(shù)據(jù)的重構(gòu)做好準(zhǔn)備.
DTD內(nèi)聯(lián)圖到關(guān)系模式的轉(zhuǎn)換思想是:將內(nèi)聯(lián)圖中每個(gè)結(jié)點(diǎn)e轉(zhuǎn)換為關(guān)系模式的一個(gè)表T,e中可內(nèi)聯(lián)的結(jié)點(diǎn)轉(zhuǎn)換為表T中的字段.如果結(jié)點(diǎn)e不是根結(jié)點(diǎn),添加parentID字段來存儲(chǔ)父結(jié)點(diǎn)位置;對于入度大于1的共享結(jié)點(diǎn)e,添加parentType字段來保存父結(jié)點(diǎn)的類型;如果e是普通的元素類型結(jié)點(diǎn),添加endID字段來存儲(chǔ)最后一個(gè)子元素的編號;如果e是葉子元素類型結(jié)點(diǎn),則在e對應(yīng)的表中添加字段名作為字段來存儲(chǔ)結(jié)點(diǎn)本身.對于可內(nèi)聯(lián)的結(jié)點(diǎn)f,如果f是元素類型而不是屬性類型,添加字段f.ID和f.endID存儲(chǔ)本元素相關(guān)信息;如果f是屬性或葉子元素類型結(jié)點(diǎn),添加同名字段名來存儲(chǔ)結(jié)點(diǎn)本身.如果e是元素結(jié)點(diǎn),標(biāo)注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é)點(diǎn)表示XML文檔中的元素,邊表示元素間的父子關(guān)系.ASCM系統(tǒng)中農(nóng)戶信息實(shí)例文檔見圖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樹中的每個(gè)結(jié)點(diǎn)元素e,求出它在DTD內(nèi)聯(lián)圖中對應(yīng)的結(jié)點(diǎn)d,如果d是不可內(nèi)聯(lián)的結(jié)點(diǎn),說明e可能包含有其他的元素或?qū)傩?,這些元素或?qū)傩詰?yīng)保存到d對應(yīng)的表中;如果d是可內(nèi)聯(lián)的,e包含的信息保存在父結(jié)點(diǎn)所對應(yīng)的表中.
根據(jù)模式轉(zhuǎn)換結(jié)果圖6可知farmerInfo.xml可產(chǎn)生7個(gè)關(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é)點(diǎn)f的字段f.ID均表示元素結(jié)點(diǎn)的全局順序;如果元素結(jié)點(diǎn)e.ID=e.endID,表示元素結(jié)點(diǎn)e在XML樹T中是一個(gè)葉子結(jié)點(diǎn);parentType表示父結(jié)點(diǎn)類型,主要用于區(qū)分共享結(jié)點(diǎn)的父結(jié)點(diǎn)來源,由父結(jié)點(diǎn)名稱表示.其中表5地址表及其字段對應(yīng)圖6中的地址關(guān)系模式,元組值(11,2,13,12,12,鄭州市,13,13,金水區(qū))表示地址元素結(jié)點(diǎn)的全局順序?yàn)?1,它的父元素結(jié)點(diǎn)編號為2(即農(nóng)戶結(jié)點(diǎn)),最后一個(gè)子元素為地區(qū),地址結(jié)點(diǎn)的內(nèi)聯(lián)結(jié)點(diǎn)城市的全局順序?yàn)?2,該城市結(jié)點(diǎn)的最后一個(gè)子元素編號為12,因此該城市結(jié)點(diǎn)是葉子結(jié)點(diǎn),內(nèi)容為“鄭州市”,地址結(jié)點(diǎn)的內(nèi)聯(lián)結(jié)點(diǎn)地區(qū)的全局順序?yàn)?3,該地區(qū)結(jié)點(diǎn)是葉子結(jié)點(diǎn),內(nèi)容為“金水區(qū)”.表6名字表及其字段對應(yīng)圖6中的名字關(guān)系模式,元組值(6,5,6,農(nóng)資需求,碳酸氫銨)表示該名字結(jié)點(diǎn)的全局順序?yàn)?,父元素結(jié)點(diǎn)編號是5(即農(nóng)資需求),該名字結(jié)點(diǎn)是葉子結(jié)點(diǎn),父元素類型為農(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ù)更新快等特點(diǎn),在模式映射的基礎(chǔ)上提出一種內(nèi)聯(lián)算法,將XML數(shù)據(jù)存儲(chǔ)到關(guān)系數(shù)據(jù)表中,可較大程度減少生成的關(guān)系表數(shù)量,直接提高ASCM系統(tǒng)數(shù)據(jù)的查詢效率.整個(gè)轉(zhuǎn)換過程包括模式轉(zhuǎn)換和數(shù)據(jù)轉(zhuǎn)換2部分,模式轉(zhuǎn)換過程中重點(diǎn)介紹了DTD內(nèi)聯(lián)圖的構(gòu)造算法和DTD內(nèi)聯(lián)圖到關(guān)系模式的轉(zhuǎn)換思想,整個(gè)轉(zhuǎn)換過程充分考慮到了XML數(shù)據(jù)順序性、查詢效率等問題,盡量保證信息的完整性,為實(shí)現(xiàn)ASCM系統(tǒng)信息共享提供一種有效的方法和手段.
[1] 孫會(huì)峰,萬會(huì)蕊.基于XML的糧食儲(chǔ)備庫異構(gòu)信息集成平臺(tái)設(shè)計(jì)[J].河南工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2008,29(4):60-63.
[2] 許 峰,張雪潔,李鳳生,等.XML數(shù)據(jù)集成平臺(tái)的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(13):3212-3215.
[3] 邵秀麗,韓建彬,閻仲蹼.基于XML的異構(gòu)數(shù)據(jù)源間數(shù)據(jù)交換的實(shí)現(xiàn)研究[J].南開大學(xué)學(xué)報(bào):自然科學(xué)版,2007,40(3):9-14.
[4] 趙芳云.基于XML的異構(gòu)數(shù)據(jù)源查詢系統(tǒng)設(shè)計(jì)[J].計(jì)算機(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é)與計(jì)算機(jī),2009,26(1):137-139.
[9] 袁曉潔,于士濤,李志梁.基于Mediation的異構(gòu)數(shù)據(jù)集成系統(tǒng)HDIS設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2006,42(1):162-165.
[10]朱 靜,陳忠良.異構(gòu)數(shù)據(jù)源集成的實(shí)現(xiàn)[J].內(nèi)蒙古大學(xué)學(xué)報(bào):自然科學(xué)版,2005,36(4):458-461.
[11]張 麗,田銀磊.基于PDA的小麥測土配方施肥信息移動(dòng)查詢系統(tǒng)[J].河南農(nóng)業(yè)大學(xué)學(xué)報(bào),2010,44(3):340-342.
[12]溫立東,黃上騰.基于DTD的XML文檔到關(guān)系模式的映射規(guī)則研究[J].計(jì)算機(jī)工程與應(yīng)用,2006,42(24):164-166
[13]張先利,陳玉蘭,于建華.基于圖的XML DTD到關(guān)系模式的映射[J].計(jì)算機(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.