程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2 pureXML應對新一代數據庫技術挑戰

DB2 pureXML應對新一代數據庫技術挑戰

編輯:DB2教程

數據庫技術發展的歷程

  許多年以來在數據庫技術領域很少有重大的技術創新能夠引起人們對整個數據庫發展歷程的回顧與反思。2006年DB2 9中推出的pureXML技術對過去數十年來關系型數據庫的最基本的數據組織方式進行了重大的創新,第一次讓我們對數據庫的歷史以及過去支撐其發展壯大的理論基礎和外部挑戰從新的角度進行審視。

  今天我們很少去回顧數據庫的歷史,對於絕大多數IT技術人員,數據庫等同於關系型數據庫,數據則和表緊密聯系。E-R模型幾乎是我們描述世界的唯一方式,SQL語言是數據庫信息訪問處理的唯一手段。關系型數據庫已經成為了一種宗教式的信仰,數據相關的所有理論問題似乎都已經解決。

  然而歷史的發展總是在我們不經意間產生轉折,所有重大技術的產生及發展都有其生存的土壤。40年前數據庫的誕生並不是關系型數據庫,第一代的數據庫第一次實現了數據管理與應用邏輯的分離,采用層次結構來描述數據,是層次型數據庫(IMS)。第二代數據庫奠基於上世紀70年代E.F Codd博士提出的關系型理論以及SQL語言的發明。實現了數據建模和數據操作處理的標准化,關系型數據庫在其後的20多年的時間取得了長足的發展,得到了廣泛的應用。技術的演進主要集中在性能、擴展性和安全性等方面的提升,其基本的理論框架和技術理念並沒有大的變化。

  與之相反,在過去的20多年時間裡,IT產業發生了重大的變化和一系列技術及理念的創新。數據庫所生存的外部土壤隨著Internet以及在網絡環境下IT系統互連互通相互協作的趨勢,對信息管理技術提出了新的挑戰。概括而言,有以下難以回避的重要問題:

  多樣化的世界-信息的復雜性

  今天信息的復雜性與關系型數據庫理論產生的時代已不可同日而語,信息的結構日益復雜,隨著個性化服務等需求增長,信息的多樣性和差異性都大大增加了。而關系型理論在管理信息復雜性方面的不足日益明顯。E-R模型本質上是一個二維的模型,通過一系列的二維關系的組合來描述復雜實體對象,每個表所代表的所有實體在建模設計時沒有差異性,即使只有一個實體所擁有的屬性,也必須為其建立一個字段。因而在很多系統中,我們經常可以看到一張表有數百個字段,而對於每條記錄,大多數字段都是空的。如果這種個體間的差異性不是僅僅表現在屬性上,而且涉及到結構和關系,則需要為有差異的實體建立不同的表和對應關系。因而今天的許多業務系統往往需要幾千張表,甚至數萬張表。數據庫的結構變十分復雜,數據庫中的信息變得難以理解。

  多種信息應用方式-信息的可理解性

  從某種意義上而言,今天業務系統數據庫的信息是業務系統運行的副產物。數據庫為支撐特定業務應用的運行而設計,數據庫中的數據也只被單一系統使用,所以很少考慮這些信息是否易於理解。然而,今天越來越多的系統需要相互協作、共享信息。信息的可讀性,能否易於理解變得日益重要。關系型數據庫在此方面存在較大不足,表中的數據不能自我描述,表於表之間的關系在數據中不能直接清晰地體現。從而使得很多系統即使把表結構開放,其他應用依然難以理解數據的關系和含義.

  需求及業務的變化-信息的靈活性

  隨著IT系統進入社會生活的各個方面,信息不僅日益復雜,而且其需求內容和結構隨著時間的推移也不斷地產生變化.現實世界要求信息技術具有越來越高的靈活性和適應性.關系型數據理論所采用的是一種固定的建模方式,任何關系和屬性一旦定義,就是國定的,難以隨著需求的變化進行靈活的調整.

  
 數據模型

  XML作為一種數據格式在上世紀90年代中期出現,一開始其主要的目的應用於系統間數據的交換.為便於數據交換,其設計包含了幾個主要的特點.首先是采用自描述的標簽式數據描述方式,數據本身描述自己的含義,從而使數據的可讀性大大提高,十分易於人或程序理解.另外XML采用層次型(樹型)的方式組織數據,通過層次關系體現出數據與數據之間的關系.層次模型能夠比較清晰地描述復雜對象,另外十分靈活易於擴展.經過近10年的發展,XML已經成為數據交換的事實標准,國際上形成了很多行業性的XML技術標准,對信息技術產生的很大的影響.

  雖然XML設計之初主要應用於數據交換,但這種新型的數據組織方式卻在信息管理領域應對信息的復雜性、可理解性和靈活性的挑戰開啟了新的道路,迎合了技術發展的方向和潮流。同時XML也模糊了傳統上結構化數據和非結構化數據的嚴格分界線,對20余年來關系型數據庫理論基礎產生沖擊。人們反思數據究竟應該是關系的還是層次化的,是單一的表格關系還是多樣化的對象?

  於此同時,在過去10余年中另外一個重要的技術也對IT產生了重要的影響,這就是面向對象的技術。 對象技術鼓勵設計者使用對象而不是表來思考數據,在面向對象的設計思想中,數據也是以對象的形式存在,層次結構是數據對象的最直接、最自然的體現。而關系型數據庫的理論與面向對象的思想並不匹配,E-R模型中沒有對象的概念,在關系型數據庫中實現對象的嵌套、對象的多樣性很不直觀,需要很大的代價。在關系理論中,數據應該被組織成規范的表——也就是數據應該按唯一的方式組織,使得程序員能夠消除冗余,確保數據變化的一致性。這種設計技術的引入確保了關系表中的數據是一組獨立的、通過鍵相關的數據。這種技術來自集合論的數學理論,但問題是集合論不能表達數據之間所有的關系和結構。

  以規范的方式存儲數據常常要求程序員在存入數據庫之前分解對象,並且重新組織數據,但要使用它是,在使用SQL查詢(多重連接)。就像在車庫中存儲車時,你把它的門、椅子、輪子等等分別卸下來存放。這不僅消耗資源,而且沒有任何意義。

  圖2

  今天在應用領域,軟件開發已經廣泛采用了面向對象的設計思想和技術。而面向對象的數據庫技術卻遲遲未被市場接受。對象數據庫出現時,關系型數據庫供應商已經積聚了巨大的動力,並占領了大量市場份額。在標准的SQL接口下,訪問關系型數據庫的面向對象程序很容易寫。相反,多數早期的對象數據完全不提供SQL接口,不適合任何查詢應用程序。

  XML技術的出現,以及相關國際標准的制定(如Xquery, sql/XML)為數據庫引入面向對象的技術提供了新的動力。現實外部世界的技術挑戰,XML、面向對象技術與標准的成熟為新一代數據庫的創新提供了條件。那麼未來會是怎樣呢?迎接新的技術變革我們准備好了嗎?

  圖3

  今天,關系數據庫推動各種規模的公司發展業務。盡管這些數據庫是受歡迎而且重要的,但從長遠來看,它們根本無法與用 XML 表示的半結構化(和分層)內容相比。我們無法忽略過去20年來業界在關系型數據庫上的巨大投入,企業在關系數據和關系數據庫管理系統 (RDBMS) 方面的投資高達萬億美元,因此簡單地將 RDBMS 替換成純 XML 存儲的做法並不可取。我們更無法回避的新技術的潮流和巨大價值。世界即可以是關系的也可以是層次的,兩種技術各自有其優勢和局限性,因而容納關系型和層次型兩類模型的混合數據庫就成為數據庫發展的必然選擇.

  圖4

 DB2 pureXML技術創新

 

  IBM 的新一代數據庫 DB2 9中第一次實現了關系型引擎與層次型引擎的結合,實現了混合數據庫。IBM將此技術稱為pureXML技術.

  關系型數據庫很早就已經開始考慮對XML的支持,但傳統的技術一般還是基於關系型數據庫的基本框架,用表之間的關系去模擬XML的層次結構.僅僅是對關系型數據的一些功能性增強,而非真正去適應XML所代表的層次型結構和面向對象的數據處理方法,因而難以發揮XML的靈活性、擴展性等方面的優勢,大大限制了XML技術在數據庫的應用.

  關系數據庫中的第一代 XML 支持是切分(或分解)文檔以適應關系表格或將文檔原封不動地存儲為字符或二進制大對象(CLOB 或 BLOB)。這兩個方法中的任一種都嘗試將 XML 模型強制轉換成關系模型。以大對象保存XML數據的方式使得數據庫無法理解XMl中的信息內容,每次對XML中任何信息的訪問都必須將整個文檔取出,然後再分解獲得相應的信息內容,效率和靈活性都存在極大的限制.

  如果采用將XML文檔中的數據項都拆分到很多個對應的關系型表中的方式,首先失去了XML靈活性的優勢.由於XML的數據項與關系型表中字段的對應是固定的,所以XML的擴展和變化必然要求數據庫中對應表的結構改變,另外數據對象拆分後,已經不再有物理上對象的概念,同樣在功能和性能上都有很大的局限性。

  圖5

  與過去關系型數據庫的XML增強功能不同,DB2 9中的pureXML技術第一次真正意義上提供了一種與XML層次型結構相匹配的層次型存儲方式和相對應的操作訪問方式.

  在pureXML中,XML 作為一種新的數據類型。幾乎每個 DB2 組件、工具和實用程序都已得到增強,以識別和處理這種新數據類型。新的存儲模式以解析後的注釋樹形式(類似於 XML 文檔對象模型 (DOM))保留 XML,它與關系數據存儲分開。

  DB2 的新 XML 關系存儲模型

  圖6

  在兩種數據存儲(關系和 XML)的頂部是一個混合型數據庫引擎。該引擎可以處理 XQuery、Xpath、SQL和 sql/XML。該引擎采用帶有 sql 和 XQuery 解析程序的雙語查詢編譯器。因此開發人員可以根據具體情況更適用的原則使用任何一種語言(或同時使用這兩種語言)。使用混合型 DB2 ,您可以根據信息管理的需要來靈活地選擇數據的存儲組織模式和訪問方法,實現二者之間靈活的轉換。

  在數據庫管理系統中存儲關系和 XML 數據可提供靈活性和一貫快速的性能,因為數據庫管理系統在每一個級別(從客戶端到引擎,再到磁盤)都了解和支持這兩種模式。XML 數據繼承了 DB2 為關系數據提供的相同的備份與恢復、優化、可伸縮性和高可用性。最終,統一的 XML/關系數據庫通過避免對分開存儲的 XML 數據和關系數據進行集成,簡化了業務過程。

  pureXML的優點

  關系數據庫中的第一代 XML 支持是切分(或分解)文檔以適應關系表格或將文檔原封不動地存儲為字符或二進制大對象(CLOB 或 BLOB)。這兩個方法中的任一種都嘗試將 XML 模型強制轉換成關系模型。然而,這兩種方法在功能和性能上都有很大的局限性。混合型模型將 XML 存儲在類似於 DOM 的模型中。XML 數據被格式化為緩沖數據頁,以便快速導航和執行查詢以及簡化索引編制。

  DB2 pureXML在以下領域具有顯著優勢:

  存儲:DB2 的pureXML 技術將以節點級(而非文檔級)粒度存儲 XML。在數據庫中,物理存儲層的主要存儲單元是節點。每一頁中都存在一個節點,而其它的節點則來自相同或不同的文檔。每個節點不僅連結其父節點,還連結其子節點。因此,浏覽到某個節點的父項、同級項或子項的效率都非常高,只要下一個引用的節點在同一頁,其遍歷速度將比指針的遍歷速度還要快。無需重寫整個文檔即可增加或減少節點,或者將節點重新部署到其它頁。

  索引機制:管理著數百萬的 XML 文檔的 XML 應用程序並不罕見;因此要提供高查詢性能就要為大量的 XML 數據編制索引。DB2 支持在 XML 列上建立路徑特定的索引,因此元素和屬性常用作謂詞且可以編制跨文檔連接的索引。

  新的 XML 值索引可有效評估XML 模式表達式,從而提高 XML 文檔的查詢性能。與傳統的關系索引相比較,在關系索引中,索引鍵由用戶指定一個或多個表格列組成,而 XML 值索引則使用特定的 XML 模式表達式(XPath 的子集,XPath 不包含謂詞等等)來編制路徑和 XML 文檔(存儲在一個 XML 列中)中的值的索引。如果值不是在文檔中指定的,則該索引還可以在插入的時通過模式來填充默認的屬性和元素值。創建索引時,您可以指定要編制索引的路徑和索引類型。可以編制與存儲在該列中的 XML 文檔中的路徑表達式以及路徑表達式集匹配的任何節點的索引,而且該索引可以直接指向存儲中的節點(它與其父節點和子節點連接以便於快速浏覽)。索引條目並不是提供訪問文檔開頭的索引,而是包含實際文檔節點的位置信息。因此,該索引可以快速直接訪問文檔中的節點,並避免文檔遍歷。

  查詢:XQuery,即查詢 XML 數據的一種新語言,用於處理不同的模式,包含諸如序列(而非 sql 中的集)、多嵌套序列和稀疏屬性。XQuery 還可以支持不同種類的模式以及動態的結構更改。

  IBM 實施不包含獨立的 XQuery 或 XPath 處理程序。基本的 XQuery 和 XPath 直接嵌入到查詢引擎中。該查詢編譯器自身是雙語的,帶有兩個可互操作的查詢語言解析程序 — 一個用於

adzoneid=892989" target="_blank">sql,另一個用於 XQuery — 以產生查詢圖表模型(用於處理關系和 XML 數據)的新變量。因為中間的查詢表達法是中性語言,XQuery、SQL 以及 XQuery 與 SQL的組合將編譯成同樣的中間表達法,經過同樣的重寫和轉化,以類似的方式優化並產生類似的可執行代碼。無論使用什麼語言來指定查詢設計,此過程都將產生最優的互操作查詢設計。

  因為這兩個解析程序可以相互操作,所以您可以在同一語句中混合使用 sql 和 XQuery,從而使搜索功能更強大:在 XML 文檔中進行查詢並從 sql 返回其片斷。

  合適的模型,合適的任務

  pureXML 數據存儲不是僅僅將 XML 提供給其客戶端 — 它在 整個數據引擎堆棧中都使用 XML 格式表示 XML數據。

  混合型系統並不要求所有的數據都表示成關系數據,也不要求所有數據都使用 XML 格式;相反,使用它您可以為適當的任務選擇適當的模型。

  

pureXML的技術應用及展望

 

  pureXML技術及混合型數據庫的出現,超越了關系型數據庫固有的局限性,為數據庫的應用及開發開辟了新的領域。其意義不僅僅是提供了一種存儲XML數據的更有效的方式,可用於廣泛使用XML數據的各類領域,同時由於pureXML所代表的層次型數據組織方式,使得我們有了兩種關系型和層次型兩種數據建模的方法,即使是對於傳統非XML的關系型數據,在某些情況下將傳統關系型的數據轉化為層次型存儲也將帶來巨大的業務價值。

  從對現有XML數據管理的應用看,pureXML技術的價值是非常明顯的。如在書籍出版領域,W3C已經制定了各類數據的規范,今天很多這個領域的數據就是以XML的形式存在。但是如何提供有效的存儲方式,以及准確高效的數據查詢方式卻始終是關系型數據庫的一個挑戰。以圖書為例,任何書籍的信息有部分結構化的成分,但是書籍內容的差異性太大,很難用一種統一的結構化的體系進行描述。另一方面,基於各類書籍文章的結構,提供精確地信息查詢和搜索又有重要的應用價值。傳統關系型數據庫很難對書籍XML數據建模,更難以提供准確的查詢和搜索。往往只能用全文檢索的模式提供一些簡單的功能。而采用pureXML技術,任何書籍XML信息可以直接存儲在數據庫中,無需復雜建模。由於XML的自描述能力,一旦數據以XML對象存儲,就可以提供精確地查詢和搜索。舉個簡單例子,對於一本300頁的書,全文檢索只能返回其中是否有你查詢的內容,無法准確定位在哪一章、哪一節、哪一頁,其實用性很弱。而通過pureXML的Xquery進行查詢,可以准確定位到最細的粒度,而且可對指定范圍進行搜索。

  在XML廣泛使用的信息交換領域,pureXML 能夠很大程度上地降低數據模型設計的復雜性。無需將XML每個數據項的信息都映射到關系型表的字段上,減少了很多不必要的加工處理過程。另外XML所具有的擴展性和靈活性的優勢可得到充分的發揮。數據層的存儲模式不再與數據交換本身的內容是緊密耦合的關系。基於pureXML可設計相對通用的數據交換的存儲模式,而且可以方便地適應數據標准的調整和變化。這一點在很多監管類報表信息收集(如XBRL)上有重要的應用價值。

  即使對於不涉及任何XML數據的應用,pureXML所代表的層次型數據結構和面向對象的設計方式,也可對關系型數據庫的設計方式提供重要的補充。比如對於復雜對象的結構的建模,層次型的模型比關系型有明顯的優勢。以電子病歷為例,下面為關系型建模的樣例:

  圖7

  如果采用層次型的數據存儲方式,則相對簡單、直接。

  圖8

  在關系型的模型中對象與對象之間的嵌套關系比較難於描述,不對數據內在的順序關系進行維護,只能通過增加附加的屬性通過數據值進行管理。實體之間的差異性需要通過不同的表,這樣對於同類信息,也可能要建立很多不同的表.

  圖9

 在同一個表中,如果每條記錄的屬性差異性很大,則需要通枚舉的方式將各種可能出現的屬性都建成表上的字段。如果采用pureXML技術則可大大方便對這類信息的管理.

  圖10

  以上僅是pureXML應用的簡單示例,隨著XML的標准在各個行業更為廣泛深入地應用,以及Web 2.0等新興技術領域的發展,我們相信這類技術將越來越多地應用到各類系統中.

  數據庫的歷史經歷了40年的歷程,每一種技術都是隨挑戰應運而生。層次型數據庫和關系型數據庫在此過程中都曾為其發展起到重要的作用,而技術的發展在一次次潮流的循環往復中得到升華。為適應今天及未來的業務挑戰,由層次模型與傳統的關系型模型結合的混合數據庫技術為數據庫的發展開辟了新的方向.IBM所推出的DB2 pureXML技術僅僅是新的變革的開始.正如關系型數據庫曾經為IT產業的發展做出了舉足輕重的貢獻,我們有理由對pureXML所代表的新一代混合數據庫技術充滿期待.

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved