《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 基于XML數(shù)據(jù)的存儲模型及優(yōu)化研究
基于XML數(shù)據(jù)的存儲模型及優(yōu)化研究
李永忠 章登義 譚曉華
武漢大學(xué)計算機(jī)學(xué)院(430079)
摘要: 針對XML數(shù)據(jù)的特點(diǎn),提出一種對象-關(guān)系模型及由XML Schema映射該模型的規(guī)則算法,,同時根據(jù)網(wǎng)絡(luò)數(shù)據(jù)特點(diǎn),,引入分片技術(shù)。
Abstract:
Key words :

摘   要: 針對XML數(shù)據(jù)的特點(diǎn),,提出一種對象-關(guān)系模型及由XML Schema映射該模型的規(guī)則算法,,同時根據(jù)網(wǎng)絡(luò)數(shù)據(jù)特點(diǎn),引入分片技術(shù),。
關(guān)鍵詞: XML技術(shù)  XML Schema語言  對象-關(guān)系模型  分片

   Internet數(shù)據(jù)本身具有的自描述性和動態(tài)可變性等一系列復(fù)雜特性,,使其結(jié)構(gòu)呈現(xiàn)半結(jié)構(gòu)化特點(diǎn),給網(wǎng)上數(shù)據(jù)的管理和查詢帶來困難,。解決此問題的關(guān)鍵是尋找一個半結(jié)構(gòu)化的數(shù)據(jù)模型,。事實上,日益普及的XML數(shù)據(jù)是一種自描述的半結(jié)構(gòu)化數(shù)據(jù),。從某種意義上說,,XML就是一種半結(jié)構(gòu)化的數(shù)據(jù)模型。它的出現(xiàn)推動了網(wǎng)絡(luò)在電子商務(wù),、電子數(shù)據(jù)交換和電子圖書館等多方面的應(yīng)用,。但對于如何有效地存儲管理和查詢這類數(shù)據(jù),目前還沒有統(tǒng)一的方法,。
  針對XML數(shù)據(jù)的特點(diǎn),,本文提出了一種對象-關(guān)系模型。其主要思想是將XML數(shù)據(jù)中具有明顯結(jié)構(gòu)特征的數(shù)據(jù)建立關(guān)系數(shù)據(jù)模型,將具有繼承,、不確定特征的數(shù)據(jù)建立面向?qū)ο?/a>數(shù)據(jù)模型,。這樣,既能保證元素的直觀性和完整性,,又能充分利用關(guān)系數(shù)據(jù)模型的優(yōu)勢提高對部分?jǐn)?shù)據(jù)的查詢效率,。同時根據(jù)網(wǎng)絡(luò)數(shù)據(jù)分布存儲的特點(diǎn),引入分片技術(shù),,以進(jìn)一步提高查詢效率,。特別是在面向?qū)ο髷?shù)據(jù)模型中則采用類垂直分片技術(shù),并對類垂直分片的概念以及類垂直分片的原則進(jìn)行了具體詳盡的描述,。
1  對象-關(guān)系模型的建立
1.1 XML Schema
  XML Schema是W3C較新推出的標(biāo)準(zhǔn),。它是用來對XML進(jìn)行文檔類型定義的語言,同時可用來規(guī)定XML文檔的數(shù)據(jù)類型及組織方式,。相對于DTD而言,XML Schema具有豐富的數(shù)據(jù)類型,,而且還可通過對數(shù)據(jù)類型進(jìn)行擴(kuò)展和限制定義新的數(shù)據(jù)類型,。XML Schema本身也采用XML格式編寫,從而方便了數(shù)據(jù)的建立和處理,。XML Schema克服了DTD的許多局限,,有望取代DTD成為定義XML數(shù)據(jù)類型的主要手段。文檔1是一個XML Schema實例,。
  

為保證數(shù)據(jù)由XML Schema向?qū)ο?關(guān)系模型映射的完整性和有效性,,需要了解XML Schema包含的信息。XML Schema主要提供下列幾方面的信息,。
 ?。?)元素的內(nèi)容信息。包括元素的名稱和類型,。元素主要包括以下幾類:不包含子元素和屬性的簡單元素,;通過元素引用方法聲明的元素;包含子元素和屬性的復(fù)雜元素,;類型為ANY的元素等,。
  (2)元素的數(shù)據(jù)類型信息,。包括XML Schema內(nèi)建的數(shù)據(jù)類型,;由限制及合并而派生的簡單數(shù)據(jù)類型;由已有數(shù)據(jù)類型聚集(aggregation),、擴(kuò)展(extension)派生的復(fù)雜數(shù)據(jù)類型,。
  (3)元素的屬性信息。包括直接定義類型的屬性,;通過引用聲明的屬性,;聲明為ANY內(nèi)容的屬性等。
 ?。?)元素的關(guān)系信息,。包括嵌套關(guān)系、引用關(guān)系,、順序關(guān)系和繼承關(guān)系等,。
  (5)在映射中要考慮的其他信息,。包括元素值,、屬性值限制(由fixed和default屬性指定);元素出現(xiàn)次數(shù)的限制(由minOccurs和maxOccurs屬性控制),;元素屬性出現(xiàn)限制(由use屬性指定,,其值可以是required、optional,、prohibited)以及元素組,、屬性組等。
  針對XML Schema的上述特點(diǎn),,本文提出了由XML Schema映射對象-關(guān)系模型的規(guī)則算法,。
1.2  映射規(guī)則
  規(guī)則1:創(chuàng)建關(guān)系RR映射元素之間的關(guān)系。結(jié)構(gòu)如下所示:
     

  按規(guī)則1,,為文檔1創(chuàng)建了圖1中的表element_relation,。
  需說明的是:關(guān)系RR的project_table域與復(fù)雜元素的element_type一一對應(yīng)。因此可通過這種對應(yīng)關(guān)系,,在已知element_type的情況下找到映射其結(jié)構(gòu)的關(guān)系,。
  規(guī)則2:為每個由聚集(aggregation)得到的不同類型的復(fù)雜元素EA創(chuàng)建一個關(guān)系RE,關(guān)系名存在關(guān)系RR的project_table域中,。
  規(guī)則3:對每個關(guān)系RE,,創(chuàng)建主鍵INSTANCE_ID域,標(biāo)識惟一元素實例e,;創(chuàng)建BIB_ID域,,指向e相鄰的下一個元素實例en,以映射元素實例之間的順序關(guān)系,。
  規(guī)則4:將元素EA的出現(xiàn)次數(shù)不大于一次的簡單子元素(maxOccurs=1)映射為關(guān)系RE的一個域,,類型為簡單元素的類型。將通過元素引用方法聲明的簡單子元素映射為關(guān)系RE的與被引用元素類型相同的域,。將類型為STRING,、BOOLEAN,、DECIMAL、FLOAT,、DATE等在
關(guān)系數(shù)據(jù)庫存在的類型或可轉(zhuǎn)化的類型(ID,、IDREF、ANYURI,、TOKEN等)的屬性直接映射為關(guān)系RE的相應(yīng)類型的域,。將引用聲明的屬性映射為關(guān)系RE的與被引用屬性類型相同的域。
  規(guī)則5:將元素EA的出現(xiàn)次數(shù)不確定或大于一的簡單子元素(包括引用聲明的簡單子元素),、類型為IDREFS,、ENTITY、ENTITYS的屬性映射為類CE的同一類型的變量,;聲明INSTANCE_ID和ELEMENT_TYPE變量,,元素EA的出現(xiàn)次數(shù)不確定或大于一次的復(fù)雜子元素(包括引用聲明的復(fù)雜子元素)的類型映射為類CE的變量,INSTANCE_ID映射為類CE的數(shù)組變量,變量名取元素名,。
規(guī)則6:在關(guān)系RE中創(chuàng)建OBJECT_ID域,,以存儲類CE的指針。
  按照規(guī)則2~6,,對文檔1中的memories元素創(chuàng)建表memories和類memory,;為memory元素創(chuàng)建memory表。
  規(guī)則7:由擴(kuò)展(extension)得到的復(fù)雜元素Eh(設(shè)父元素為EA),,按規(guī)則2、3,、4映射關(guān)系模型,,按規(guī)則5將類CE沒有的屬性映射為類CEh,并將CEh作為CE的一個子類,,再按規(guī)則6創(chuàng)建OBJECT_ID域,。
  規(guī)則8:通過元素引用方法聲明的復(fù)雜元素與被引用元素具有相同結(jié)構(gòu),且與被引用元素共用一個數(shù)據(jù)模型,。
  規(guī)則9:為每個元素(屬性)組創(chuàng)建一個類,。簡單類型的元素(屬性)映射為相應(yīng)類型的變量,變量名取元素(屬性)名,;聲明相應(yīng)類型的變量,,映射復(fù)雜類型元素的類型和元素實例的INSTANCE_ID;在包含該元素(屬性)組的關(guān)系中創(chuàng)建GROUP域,,存儲相應(yīng)元素(屬性)組類的指針,。
  按照規(guī)則9,可對文檔1中的memoryGroup元素組創(chuàng)建類memoryGroup,,并在memoryType表中創(chuàng)建“g_point"域(見圖1),。


  規(guī)則10:創(chuàng)建名稱為ANY的類,,以存儲ANY類型的元素和屬性。在包含ANY類型元素(屬性)的關(guān)系中創(chuàng)建ANY域,,存儲ANY類的指針,。ANY類包括以下變量:
  class any {
  element_type string /*復(fù)雜元素的類型*/
  instance_id integer /*該對象實例在相應(yīng)
  關(guān)系中的instance_id*/
  element_name string /*元素名*/
  instance_value string /*簡單類型的元素(屬性)值,均轉(zhuǎn)換為字符串類型*/
  }
  按規(guī)則10,,為文檔1中的ANY元素創(chuàng)建類“any”(見圖1),。
  規(guī)則11:對于XML Schema定義各種約束及派生的簡單數(shù)據(jù)類型,可通過關(guān)系數(shù)據(jù)模型的域約束來實現(xiàn),。
  圖1是按以上規(guī)則,,為文檔1創(chuàng)建的對象-關(guān)系模型。
2  分片和類垂直分片技術(shù)
  分片技術(shù)分為水平分片,、垂直分片和混合分片,,其在關(guān)系數(shù)據(jù)庫中運(yùn)用的理論和實踐已比較成熟,形成了相對一致的看法,。類垂直分片技術(shù)則是近幾年提出的新思想,,有關(guān)這方面的研究不多。文獻(xiàn)[2]對類垂直分片在提高查詢效率方面的作用進(jìn)行了評估和論證,,提出了影響類垂直分片的制約因素,,證明了類垂直分片的有效性。
2.1 類垂直分片的基本思想
  類垂直分片是依據(jù)類實例變量的相關(guān)程度和經(jīng)常一起訪問的頻率對類實例變量分組,、構(gòu)造類片段并分片存儲,,通過減少對無關(guān)實例變量的訪問來降低磁盤I/O,提高查詢效率,。類垂直分片技術(shù)尤其適用于數(shù)據(jù)量大,,且無需訪問整個類實例的情況。
2.2 類垂直分片的定義


  

2.3  類垂直分片的基本原則和方法
  由于面向?qū)ο髷?shù)據(jù)模型中的子類繼承,、類組裝繼承(class composition hierarchy)等復(fù)雜關(guān)系,,使得對類進(jìn)行垂直分片變得復(fù)雜。下面給出類垂直分片的基本原則和方法,。

  (1)將相關(guān)的及可能經(jīng)常一起訪問的實例變量歸入同一類片段,。
  (2)類與類之間存在高輸出(fan-out)的情況,對沿類組裝繼承路徑上的所有類進(jìn)行垂直分片,。
  (3)要根據(jù)源類的大小選擇垂直分片策略,。對于較小的源類不易做過多的分片,因為過多分片不僅不會提高反而會降低查詢效率,。但較大的源類對分片多少不是非常敏感,。
  (4)選擇垂直分片策略前,首先要分析投影率(projection ratio),。如投影率高則不易進(jìn)行分片,。
  (5)類垂直分片的方法是:將類C的每一個類片段描述為一個類,,而邏輯類C則描述為一個復(fù)合類,由所有類片段的指針構(gòu)成,。例如,,將圖1中的class memoryGroup垂直分片如下:
class memoryGroup:類片段1(mediaid,status),,類片段2(sub_date,,donor,subject),,類片段3(location),。分片后的類結(jié)構(gòu)如圖2所示。

3  討  論
  采用關(guān)系數(shù)據(jù)模型存儲XML數(shù)據(jù),,可利用關(guān)系數(shù)據(jù)庫現(xiàn)有的存儲管理,、并發(fā)控制、恢復(fù),、版本機(jī)制等技術(shù)有效地管理XML數(shù)據(jù),。但由于關(guān)系模型不支持復(fù)雜類型的屬性,一個簡單的查詢路徑有時要通過多重鏈接實現(xiàn),,從而影響了查詢的效率,。半結(jié)構(gòu)化數(shù)據(jù)的不確定性也是這種模型難以解決的問題。面向?qū)ο髷?shù)據(jù)模型雖接近半結(jié)構(gòu)化數(shù)據(jù)模型,,并能更好地處理嵌套的集合和順序,,但在數(shù)據(jù)加載時對未知的數(shù)據(jù)類型需要建立新的類對應(yīng),這樣就影響了加載效率,。當(dāng)元素類型改變時,,數(shù)據(jù)模式的變動代價也很高。而且對XML數(shù)據(jù)中明顯具有結(jié)構(gòu)化特性的數(shù)據(jù)采用面向?qū)ο竽P痛鎯?,其查詢效率遠(yuǎn)比不上關(guān)系數(shù)據(jù)模型,。目前采用的對象—關(guān)系模型大多是通過對關(guān)系模型的擴(kuò)展來實現(xiàn)的,。如文獻(xiàn)[3]就是通過對關(guān)系中增加嵌套屬性組的方法來實現(xiàn)多值屬性(元素)的存儲,,它綜合了上述二種方法的優(yōu)點(diǎn),但仍不能充分體現(xiàn)XML數(shù)據(jù)的靈活性和不確定性,。本文提出的對象—關(guān)系模型是將元素的關(guān)系信息和元素的實例信息分別存儲,,這可有效降低數(shù)據(jù)的維護(hù)代價。同時,,將部分元素和屬性采用關(guān)系模型存儲,,將具有繼承、不確定特征的數(shù)據(jù)建立面向?qū)ο髷?shù)據(jù)模型,,既能保證元素的直觀性和完整性,,又可提高部分?jǐn)?shù)據(jù)的查詢效率,。此模型還能對ANY類型的元素和屬性創(chuàng)建特定的類進(jìn)行維護(hù)。這些都體現(xiàn)了XML數(shù)據(jù)的特點(diǎn),。分片技術(shù)的運(yùn)用也對提高查詢效率有很大的作用,。
  本文討論了XML數(shù)據(jù)的物理存儲模型。對建立在該模型上的數(shù)據(jù)庫查詢及在XML Schema和對象-關(guān)系物理存儲模型之間引入適當(dāng)邏輯數(shù)據(jù)模型將是下一步研究的課題,。
參考文獻(xiàn)
1   蓋江南.Java,,XML和Web服務(wù)寶典.北京:電子工業(yè)出版社,2002
2   Fan W,,Libkin L.On XML Integrity constraints in the  presence of DTDs.JACM,,2002;49(3)
3   Florescu D,,Kossmann D.Storing and querying XML data using an RDBMS.IEEE Data Engineering Bulletin,,1999;22(3)
4   Aboulnaga A,,Naughton J,,Zhang C.Generating synthetic  complex-structured XML data.In Proceedings of the WebDB′ 01Workshop,2001
5   Khalifa S A,,Jagadish H V,,Koudas N et al.Structural  joins:A primitive for efficient XML query pattern matching.    In:Proceedings of the 2002 International Conference on  Data Engineering,2002
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。