DB2 9 XML 性能優(yōu)勢(shì)
當(dāng) IBM 在 DB2 9 中引入 pureXML 之后兩年,這個(gè)問(wèn)題可以說(shuō)已經(jīng)徹底解決了。當(dāng) IBM 在 2006 年推出 DB2 9 數(shù)據(jù)庫(kù)時(shí),它的 pureXML 技術(shù)就引起了廣泛的關(guān)注。但是,人們并沒(méi)有馬上接受 “關(guān)系/XML” 混合型 DBMS 的思想。
這種思想的好處很明顯:通過(guò)把 XML 引擎和現(xiàn)成的 RDBMS 集成在一起,XML 數(shù)據(jù)可以輕松地合并到數(shù)據(jù)操作中,還可以對(duì) XML 數(shù)據(jù)應(yīng)用關(guān)系系統(tǒng)的許多數(shù)據(jù)管理特性,比如安全性和存檔。但是,這種做法的性能怎么樣呢?考慮到對(duì)象-關(guān)系數(shù)據(jù)庫(kù)過(guò)去的性能,人們對(duì)混合型系統(tǒng)的性能抱著懷疑態(tài)度。
兩年之后,pureXML 的性能影響不僅停留在理論上,而且已經(jīng)在真實(shí)環(huán)境中表現(xiàn)出來(lái)了。
希望通過(guò) XML 獲得什么?
在開(kāi)發(fā) pureXML 和 DB2 9 的 5 年中,IBM 深入研究了 XML 的性質(zhì)(XML 具有強(qiáng)大的靈活性,同時(shí)也非常繁瑣),發(fā)現(xiàn)了需要改進(jìn)的五個(gè)方面。IBM 主要關(guān)注兩個(gè)性能因素:存儲(chǔ)模型和查詢優(yōu)化。
XML 數(shù)據(jù)由一個(gè)層次化的樹(shù)結(jié)構(gòu)表示,通常包含多個(gè)層和大量節(jié)點(diǎn),因此這種格式很難優(yōu)化和編制索引。它還涉及某種形式的壓縮。因此,XML 查詢可能變得非常復(fù)雜。
存儲(chǔ) XML 數(shù)據(jù)的一種常用方法是字符大對(duì)象(CLOB)。與二進(jìn)制大對(duì)象(BLOB)一樣,CLOB 通常作為一個(gè)整體存儲(chǔ),很少為編制索引或查詢優(yōu)化進(jìn)行預(yù)處理。另一種方法是把 XML 數(shù)據(jù) “分解” 為關(guān)系數(shù)據(jù)的列;這種方法需要復(fù)雜的解析技術(shù),通常使用大量存儲(chǔ)空間。
DB2 pureXML 把 XML 數(shù)據(jù)存儲(chǔ)為經(jīng)過(guò)預(yù)先解析的層次化格式,這種格式反映數(shù)據(jù)的底層嵌套結(jié)構(gòu)。這種格式支持編制復(fù)雜的索引,并允許對(duì)物理存儲(chǔ)中的數(shù)據(jù)進(jìn)行壓縮。在執(zhí)行查詢時(shí),pureXML 把 XQuery 和 SQL/XML 查詢轉(zhuǎn)換為一種在多方面(跨語(yǔ)言、查詢重寫(xiě)、優(yōu)化索引和成本)經(jīng)過(guò)優(yōu)化的統(tǒng)一格式。XML 壓縮、查詢優(yōu)化以及關(guān)系和 XML 處理的混合(在 DB2 9.5 中還改進(jìn)了插入和更新性能)改進(jìn)了數(shù)據(jù)庫(kù)的處理DB2 9 XML性能;IBM 的測(cè)試和真實(shí)項(xiàng)目表明,與 DB2 V8 或其他 DBMS 中的相似操作相比,速度提高了 10 到 20 倍(參見(jiàn)相關(guān)內(nèi)容中 “成功帶來(lái)的喜悅”部分)。
更適合 XML 的模型
pureXML 的性能特點(diǎn)還包括其適應(yīng)性。要點(diǎn):XML 數(shù)據(jù)并不會(huì)取代關(guān)系數(shù)據(jù)。對(duì)于標(biāo)準(zhǔn)的金融業(yè)務(wù),XML 數(shù)據(jù)很難超越關(guān)系數(shù)據(jù)庫(kù),但是 RDBMS 很難處理出版物,比如整本書(shū)、雜志或期刊。如果應(yīng)用程序中的數(shù)據(jù)具有復(fù)雜的層次結(jié)構(gòu),或者包含大量非結(jié)構(gòu)化信息,RDBMS 也很難處理。例如,生命科學(xué)組織正在把許多常用數(shù)據(jù)由各種專有格式轉(zhuǎn)換為 XML。在某些情況下,對(duì)于難以在傳統(tǒng) RDBMS 中存儲(chǔ)和提取的數(shù)據(jù),XML 格式提供了優(yōu)化的數(shù)據(jù)訪問(wèn)路徑,這使 XML 數(shù)據(jù)庫(kù)在根本上具有顯著的性能優(yōu)勢(shì)。
XML DBMS 還有一個(gè)優(yōu)點(diǎn):它們能夠通過(guò) Web 服務(wù)或其他方法與 XML 應(yīng)用程序直接通信。因?yàn)?XML 在因特網(wǎng)上使用廣泛,應(yīng)用程序之間的通信也大量采用 XML 格式,所以讓整個(gè)通信鏈(應(yīng)用程序 - 消息 - 數(shù)據(jù)庫(kù))都采用 XML 格式是很有意義的。
IBM 的 pureXML 在技術(shù)方面有許多重要的創(chuàng)新(68 項(xiàng)新專利!),但是 IBM 關(guān)系/XML 模型真正的價(jià)值在于它在主流企業(yè)應(yīng)用程序中表現(xiàn)出的性能。
XML 在真實(shí)環(huán)境中的性能
北京西城區(qū)衛(wèi)生局為大約一百萬(wàn)人提供服務(wù),它把客戶清單存儲(chǔ)在一個(gè)大型數(shù)據(jù)庫(kù)中,其中包含敏感數(shù)據(jù)。衛(wèi)生系統(tǒng)需要把完整的文檔(比如醫(yī)生的報(bào)告)與來(lái)自許多數(shù)據(jù)源的數(shù)據(jù)組合在一起,因此非常需要利用 XML 的靈活性。衛(wèi)生局的 CIO Zhu Shu Hong 指出,“帶有 pureXML 特性的 DB2 9 不但適合核心數(shù)據(jù)庫(kù)存儲(chǔ)模型,也適合原始數(shù)據(jù)收集形式和數(shù)據(jù)交換”。Zhu 先生認(rèn)為,XML 能夠處理復(fù)雜的個(gè)人健康記錄,這使 XML 非常適合他們;XML 提供了靈活的查詢功能,能夠?qū)?shí)時(shí)隨需信息進(jìn)行快速響應(yīng),這對(duì)于某些醫(yī)療活動(dòng)非常重要。尤其是西城區(qū)衛(wèi)生局把它的大型 DB2 9 數(shù)據(jù)庫(kù)與 IBM 面向服務(wù)體系結(jié)構(gòu)(SOA)結(jié)合在一起,為向應(yīng)用程序提供數(shù)據(jù)的 Web 服務(wù)實(shí)現(xiàn)了一個(gè) “服務(wù)總線”。
German Research Center for Competitive Sports(Das Deutsche Forschungszentrum für Leistungssport)開(kāi)發(fā)了一個(gè)稱為 eActe 的應(yīng)用程序,這個(gè)程序用來(lái)收集和分析關(guān)于運(yùn)動(dòng)科學(xué)的基本信息和應(yīng)用研究信息。數(shù)據(jù)收集是這個(gè)程序中最困難的方面。這個(gè)數(shù)據(jù)庫(kù)包含的內(nèi)容非常廣泛,包括監(jiān)視設(shè)備生成的大量數(shù)據(jù)、掃描圖像和大量手工輸入的數(shù)據(jù)。例如,有以 9 種形式收集的 3,000 個(gè)參數(shù),共有 63 頁(yè)。數(shù)據(jù)是通過(guò)一個(gè)專用的在線門(mén)戶或客戶機(jī)應(yīng)用程序使用 Lotus Forms 軟件捕捉的,然后通過(guò)一個(gè) IBM WebSphere Application Server 傳遞,并以關(guān)系格式和 XML 格式存儲(chǔ)在 IBM DB2 9 中。對(duì)于位于 Koln 的研究中心,pureXML 能夠快速捕捉復(fù)雜的運(yùn)動(dòng)測(cè)試結(jié)果,并以 XML 格式提交數(shù)據(jù),其他程序很容易用這種格式進(jìn)行分析。
另一個(gè)德國(guó)組織 Douglas Holding AG 使用 IBM DB2 9 和 pureXML 從 1,600 家零售商店和 800 家香料店收集數(shù)據(jù),執(zhí)行一項(xiàng)非常傳統(tǒng)的零售工作:每天整理每家商店的現(xiàn)金收據(jù)并為公司的數(shù)據(jù)倉(cāng)庫(kù)準(zhǔn)備結(jié)果。在這種情況下,pureXML 用來(lái)壓縮數(shù)據(jù)和決定數(shù)據(jù)結(jié)構(gòu),Douglas 發(fā)現(xiàn)與以前的系統(tǒng)相比這個(gè)系統(tǒng)更容易使用(參見(jiàn)相關(guān)內(nèi)容中“成功帶來(lái)的喜悅”部分)。
這些例子都表明了一點(diǎn):pureXML 數(shù)據(jù)存儲(chǔ)的效率、響應(yīng)速度和 XML 數(shù)據(jù)的查詢靈活性都很好。
***實(shí)踐
IBM 為提高 XML 性能做了大量工作,尤其是應(yīng)對(duì)數(shù)據(jù)量和查詢復(fù)雜性的增加;但是,與所有數(shù)據(jù)管理系統(tǒng)一樣,pureXML 也需要良好的設(shè)置和一些調(diào)整。關(guān)于 XML 性能調(diào)優(yōu)的一些建議參見(jiàn)相關(guān)內(nèi)容中“獲得出色的 XML 查詢DB2 9 XML性能”部分。
XML 數(shù)據(jù)庫(kù)市場(chǎng)在最近 10 年競(jìng)爭(zhēng)越來(lái)越激烈了,但是 IBM 的混合方式非常先進(jìn),這使 XML 成為日常數(shù)據(jù)管理的固有組成部分。為了實(shí)現(xiàn)這個(gè)目標(biāo),IBM 增強(qiáng)了 pureXML 的功能、可靠性和性能。IBM 首先做了一些研究,然后在 DB2 9.5 中實(shí)現(xiàn)了許多性能改進(jìn)。
盡管 XML 已經(jīng)成為因特網(wǎng)上主要的數(shù)據(jù)語(yǔ)言,它是實(shí)際上的數(shù)據(jù)交換標(biāo)準(zhǔn),而且?guī)缀跻呀?jīng)成為 Web 服務(wù)和 SOA 的必有部分,但是一些 DBA(甚至整個(gè) IT 部門(mén))仍然對(duì)是否接受它猶豫不決。DB2 9 和 pureXML 把關(guān)系數(shù)據(jù)庫(kù)的可靠性、可伸縮性和可管理性引入了 XML 領(lǐng)域,同時(shí)避免了其他老式存儲(chǔ)方式的缺點(diǎn)。因此,那些對(duì) XML 的性能持懷疑態(tài)度的 IT 人員應(yīng)該轉(zhuǎn)變思想了。
相關(guān)內(nèi)容
獲得出色的 XML 查詢性能
XML 應(yīng)用程序通常需要很高的性能。實(shí)現(xiàn)良好性能的主要責(zé)任由應(yīng)用程序設(shè)計(jì)人員和 DBA 承擔(dān)。在 Matthias Nicola 的 developerWorks 文章 “DB2 9 中 15 個(gè) pureXML 性能***實(shí)踐” 中,他解釋了如何通過(guò) DB2 9 的 pureXML 技術(shù)產(chǎn)生***的性能。下面總結(jié)一下他的前五個(gè)提示。
理智地選擇 XML 文檔的粒度。在設(shè)計(jì) XML 應(yīng)用程序和 XML 文檔結(jié)構(gòu)時(shí),需要決定在單一 XML 文檔中包含哪些業(yè)務(wù)數(shù)據(jù)。在細(xì)粒度、中等粒度和粗粒度之間進(jìn)行選擇時(shí),需要考慮應(yīng)用程序主要以哪種粒度訪問(wèn)和處理數(shù)據(jù)。如果不太確定,那么應(yīng)該傾向于選用較細(xì)的粒度和較小的 XML 文檔。
使用 DMS 和更大的頁(yè)取得更好的 XML 性能。數(shù)據(jù)庫(kù)管理的表空間(DMS)可以提供比操作系統(tǒng)管理的表空間(SMS)更高的性能。在 DB2 9 中,在默認(rèn)情況下新創(chuàng)建的表空間是 DMS。DMS 表空間與自動(dòng)存儲(chǔ)一起使用可以使 DMS 容器隨需增長(zhǎng),而不需要人為干預(yù)。經(jīng)驗(yàn)法則是,為 XML 數(shù)據(jù)選擇一個(gè)不小于平均預(yù)期文檔大小的兩倍而且不超過(guò)***值 32 KB 的頁(yè)大小。如果為關(guān)系數(shù)據(jù)和 XML 數(shù)據(jù)(或者為數(shù)據(jù)和索引)使用單一的頁(yè)大小,那么 16KB 或 8KB 的頁(yè)對(duì)于這兩種數(shù)據(jù)類型而言可能都是較好的選擇。
使用 XML 存儲(chǔ)選項(xiàng):內(nèi)聯(lián)、壓縮或單獨(dú)的表空間。如果通過(guò)性能分析發(fā)現(xiàn)對(duì)于 XML 數(shù)據(jù)需要更大的頁(yè)大小,而對(duì)于關(guān)系數(shù)據(jù)或索引則需要更小的頁(yè)大小,那么可以使用單獨(dú)的表空間。當(dāng)定義一個(gè)表時(shí),可以將 “長(zhǎng)” 數(shù)據(jù)(大對(duì)象和 XML 數(shù)據(jù))轉(zhuǎn)到一個(gè)具有不同頁(yè)大小的單獨(dú)的表空間中。但是應(yīng)按常理來(lái)考慮。更少的緩沖區(qū)池和表空間以及更少的頁(yè)大小種類,可以產(chǎn)生更簡(jiǎn)單的物理數(shù)據(jù)庫(kù)設(shè)計(jì),從而更容易管理、維護(hù)和調(diào)優(yōu)。因此,要避免引入多種頁(yè)大小,除非您知道這樣做確實(shí)可以帶來(lái)性能好處。應(yīng)該使用內(nèi)聯(lián)和壓縮功能來(lái)減少存儲(chǔ)開(kāi)銷并提高 I/O 性能。
配置 DB2 以便快速地成塊插入 XML 數(shù)據(jù)。傳統(tǒng)的插入和日志記錄性能調(diào)優(yōu)對(duì)于 XML 插入和導(dǎo)入仍然適用。在 DB2 9.5 中,使用裝載代替導(dǎo)入。如果表上需要多個(gè) XML 索引,就應(yīng)該在任何成塊插入之前定義它們。這樣的話,每個(gè) XML 文檔只被處理一次,便可以為所有 XML 索引生成索引條目。如果在填充表之后發(fā)出多條 create index 語(yǔ)句,那么 XML 列中的所有文檔將被訪問(wèn)多次。
使用新的快照監(jiān)視器元素檢查 XML 性能。DB2 9 為 XML 數(shù)據(jù)提供了新的緩沖區(qū)池快照監(jiān)視器元素,它們與用于關(guān)系數(shù)據(jù)和索引的現(xiàn)有計(jì)數(shù)器相對(duì)應(yīng)。由于關(guān)系數(shù)據(jù)和索引存儲(chǔ)在一個(gè)表空間內(nèi)不同的存儲(chǔ)對(duì)象中,因此它們具有不同的讀和寫(xiě)計(jì)數(shù)器。DB2 9 中的 pureXML 存儲(chǔ)為 XML 數(shù)據(jù)引入了一種新的存儲(chǔ)對(duì)象(稱為 XDA),它也有自己的緩沖區(qū)池計(jì)數(shù)器。
在研究了 Nicola 的性能提示之后,一定要閱讀他關(guān)于通過(guò)索引改進(jìn) XML 查詢性能的文章。
成功帶來(lái)的喜悅
DB2 9 pureXML 使香料店和零售公司 Douglas Holding 能夠更快地進(jìn)行銷售數(shù)據(jù)整理和聚合。
Douglas Holding AG 公司在歐洲和美國(guó)擁有超過(guò) 1,800 家零售商店。在 2005 年,它啟動(dòng)了一個(gè)稱為 Operational Data Stage 的項(xiàng)目,其目的是解決現(xiàn)金收據(jù)整理和銷售信息聚合的主要問(wèn)題。使用 XML 格式獲得數(shù)據(jù)是一個(gè)重要的基礎(chǔ)步驟。“靈活性是我們選用 XML 的主要原因,” Andreas Birkendorf 博士(處理公司 IT 需求的 Douglas Holding 分支機(jī)構(gòu) Douglas Informatik & Service 的項(xiàng)目主管)說(shuō),“因?yàn)閿?shù)據(jù)源的差異非常大,而且它們的格式還可能會(huì)變化,所以我們需要一種非常靈活的接口。”
這個(gè)項(xiàng)目在開(kāi)始時(shí)使用 IBM DB2 Version 8 XML Extender,這是有效的,但是過(guò)程很復(fù)雜,難以使用。2007 年,IBM DB2 9 pureXML 的出現(xiàn)改變了這種狀況。DB2 9 更容易使用,尤其是在 XML 和關(guān)系結(jié)構(gòu)之間進(jìn)行映射方面。與使用 DB2 V8 XML Extender 時(shí)相比,性能提高了 20 倍以上。這大大減少了處理時(shí)間;盡管 Birkendorf 的團(tuán)隊(duì)一度擔(dān)心如果 Douglas 決定增加數(shù)百家商店,他們就會(huì)無(wú)法承受,而現(xiàn)在 Birkendorf 確信 “現(xiàn)在我們知道我們可以應(yīng)付。”
據(jù) Birkendorf 所說(shuō),一部分DB2 9 XML性能改進(jìn)并非來(lái)自物理處理速度的提高,而是由于不再需要完成某些工作。“如果格式發(fā)生細(xì)微的變化,pureXML 使我們可以更輕松地應(yīng)對(duì)。實(shí)際上,有時(shí)候我們甚至不需要做手工修改;系統(tǒng)會(huì)處理它。”
Douglas Holding 很早就利用 pureXML 實(shí)現(xiàn)了 XML 模型系統(tǒng),但是這個(gè)過(guò)程并非一帆風(fēng)順。“具有關(guān)系數(shù)據(jù)庫(kù)背景的人員可能需要調(diào)整其思維模式,” Birkendorf 說(shuō),“我們?cè)缭?pureXML 出現(xiàn)之前就意識(shí)到了 XML 的價(jià)值;我們知道它正是我們所需要的。”
【編輯推薦】
- DB2數(shù)據(jù)庫(kù)優(yōu)化的6種技巧
- DB2數(shù)據(jù)庫(kù)開(kāi)發(fā)常見(jiàn)問(wèn)題解答
- DB2數(shù)據(jù)庫(kù)的安裝目錄結(jié)構(gòu)介紹
- shell抽取db2數(shù)據(jù)庫(kù)數(shù)據(jù)的方法示例
- DB2數(shù)據(jù)庫(kù)的連接方法簡(jiǎn)介