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