日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
利用DB2pureXML管理XML數(shù)據(jù)實(shí)踐

XML 數(shù)據(jù)用于提高性能和存儲(chǔ)有效性的存儲(chǔ)選項(xiàng)

我們注重客戶提出的每個(gè)要求,我們充分考慮每一個(gè)細(xì)節(jié),我們積極的做好成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),我們努力開拓更好的視野,通過不懈的努力,成都創(chuàng)新互聯(lián)公司贏得了業(yè)內(nèi)的良好聲譽(yù),這一切,也不斷的激勵(lì)著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),微信小程序定制開發(fā),網(wǎng)站開發(fā),技術(shù)開發(fā)實(shí)力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫(kù)的技術(shù)開發(fā)工程師。

◆對(duì) DB2 DMS 表空間啟用自動(dòng)存儲(chǔ)。

◆為 XML 數(shù)據(jù)使用更大的頁(yè)大小,比如 16KB 或 32KB 。

◆如果性能分析需要,就為 XML 數(shù)據(jù)選擇一個(gè)不同的表空間頁(yè)大小。

◆很多 XML 文檔足夠小并且能和其它 non-XML 數(shù)據(jù)存在數(shù)據(jù)頁(yè)上,就為 XML 文檔使用內(nèi) 嵌存儲(chǔ)。否則文檔存放在表之外,類似于 LOBs,并且通過區(qū)域索引來訪問。

◆使用壓縮來減少 XML 文檔以 inline 方式存放時(shí)的空間大小。

在 DB2 數(shù)據(jù)庫(kù)中添加 XML 數(shù)據(jù)的技術(shù)

◆為了提高你在使用 insert、import 或 load 添加數(shù)據(jù)時(shí)的性能,

◆使用使用較大頁(yè)大小的 DMS 表空間,比如 16KB 或 32KB 。

◆提供足夠的緩沖池空間以支持 XML 區(qū)域索引和路徑索引的讀取。

◆如果你有多個(gè)用戶定義的 XML 索引,通常最好在添加數(shù)據(jù)之前定義它們。

◆如果有必要,把行抽取選中的 XML 元素值放入到和 XML 文檔相同的關(guān)系列中。關(guān)系列 中存放的數(shù)據(jù)允許簡(jiǎn)單、SQL-only 的形式來訪問重要的數(shù)據(jù)或經(jīng)常訪問數(shù)據(jù)條目、可以定義 主鍵、外鍵或其它約束、以及可以定義多列(組合鍵)關(guān)系索引。

◆如果更小的片段更適合數(shù)據(jù)訪問的粒度,就把大型 XML 文檔分割成更小的片段。

◆定義觸發(fā)器來對(duì)插入和更新 XML 數(shù)據(jù)進(jìn)行自動(dòng)驗(yàn)證

有效查詢并更新 XML 文檔的技術(shù):

◆使用 SQL/XML 函數(shù) XMLTABLE 或 XMLQUERY 來從 XML 文檔中抽取數(shù)據(jù)。

◆在SQLWHERE 子句中使用 XMLEXISTE 謂詞來指定對(duì) XML 數(shù)據(jù)的謂詞 ,通過檢查更少的行來提高查詢性能。

◆使用一個(gè)完全指定的 XML 路徑,而不要使用通配符 * 或 // 來定位到期望的 XML 元素 。這樣做可以提供更好的性能,因?yàn)?DB2 可以跳過 XML 文檔中不相關(guān)的部分直接找到期望的 XML 元素。

◆出于增加商業(yè)洞察力和最大化一個(gè)混合數(shù)據(jù)庫(kù)服務(wù)器的價(jià)值的需要,你在查詢中需要要 對(duì) XML 和關(guān)系數(shù)據(jù)進(jìn)行連接。

◆當(dāng)在一個(gè) XML 文檔中更新多個(gè)元素時(shí),把更新合并到一個(gè)轉(zhuǎn)換描述中以獲得最佳的更新 性能

◆在查詢中聲明名稱空間,更新 XML 索引以匹配你的 XML 商業(yè)數(shù)據(jù)。這個(gè)讓你能從多個(gè) 或復(fù)雜的域中處理 XML 文檔。

為什么使用 XML

XML 提供了一個(gè)普通而具有彈性的方法來在不同的系統(tǒng)、應(yīng)用程序和組織之間交換數(shù)據(jù)。 使用 XML,數(shù)據(jù)是在一個(gè)可擴(kuò)展自描述格式下進(jìn)行維護(hù),以提供給所有涉及的商業(yè)需求。 XML 文檔是用標(biāo)簽來描述它們包含的數(shù)據(jù)值,并且通過嵌套標(biāo)簽來表示數(shù)據(jù)條目間的層次關(guān)系。 XML 可以描述高度結(jié)構(gòu)化的數(shù)據(jù)并通過 XML 模式來保持結(jié)構(gòu),但是它也能描述半結(jié)構(gòu)化的數(shù) 據(jù),這些數(shù)據(jù)普遍存在于內(nèi)容為導(dǎo)向的應(yīng)用程序。

以服務(wù)為導(dǎo)向的架構(gòu)(SOA)、企業(yè)應(yīng)用程序整合(EAI)、企業(yè)信息整合(EII)、Web 服 務(wù)、企業(yè)消息總線和很多依賴于 XML 作為底層數(shù)據(jù)交換技術(shù)的標(biāo)準(zhǔn)化成就。

就像行業(yè)這樣的機(jī)構(gòu)使用標(biāo)準(zhǔn)化的 XML 模式來促進(jìn)信息交換并且發(fā)展那些模式來滿足變化 中的商業(yè)需求。這些努力包括在保險(xiǎn)行業(yè)中的 ACORD、金融行業(yè)中的 FpML? 和 FIXML、供應(yīng) 鏈管理中的 違規(guī)廣告、零售商業(yè)中的 ARTS、衛(wèi)生保健中的 HL7、商業(yè)報(bào)告里的 XBRL 和在印 刷行業(yè)中用于授權(quán)、管理和發(fā)布文檔的 DITA 以及整個(gè)網(wǎng)絡(luò)。

這類具體行業(yè)創(chuàng)新(比如管理需求)在驅(qū)動(dòng) XML 發(fā)展。越來越多的企業(yè)事務(wù)通過基于網(wǎng)絡(luò) 接口和電子表格來操作。政府代理和商業(yè)企業(yè)對(duì)保留原始訂單、請(qǐng)求、申明、交易或簽名承擔(dān) 更多的責(zé)任。 XML 提供了一個(gè)簡(jiǎn)單的方法來抓取并維護(hù)和那些電子交易相關(guān)的數(shù)據(jù)。事實(shí)上 ,XML 文檔常常在基于消息的事務(wù)系統(tǒng)中表現(xiàn)事務(wù)記錄。

XML 和關(guān)系數(shù)據(jù)的優(yōu)缺點(diǎn)

作為一個(gè)自描述數(shù)據(jù)格式,XML 允許不同的數(shù)據(jù)(有模式或沒有)在不犧牲搜索或聚合能 力的情況下被同時(shí)存在一個(gè)文檔中或某一行中。應(yīng)用程序可以在對(duì)底層數(shù)據(jù)庫(kù)模式不進(jìn)行任何 改變的情況下發(fā)展他們自己的 XML 模式。然而,對(duì)于 XML 的這種擴(kuò)展意味著比起存儲(chǔ)在關(guān)系 表中的數(shù)據(jù)在檢查和解釋 XML 數(shù)據(jù)時(shí)會(huì)花費(fèi)更多的 CPU 和 I/O 資源 – 這可能不切實(shí)際。

對(duì)更多的剛性模式定義,關(guān)系模式需要更少的解釋并允許更多的優(yōu)化數(shù)據(jù)操作。就像這樣 ,他可以提供非常高的性能,不過卻不能滿足應(yīng)用程序需要的模式彈性。關(guān)系型數(shù)據(jù)模型非常 適合有穩(wěn)定數(shù)據(jù)結(jié)構(gòu)和可預(yù)知訪問形式的應(yīng)用程序。 XML 更適合有復(fù)雜多變數(shù)據(jù)結(jié)構(gòu)以及混 有結(jié)構(gòu)化和非結(jié)構(gòu)化信息的應(yīng)用程序。

在某些情況下,XML 提供的性能好處超過了關(guān)系模型正好是因?yàn)樗膹椥?。關(guān)系型數(shù)據(jù)庫(kù) 經(jīng)常需要標(biāo)準(zhǔn)化來使商業(yè)數(shù)據(jù)適應(yīng)簡(jiǎn)單平坦的結(jié)構(gòu)。對(duì)復(fù)雜商業(yè)數(shù)據(jù)的標(biāo)準(zhǔn)化需要在數(shù)據(jù)存取 的時(shí)候進(jìn)行轉(zhuǎn)化,并經(jīng)常在關(guān)系型數(shù)據(jù)庫(kù)中導(dǎo)致多路的連接需求。 XML 可以在一個(gè)文檔中更 自然的表現(xiàn)復(fù)雜的商業(yè)對(duì)象以及對(duì)象間的所有關(guān)系。在一個(gè) XML 文檔中的層次本質(zhì)上就是預(yù) 先計(jì)算的相關(guān)數(shù)據(jù)條目之間的連接。

在選擇一個(gè)數(shù)據(jù)模式時(shí)的另外一個(gè)考慮是應(yīng)用程序使用數(shù)據(jù)。就算數(shù)據(jù)源自 XML,如果數(shù) 據(jù)后來的處理取決于存儲(chǔ)在表格中的數(shù)據(jù)—例如,在一個(gè)數(shù)據(jù)倉(cāng)庫(kù)中應(yīng)用關(guān)系行在線分析處理 (OLAP)的數(shù)據(jù)—那么把這些數(shù)據(jù)存入關(guān)系格式而非 XML 可能是正確的選擇。

關(guān)系數(shù)據(jù)模式問題的 XML 解決方案

為了最大的可能范圍,存儲(chǔ)數(shù)據(jù)的模型應(yīng)該和你數(shù)據(jù)的最高值和最關(guān)鍵的使用模式相匹配 。如果數(shù)據(jù)被模式化成為自然表格,比起 XML 這通常表現(xiàn)為關(guān)系型格式更好。然而,有些情 況下關(guān)系型模式不是最好的選擇而且有時(shí)用來存儲(chǔ)數(shù)據(jù)甚至是很差的選擇。下面是用 XML 表 現(xiàn)比用關(guān)系型格式更好一些情況。

當(dāng)模式不穩(wěn)定時(shí)

關(guān)系型數(shù)據(jù)的問題:如果數(shù)據(jù)模式經(jīng)常改變,那么在關(guān)系表結(jié)果中表現(xiàn)的數(shù)據(jù),更改關(guān)系 模式將產(chǎn)生成本和開銷。一些模式的表格更改在關(guān)系型數(shù)據(jù)庫(kù)中是無痛的,比如在表中增加一 個(gè)新列、把模式的其它表加入進(jìn)來,還有就是刪除一列或更改一列的類型。不過模式的其它表 要更改(比如把一個(gè)表正常化進(jìn)多個(gè)表中)會(huì)非常困難。首先要改變表然后應(yīng)用程序需要改變 訪問的 SQL 語(yǔ)句。

XML 數(shù)據(jù)解決方案:模式中易變的那一部分可以作為一個(gè)單獨(dú)的 XML 列存在。 XML 天然 的自描述和易擴(kuò)展功能可以無縫的處理模式變化和改進(jìn)。 XML 文檔格式中的改變是在不需要 在數(shù)據(jù)庫(kù)中更改表或者列并且通常不需要破壞現(xiàn)有 XML 查詢。

當(dāng)數(shù)據(jù)是自然的層次時(shí)

關(guān)系型數(shù)據(jù)的相關(guān)問題:天然分層或遞歸數(shù)據(jù)在關(guān)系模式中常常很難表現(xiàn)。例如包括原料 賬單、工程對(duì)象或生物學(xué)數(shù)據(jù)。一個(gè)原料清單可以存進(jìn)一個(gè)關(guān)系型數(shù)據(jù)庫(kù),不過可能需要遞歸 SQL 來把它部分或全部重新構(gòu)建。

XML 數(shù)據(jù)解決方案:因?yàn)?XML 是一個(gè)層次型數(shù)據(jù)庫(kù)模式,它可以非常自然的表現(xiàn)本身就是 層次型的商業(yè)數(shù)據(jù)。如果相同數(shù)據(jù)表現(xiàn)為表格形式需要,使用 XML 可以用簡(jiǎn)單、導(dǎo)行的數(shù)據(jù) 訪問來代替復(fù)雜的一系列操作。

當(dāng)數(shù)據(jù)表現(xiàn)商業(yè)對(duì)象時(shí)

關(guān)系型數(shù)據(jù)的問題:如果應(yīng)用程序數(shù)據(jù)要表現(xiàn)商業(yè)對(duì)象,比如保險(xiǎn)保單,它經(jīng)常從保留有 數(shù)據(jù)條目和一個(gè)詳細(xì)聲明的組合中得到好處,而不是把它們分散到一系列表中。這對(duì)一個(gè)保單 的那些本身沒有有效商業(yè)含義并且只能在有上下文的完整表單中被解釋的單獨(dú)的數(shù)據(jù)條目來說 尤其如此。通過數(shù)十個(gè)關(guān)系型表來正?;@個(gè)保單意味著應(yīng)用程序處理一個(gè)復(fù)雜的并且對(duì)于他 們的商業(yè)來說是不成體系的數(shù)據(jù)。這增加了負(fù)載和出錯(cuò)的幾率。

XML 數(shù)據(jù)的解決方案:XML 讓你可以表現(xiàn)非常復(fù)雜的商業(yè)對(duì)象比如緊密相關(guān)的文檔以及截 然不同的文檔同時(shí)還抓取所有組成商業(yè)對(duì)象的數(shù)據(jù)條目之間的關(guān)系。以一個(gè)在表中單獨(dú)一行里 的 XML 文檔來表現(xiàn)每個(gè)保單(商業(yè)對(duì)象)為應(yīng)用程序開發(fā)人員提供了非常直觀的存儲(chǔ)模型并 可以快速進(jìn)行應(yīng)用程序開發(fā)。

當(dāng)對(duì)象有稀疏的屬性時(shí)

關(guān)系型數(shù)據(jù)的問題:某些程序有非常多的可能屬性,它們大多數(shù)很稀疏,例如,可以適應(yīng) 非常少的對(duì)象。一類例子是一個(gè)產(chǎn)品編目,這里不同產(chǎn)品屬性數(shù)目非常多,包括:大小、顏色 、重量、長(zhǎng)度、高度、原料、款式、編織方法、伏特、決議、放水以及無止境的其它屬性。對(duì) 于任何產(chǎn)品,只和這些屬性的子集相關(guān)。一個(gè)可能的關(guān)系型方法是存儲(chǔ)這些數(shù)據(jù)時(shí)一個(gè)屬性一 列,這意味著表中包含 NULL 值得單元占非常大的比例。這是不期望的并且是低效率的。對(duì)這 些稀疏數(shù)據(jù)的另一個(gè)不同的關(guān)系型方法是一個(gè)有 3 列的表,對(duì)每個(gè)產(chǎn)品 ID 存儲(chǔ)了幾對(duì)名字 / 值。這意味著屬性的名字不是列名不過是在 VARCHAR 列中的值。這使得關(guān)系型數(shù)據(jù)不能精 確的估計(jì)可選約束和生成一個(gè)有效的查詢計(jì)劃。要定義并執(zhí)行一個(gè)約束同樣非常困難,比如對(duì) 一個(gè)特定屬性的唯一性約束。

XML 數(shù)據(jù)解決方案:XML 的美妙之處就是元素和屬性是可選的,例如,如果不需要應(yīng)用一 個(gè)特定的產(chǎn)品他們完全可以省略。無論是 NULL 值還是名稱以及值都不需要。 XML 模式可以 定義非常多的可選元素,卻對(duì)所有對(duì)象只使用它們中的一部分。在一個(gè)關(guān)系型表中每一行必須 有相同的列, XML 列中的 XML 文檔每一行可以有不同的元素。同樣,如果這個(gè)元素只有很小 的百分比,這個(gè)可選元素的 XML 索引可能非常小。這對(duì)每一行都有嚴(yán)格輸入的關(guān)系型索引的 一個(gè)很明顯的優(yōu)勢(shì)。

當(dāng)數(shù)據(jù)需要交換時(shí)

關(guān)系數(shù)據(jù)的問題:如果你從關(guān)系表中導(dǎo)出一批記錄并把它們發(fā)送到另外一個(gè)應(yīng)用程序或組 織中,接收者不能在沒有額外數(shù)據(jù)來描述這一列的情況下解釋數(shù)據(jù)。如果你的關(guān)系模式從你上 次發(fā)送數(shù)據(jù)開始已經(jīng)改變的情況下,尤其如此。

XML 數(shù)據(jù)解決方案:XML 是自描述數(shù)據(jù)。 XML 標(biāo)簽是描述它們嵌套值的元數(shù)據(jù)。

DB2 pureXML 超過其它存儲(chǔ)選項(xiàng)的優(yōu)勢(shì)

因?yàn)?XML 已經(jīng)日益變成企業(yè)運(yùn)營(yíng)的關(guān)鍵,XML 文檔是一種資產(chǎn)共享、保持、搜索、保護(hù)和 更新并保持完全的事務(wù)一致性?;谒挠猛荆琗ML 數(shù)據(jù)也可能需要與其它數(shù)據(jù)進(jìn)行轉(zhuǎn)換、審 計(jì)和整合。為了達(dá)到這些要求,把 XML 數(shù)據(jù)在 DB2 數(shù)據(jù)庫(kù)中存成自然層次格式,這有很多好 處,包括:

◆注意 XML 數(shù)據(jù)的內(nèi)部結(jié)構(gòu)。這對(duì)在數(shù)據(jù)庫(kù)中以字符或二進(jìn)制大對(duì)象(CLIBs 或 BLOBs) 的形式來存儲(chǔ) XML 文檔具有優(yōu)勢(shì)。準(zhǔn)確的說,你可以很容易使用 XQuery、XPath 和 SQL/XML 利用 XML 結(jié)構(gòu)來查詢 XML 數(shù)據(jù),而且你可以通過對(duì) XML 數(shù)據(jù)創(chuàng)建索引來提高查詢性能。另 外,你可以很容易的使用 SQL、XQuery 和 XSLT 來更新、轉(zhuǎn)換并發(fā)布 XML 數(shù)據(jù)。

◆維護(hù) XML 數(shù)據(jù)的層次和靈活的性質(zhì)。這在分解(切割)XML 文檔到關(guān)系型表中,在這里 管理員映射 XML 元素和屬性到關(guān)系列中。在分解后,XML 文檔之被存儲(chǔ)在這些表中并且沒有 最初的標(biāo)簽。分解常常需要大量的表,而且實(shí)際使用中非常復(fù)雜。查詢分解后的 XML 文檔可 能需要復(fù)雜的 SQL 連接,這很難開發(fā)和調(diào)試。改變 XML 模式常常會(huì)破壞對(duì)關(guān)系數(shù)據(jù)庫(kù)模式的 映射。這會(huì)使維護(hù)變得昂貴和耗時(shí),并違背了出于靈活性而選擇 XML 的初衷。這也是為什么 DB2 pureXML 允許你適應(yīng)一個(gè) XML 列來存儲(chǔ)和查詢基于不同 XML 模式的 XML 文檔,或一個(gè) XML 模式的不同版本。

◆在一個(gè)數(shù)據(jù)庫(kù)中整合 XML 文檔和關(guān)系數(shù)據(jù)。這比在兩個(gè)數(shù)據(jù)庫(kù)中分別存儲(chǔ)關(guān)系數(shù)據(jù)和 XML 文檔 -XML-only 數(shù)據(jù)庫(kù)更有優(yōu)勢(shì)。后者需要技巧和人力來操作并維護(hù)兩個(gè)數(shù)據(jù)庫(kù)系統(tǒng)而 不僅僅是一個(gè)。同樣,從兩個(gè)數(shù)據(jù)庫(kù)中聯(lián)合數(shù)據(jù),通常需要應(yīng)用程序有額外的邏輯,而這常常 很困難且效率低。當(dāng)你在一個(gè) DB2 數(shù)據(jù)庫(kù)中同時(shí)存儲(chǔ) XML 和關(guān)系數(shù)據(jù)時(shí),可以在查詢中聯(lián)合 兩種類型的數(shù)據(jù),甚至可以根據(jù)需要把一種轉(zhuǎn)數(shù)據(jù)換成另外一種。這樣做更加劃算而且比起使 用兩個(gè)不同的數(shù)據(jù)庫(kù),它提供了更好的性能。

DB2 pureXML 的最佳實(shí)踐:概述

DB2 pureXML 功能提供了在存儲(chǔ)、索引、驗(yàn)證和查詢 XML 數(shù)據(jù)上成熟的能力 – 并完全整 合了 DB2 關(guān)系型數(shù)據(jù)管理功能。本文描述了以有效并高效的方式使用 pureXML 的原則。本文 的目標(biāo)不是介紹 pureXML 功能或者它們?nèi)绾喂ぷ鳌O喾幢疚奶峁┝吮WC高性能 pureXML 的指 南,也示范了如何開發(fā) pureXML 功能來有效的解決特定的商業(yè)問題。

我們使用一個(gè)現(xiàn)實(shí)世界的應(yīng)用程序場(chǎng)景來安排最佳實(shí)踐和本文中的例子。這是來自金融行 業(yè)的場(chǎng)景而且是基于 XML 格式的叫做 FpML(金融產(chǎn)品標(biāo)記語(yǔ)言)的“金融衍生交易”的交易 和管理。你不需要一個(gè)金融專家來理解這個(gè)場(chǎng)景。雖然我們只使用這個(gè)特定的場(chǎng)景,最佳實(shí)踐 同樣應(yīng)用到其它 XML 使用情況,比如 XML 表格處理、訂單管理系統(tǒng)、XML 在健康保健和電子 病歷,和其它情況

本文的主題是根據(jù)數(shù)據(jù)庫(kù)對(duì)象的生命周期粗略組織的。我們這個(gè)章節(jié)從查看應(yīng)用程序需要 的數(shù)據(jù)和表開始。然后我們討論 DB2 對(duì) XML 數(shù)據(jù)(第 4 章)的存儲(chǔ)選項(xiàng)。之后 , 第 5 章 提供了添加 XML 數(shù)據(jù)到 DB2 數(shù)據(jù)庫(kù)的竅門和技巧。在第 6 章我們提供了更有效查詢 XML 數(shù) 據(jù)的指南和例子。為了提高查詢性能,定義和使用 XML 索引的最佳實(shí)踐在第 7 章中進(jìn)行了介 紹。 XML 名稱空間和 XML 更新在第 8 章和第 9 章中分別有所討論。第 10 章和 11 章涵蓋 了對(duì)數(shù)據(jù)庫(kù)管理員(DBAs)以及應(yīng)用程序開發(fā)的附加的主題。最后,12 章以總結(jié)最重要的指 南作為結(jié)束。

簡(jiǎn)單場(chǎng)景:FpML 形式中的金融衍生交易

一個(gè)“金融衍生交易”是一個(gè)基于(起源于)其它一些金融資產(chǎn)的金融交易,比如股票、 指數(shù)、利率、流通、或其它的。在一個(gè)金融衍生交易中,根據(jù)影響底層資產(chǎn)的市場(chǎng)條件,當(dāng)事 人雙方同意交易現(xiàn)金。通常情況下,一方利用交易以減輕風(fēng)險(xiǎn);另外一方利用這個(gè)交易來獲得 立即的收入(通過費(fèi)用或額外費(fèi)用)或?qū)ξ磥硎袌?chǎng)情況將提供收益進(jìn)行投機(jī)。讓我們看一個(gè)例 子:

YourWord Investments 和 MyGlobal Back 達(dá)成了一個(gè)外匯兌換交易。他們商議在 10 月 25 號(hào) YourWord 將支付 71,900,000 人民幣給 MyGlobal,并且 MyGlobal 將支付 10,000,000 美元給 YourWorld 。如果 1 美元兌換人民幣從現(xiàn)在到 10 月 25 日其間低于 7.19,MyGlobal 將從這次交易中獲利 .MyGlobal 可能會(huì)使用這個(gè)交易來避免美元下降的風(fēng)險(xiǎn) 。 YourWorld 可以投機(jī)美元將增值,或從 MyGlobal 收取進(jìn)行交易的前期費(fèi)用。

衍生交易的奇妙之處是(a)有很多不同的類型和變化,(b)一個(gè)特定交易的狀態(tài)往往需 要單獨(dú)談判而且很復(fù)雜,(c)一個(gè)衍生交易的生命周期可以是從幾天到數(shù)年的范圍而且它們 的條件可以隨時(shí)間而改變。金融企業(yè)發(fā)現(xiàn)在定義一個(gè)可以捕捉到衍生交易高度變化標(biāo)準(zhǔn)的數(shù)據(jù) 格式時(shí)需要 XML 的靈活性和可擴(kuò)展性。結(jié)果就是,他們開發(fā)了 FpML 。 FpML 本質(zhì)上是定義 了 XML 元素和屬性如何用來描述金融衍生交易的一個(gè) XML 模式。 International Swaps and Derivatives Association, Inc (ISDA) 代表一個(gè)投資銀行組織管理 FpML 標(biāo)準(zhǔn)使市場(chǎng)在場(chǎng)外 進(jìn)行衍生交易。更多金融衍生交易和 FpML 的信息參考【 8 】和【 9 】。

樣本數(shù)據(jù)和表

本文的樣本數(shù)據(jù)庫(kù)由 3 個(gè)表組成,見清單 1。

清單 1. 定義樣本表

create table trades (tradeId integer, tradedoc 

XML); 
 create table parties(partyInfo XML); 
 create table currencies(symbol char(4), name varchar(30), USDvalue double, 
                        lastUpdated 

timestamp);

所有的表定義和命令以使用樣本數(shù)據(jù)來填充它們,以及需要本文中顯示的其它語(yǔ)句可以在 中以文本文件的形式下載。

TRADES 表包含 FpML 文檔和每個(gè)文檔的交易 ID 。每個(gè)交易文檔涉及兩個(gè)交易方使文檔中 用 PRTYID 元素的值。更多關(guān)于各個(gè)部分詳細(xì)信息都以 XML 格式存放在 PARTIES 表中。我們 可以從一個(gè) TRADES 和 PARTIES 之間的 XML 到 XML 連接中找到相關(guān)交易的詳細(xì)資料,反之 亦然。很多 FpML 交易通過標(biāo)記來引用具體貨幣。額外的貨幣信息在關(guān)系型中可以在 CURRENCIES 表中,如清單 2 所示。我們需要 XML 到關(guān)系型表的連接來把相關(guān)交易和貨幣信 息聯(lián)系起來。

清單 2. currency表中的內(nèi)容

SYMBOL NAME                           USDVALUE 

  LASTUPDATED 
 ------ ------------------------------ --------   ------------------- 
 USD    US Dollar                         1.000   2008-02-05-15.15.57 
 EUR    Euro                              1.460   2008-02-05-15.15.59 
 GBP    Great Britain Pounds              1.960   2008-02-05-15.16.23 
 JPY    Japanese Yen                      0.009   2008-02-05-15.15.53 
 CNY    Chinese Yuan (Renminbi, RMB)      7.190   2008-02-05-

15.16.13

我們的 PARTIES 表包含 3 行,每一行有一個(gè) XML 文檔。他們描述了與金融衍生交易的例 子有關(guān)的各參與方。下表顯示 3 個(gè)締約方的 XML 文檔:

清單 3. Parties 表的內(nèi)容

 
   510026 
   MIB 
   MyGlobal International Bank 
   Active 
   
498 Wall Street New York USA
2006-05-16 Baa1
67781 NVB National Village Bank Active
1805 Back Street EC3M 4TD London UK
2006-06-01 Aa
99114 YWI YourWorld Investments Active
98765 100027 Beijing China
2007-01-15 Aaa 2005-04-21 Aa

清單 4 顯示 FpML 文檔表現(xiàn)先前我們描述過的 YourWorld Investment 和 MyGlobal International Bank 之間的貨幣兌換交易。交易以 tradeHeader 元素開始,以“ party1 ”和“ party2 ”標(biāo)記兩個(gè)交易方,并把他們和他們的交易 IDs 以及交易日期聯(lián)系起 來。在 FpML 文檔的最底部,“ party1 ”和“ party2 ”是映射到具體的標(biāo)識(shí)符“ 510026 ”和“ 99114 ”他們引用 PARTIES 表中交易方信息。交易具體的主要部分在 fxSingleLeg 元素中。 FX 是聲明外匯交易,有兩個(gè)元素叫 exchangedCurrency1 和 exchangedCurrency1 。第一個(gè)表示 YourWorld 支付 CNY 71,900,000 給 MyGlobal,第二個(gè)顯示 MyGlobal 支付 10,000,000 給 YourWorld.

為了更清楚的表示,我們已經(jīng)從 FpML 樣本數(shù)據(jù)刪除了所有名稱空間。我們將在本文后面 部分重新訪問名稱空間。

清單 4. FpML格式中的一個(gè)利率衍生工具

    
 
 
 
   
    
         
           
          MyGlobal941 
         
         
            
           YWI0089 
         
        2001-10-23Z 
      
      
         
            
            
            
              CNY 
              71900000 
            
         
         
            
            
            
              USD 
              10000000 
            
         
        2001-10-25Z 
         
            
              CNY 
              USD 
              Currency2PerCurrency1 
            
           7.91 
         
      
   
   
      510026 
   
   
     99114 
   
 

清單 5 顯示一個(gè) FpML 文檔的其它例子。這個(gè)文檔是一個(gè) “隔夜拆借存款”。 National Village Bank 對(duì)來自于 YourWorld Investment 的 25,000,000 歐元存款支付 3% 固定貸款 利率。

清單 5. 在 FpML 中的一個(gè)“隔夜拆借存款”例子

 
   
     
        
           
          YWI7623 
        
        
          
         69197 
        
       2002-02-14Z 
     
     
        Overnight Term Deposit 
         
         
        2002-03-15Z 
        2002-03-16Z 
        ACT/360 
         
           GBP 
           35000000.00 
         
        0.03 
     
   
   
     99114 
   
   
     67781 
   
 

     

這兩個(gè)列子(清單 4 和清單 5)讓你對(duì) FpML 衍生數(shù)據(jù)有了一個(gè)概念。 FpML 模式定義了 大約 1800 個(gè)不同的 XML 元素和超過 600 種類型。任何一個(gè)實(shí)例文檔都只包含了其中的一部 分。然而,一個(gè)關(guān)系型數(shù)據(jù)庫(kù)模式在沒有 XML 列的情況下需要至少 400 到 500 個(gè)表才能顯 示任意可能的 FpML 文檔。這是令人恐怖的復(fù)雜度,而且通常被認(rèn)為不可管理。這是為什么 XML 是必須的。

OurTRADES 表包含了 5 個(gè) FpML 文檔,包括上面的兩個(gè)。完整的數(shù)據(jù)樣例可以在一個(gè) DB2 命令行(CLP)腳本中下載。

為 XML 存儲(chǔ)選擇正確的存儲(chǔ)選項(xiàng)

正確的配置存儲(chǔ)選項(xiàng)對(duì)于最大化 DB2 數(shù)據(jù)庫(kù)性能非常重要。在這個(gè)章節(jié),我們討論數(shù)據(jù)庫(kù) 的表空間類型、XML 數(shù)據(jù)在數(shù)據(jù)庫(kù)中存儲(chǔ)的頁(yè)面大小、以及在數(shù)據(jù)庫(kù)中存儲(chǔ) XML 數(shù)據(jù)的方法 。

提示:在 DB2 9.5 中 XML 在一個(gè) DB2 表空間中消耗的存儲(chǔ)空間是原始 XML 數(shù)據(jù)以文本 格式在操作系統(tǒng)中占用空間的 0.7 到 1.5 倍。要得到更精確的評(píng)估,比如插入 1000 個(gè)有代 表性的文檔到一個(gè)空表中并抓取一個(gè) DB2 表的快照來查看這個(gè)表已使用的頁(yè)數(shù)。

為 XML 數(shù)據(jù)選擇表空間類型和頁(yè)大小

數(shù)據(jù)庫(kù)管理表空間(DMS)提供了比系統(tǒng)管理 ( 操作系統(tǒng)管理 ) 表空間(SMS)更高的性 能。這對(duì)關(guān)系型數(shù)據(jù)尤其如此,對(duì) XML 讀寫訪問上更是如此。最新創(chuàng)建的表空間默認(rèn)是 DMS 。推薦使用 DMS 表空間與自動(dòng)存儲(chǔ),所以 DMS 容器根據(jù)需要增長(zhǎng)而不需要人工干預(yù)。如果一 個(gè) XML 文檔太大而不能放入這個(gè)表空間的單個(gè)頁(yè)面中,DB2 會(huì)把這個(gè)文檔分別存入多個(gè)域中 ,這樣就存入多個(gè)頁(yè)面中了。很顯然你的應(yīng)用程序可以讓 DB2 處理最大 2G 的 XML 文檔。

通常,一個(gè)文檔的域的數(shù)目越低性能越好,尤其對(duì)于插入和讀取整個(gè)文檔。如果文檔不能 放入一個(gè)頁(yè)面中,每個(gè)文檔拆分的數(shù)目取決于頁(yè)大?。?KB,8KB,16KB 或 32KB)。你的表空 間頁(yè)大小越大,每個(gè)文檔可能被拆分的數(shù)目就越小。例如,假設(shè)一個(gè)文檔跨了 40 個(gè) 4k 頁(yè)。 相同的文檔在 8KB 表空間中可能只需要 20 頁(yè),或 10 個(gè) 16KB 頁(yè),5 個(gè) 32KB 頁(yè),因?yàn)槎?個(gè)小的文檔可以存儲(chǔ)在一個(gè)頁(yè)面中所以不會(huì)有空間浪費(fèi)。

提示:大多數(shù) XML 應(yīng)用程序最好在 16KB 和 32KB 頁(yè)面上運(yùn)行。如果大多數(shù)文檔非常?。?比如小于 4KB)16KB 頁(yè)面可以提供良好的性能,因此在一個(gè)頁(yè)面中存放多個(gè)文檔。更大的文 檔最好使用 32KB 頁(yè)面保存。對(duì)于我們的 FpML 場(chǎng)景,需要 16KB 頁(yè)面。如果你對(duì)關(guān)系型數(shù)據(jù) 和 XML 數(shù)據(jù)使用同樣的頁(yè)面,或者數(shù)據(jù)和索引也存放在相同頁(yè)面,16KB 頁(yè)面同樣可以做很好 的折衷,而且你會(huì)發(fā)現(xiàn) 32KB 頁(yè)面對(duì)關(guān)系數(shù)據(jù)和索引有的訪問有負(fù)面影響。這這種情況下,你 可以考慮使用其它的頁(yè)面大小。

XML 和關(guān)系數(shù)據(jù)使用不同的表空間和頁(yè)大小

在清單 1 中的 CREATE TABLE 語(yǔ)句把表中的 XML 數(shù)據(jù)和關(guān)系型數(shù)據(jù)都存在了相同表空間 里。這意味著它們使用相同的頁(yè)面大小和緩沖池。在表空間中,關(guān)系數(shù)據(jù)是存儲(chǔ)在基本數(shù)據(jù)頁(yè) 面上,同時(shí) XML 數(shù)據(jù)是存在另外的 XML 數(shù)據(jù)域(XDA)里的頁(yè)面中。這是因?yàn)榫拖翊髮?duì)象 (LOBs),XML 文檔可能很大,不能放在表的一個(gè)數(shù)據(jù)頁(yè)中的一行里。這種默認(rèn)的規(guī)劃對(duì)于大 多數(shù)應(yīng)用場(chǎng)景提供了很好的性能。這個(gè)選項(xiàng),叫做“基礎(chǔ)內(nèi)嵌表”,將在下面章節(jié)中進(jìn)行介紹 ,你應(yīng)該對(duì)在同時(shí)存儲(chǔ) XML 文檔和關(guān)系型數(shù)據(jù)的數(shù)據(jù)頁(yè)面上選擇這個(gè)選項(xiàng)。然而,默認(rèn)情況 下關(guān)系型數(shù)據(jù)和 XML 數(shù)據(jù)是分開存儲(chǔ)的。

提示:如果你已經(jīng)完成了性能分析并發(fā)現(xiàn)你需要對(duì) XML 數(shù)據(jù)使用一個(gè)大頁(yè)面,而關(guān)系型數(shù) 據(jù)和索引需要小頁(yè)面,你可以使用不同的表空間來滿足它們。在你定義一個(gè)表的時(shí)候,你可以 指定“長(zhǎng)型”數(shù)據(jù)到一個(gè)有不同頁(yè)面大小的單獨(dú)的表空間。長(zhǎng)型數(shù)據(jù)包括 LOB 和 XML 數(shù)據(jù)。

下面的例子定義了兩個(gè)緩沖池和兩個(gè)表空間,緩沖池和表空間都分別有 4KB 頁(yè)和 32KB 頁(yè) 。注意,一個(gè)表空間總是需要一個(gè)匹配頁(yè)大小的緩沖池。我們的 3 個(gè)表所在的 relData 表空 間是 4KB 頁(yè)面。所有的列都存在這個(gè)表空間中,除了 XML 列。它們被存儲(chǔ)在 xmlData 表空 間的 32KB 頁(yè)面中。

清單 6. XML 和關(guān)系型數(shù)據(jù)存放在不同頁(yè)大小的表空間中的例子

create bufferpool bp4k pagesize 4k; 
 create bufferpool bp32k pagesize 32k; 
 create tablespace relData 
 pagesize 4K bufferpool bp4k; 
 create tablespace xmlData 
 pagesize 32K bufferpool bp32k; 
 create table trades (tradeId integer, tradedoc XML) 
     in relData 	
     long in xmlData; 
 create table parties(partyInfo XML) in relData long in xmlData; 
 create table currencies(symbol char(4), name varchar(30), USDvalue double, 
                        lastUpdated timestamp) in relData;

除非明確指定,新表空間都是創(chuàng)建為有大行 IDs 的 DMS 表空間。這意味著一個(gè) 4KB 頁(yè)大 小的表空間可以存儲(chǔ)多達(dá) 2TB 的數(shù)據(jù)并支持在 32KB 大小的頁(yè)面存放 2335 行記錄。

內(nèi)置并壓縮 XML 數(shù) 據(jù)

DB2 VERSION 9.5 也允許你“內(nèi)置”存儲(chǔ) XML 數(shù)據(jù)并壓縮。

提示:如果某些或你的所有 XML 文檔都足夠小,就可以在基礎(chǔ)表頁(yè)面里把它們放進(jìn)相應(yīng)的 行對(duì)象中,就可以把 XML 數(shù)據(jù)內(nèi)置到關(guān)系行中。這樣做也提供了對(duì) XML 數(shù)據(jù)的更直接訪問并 避免了重定向到 XDA 對(duì)象中。如果在 XML 列中的一些文檔仍然太大而不能內(nèi)置,它們通常被 存儲(chǔ)在“外部” XDA 對(duì)象中。內(nèi)置可以顯著的減少域索引,因?yàn)榍度胛臋n不需要任何域索引 輸入。它們總是組成一個(gè)單獨(dú)的內(nèi)置域。嵌入文檔也可以使用普通的 DB2 深度行壓縮來壓縮 ,如圖 7 所示:

清單 7. 嵌入及壓縮 XML 存儲(chǔ)的定義

create table trades (tradeId integer, tradedoc XML in line length 16000) 
     in relData compress yes;

在這個(gè)例子中,XML 列使用 INLINE LENGTH 16000 定義 . 這意味著任何等于或小于 16000 字節(jié)的文檔都將以嵌入方式存儲(chǔ)。這里指定的大小是參照 XML 在 DB2 中解析后的大小 ,不是 XML 文本文檔在你文件系統(tǒng)中的大小。嵌入長(zhǎng)度必須小于頁(yè)面大小減去本頁(yè)中其它列 之后的大小。

提示:通常你應(yīng)該尋求嵌入最多或全部文檔。如果你在表中只有一個(gè) XML 字段,達(dá)到這個(gè) 目的的最簡(jiǎn)單的方法是設(shè)置內(nèi)置長(zhǎng)度為這一行中的最大可能值。 DB2 不會(huì)允許你定義一個(gè)太 長(zhǎng)的嵌入長(zhǎng)度。選擇一個(gè)較大的嵌入長(zhǎng)度將不會(huì)浪費(fèi)任何空間,因?yàn)橹挥写鎯?chǔ)文檔真正需要的 空間才會(huì)被使用。然而,指定一個(gè)較大的內(nèi)置長(zhǎng)度可以阻止你在以后添加新列到這個(gè)表中。

嵌入 XML 數(shù)據(jù)總是以這個(gè)表的關(guān)系型列存放在相同表空間中,并且不能存在一個(gè)有不同頁(yè) 面大小的其它表空間中。

因?yàn)槲覀兊臉颖颈硎径x時(shí)指定了 COMPRESS YES,關(guān)系數(shù)據(jù)和內(nèi)置 XML 文檔會(huì)被壓縮。 以 60%-70% 的比例壓縮內(nèi)置 XML 數(shù)據(jù)并不罕見。下面的語(yǔ)句可以用來檢查 PRODUCT 表的壓 縮比率:

清單 8. 用來檢查數(shù)據(jù)壓縮率的管理函數(shù)

select 

tabname,pages_saved_percent,bytes_saved_percent 
 from table(sysproc.admin_get_tab_compress_info('MYSCHEMA','TRADES','ESTIMATE'))
      as t

提示:

如果你的系統(tǒng)是 I/O 限制而非 CPU 限制,壓縮 XML 數(shù)據(jù)可以提供極大的性能提升。然而 ,要注意內(nèi)置文檔會(huì)顯著的增加在你頁(yè)面中的行的大小。這反過來減少了每一頁(yè)中的行數(shù)。只 訪問表中關(guān)系列的查詢現(xiàn)在需要讀取比沒有嵌入文檔要多很多的頁(yè)面。這會(huì)造成比沒有使用 XML 嵌入文檔情況下更多的 I/O 以及更低的查詢性能。如果你的查詢通??偸遣樵?XML 列, 那么對(duì)你沒有影響,然而,如果你有很多不涉及 XML 列的查詢,你應(yīng)或許不應(yīng)該選擇“內(nèi)置 ”存儲(chǔ)。


網(wǎng)站欄目:利用DB2pureXML管理XML數(shù)據(jù)實(shí)踐
當(dāng)前URL:http://m.5511xx.com/article/dpojphg.html