国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解DB2中自定義XML存儲及其使用環境

原創
數據庫 數據庫運維
DB2 pureXML讓存儲和查詢XML數據變得更加容易,只需要將列的字段類型定義為XML,然后插入或載入XML文檔到該列即可。但如果你的要求更高怎么辦?

【51CTO經典譯文】使用IBM DB2 for z/OS和DB2 for Linux,UNIX和Windows (LUW),那就沒有問題,下面讓我們一起回顧一下什么時候使用XML存儲,以及如何自定義XML存儲的一些***實踐吧!

為了形象地說明,我將使用一個XML文檔,內容如下:

  1. <order OrderID="9001" OrderDate="2009-10-18">> 
  2.  <customerID>26914</customerID> 
  3.  <item id="LK-486"> 
  4.   <name>Magic Potion</name> 
  5.   <size>300ml</size> 
  6.   <price>19.99</price> 
  7.  </item> 
  8.  <item id="VF-145"> 
  9.   <name>Crystal Ball, Deluxe</name> 
  10.   <color>crystal clear</color> 
  11.   <price>295.00</price> 
  12.  </item> 
  13. </order> 


它展示了一個包括訂單ID,日期,客戶ID和其它條目的訂單XML文檔,注意有些條目的描述方式有所不同,如size和color。我們假設需要在DB2中管理許多與此類似的XML文檔。

如何拆分和重組XML

我在另一篇文章“15個DB2 pureXML性能***實踐”中談到了你應該明智地選擇文檔的粒度,實際上就是要將存儲在DB2中的XML文檔與應用程序的業務邏輯對象和主要的訪問粒度匹配。

在我們的例子中,假設訂單變化非常頻繁,訂單內的條目讀取,添加或刪除是最關鍵的操作,需要***的性能,在這種情況下,你可以考慮將訂單文檔拆分,將每一個條目作為一個獨立的文檔存儲到DB2表的每一行中,這個存儲方法(與原來的完整存儲訂單文檔的方法相比)的好處是它使得操作所存儲的數據更容易,更快速:

 

可以使用單行讀取檢索一個條目,不用從一個完整的訂單文檔中抽取條目了;

可以通過刪除表中的行簡單地從訂單中刪除一個條目,不再需要操作完整的訂單文檔;

可以迅速插入一個新條目到訂單中,這時也不需要操作完整的訂單文檔。

這種輕松添加和移除訂單條目的功能在DB2 9 for z/OS中尤其有價值,因為這個版本不支持在現有XML文檔中添加或刪除元素。
下面的代碼顯示了一個表的定義,以及拆分一個訂單文檔的INSERT語句,相關的列分別存儲訂單ID,客戶ID,訂單日期和一個條目流水號。

  1. CREATE TABLE items(ordID INTEGER, custID INTEGER,  
  2.                                    odate DATE, seqNo INTEGER, item XML);  
  3. INSERT INTO items(ordID, custID, odate, seqno, item)  
  4.  SELECT T.ordID, T.custID, T.odate, T.seqno, XMLDOCUMENT( T.item)  
  5.  FROM 
  6.   XMLTABLE('$d/order/item' PASSING cast(? AS XML) "d" 
  7.    COLUMNS  
  8.     ordID        INTEGER    PATH      '../@OrderID',  
  9.     custID       INTEGER    PATH      '../customerID' 
  10.     odate        DATE       PATH      '../@OrderDate',  
  11.     seqNo        FOR ORDINALITY,  
  12.     item         XML        PATH      '.'AS T; 

條目信息是以XML格式存儲的,因為條目可能有不同的元素和屬性,如:

 

  1. ORDID     CUSTID     ODATE     SEQNO     ITEM  
  2. -----     -----     ------     -----     -----  
  3. 9001     26914     10/18/2009     1   <item id="LK-486">  
  4.                                         <name>Magic Potion</name>  
  5.                                         <size>300ml</size>  
  6.                                         <price>19.99</price>  
  7.                                       </item>  
  8. 9001     26914     10/18/2009     2   <item id="VF-145">  
  9.                                         <name>Crystal Ball, Deluxe</name>  
  10.                                         <color>crystal clear</color>  
  11.                                         <price>295.00</price>  
  12.                                       </item>  
  13. 2 record(s) selected. 

INSERT語句包括一個XMLTABLE函數,這個函數從輸入XML文檔抽取插入items表中的值,它將會拆分輸入XML文檔,生成獨立條目的文檔。XMLTABLE函數包括一個參數,通過它,應用程序可以傳遞一個訂單文檔,使用XPath表達式$d/order/item,XMLTABLE函數為輸入文檔的每一個條目生成一行數據,然后抽取訂單ID,客戶ID和訂單日期,特殊的列定義FOR ORDINALITY為產生的每一行打上編號。XMLDOCUMENT函數確保每一個條目片段可以作為一個獨立的XML文檔插入。

上面的代碼顯示了使用INSERT語句插入XML文檔后items表中的數據,下面的代碼顯示了如何重建原始的訂單文檔,XMLELEMENT和XMLATTRIBUTES函數使用items表中相關列的值構建的頂部文檔,XMLAGG函數組合所有條目,***形成一個完整的訂單文檔。注意,XMLAGG在seqno列上包括一個可選的ORDER BY子句,這樣可以確保還原后的訂單文檔和原始文檔中的條目顯示順序是一致的。

 

  1. SELECT XMLELEMENT(name "order",  
  2.          XMLATTRIBUTES(ordID AS "OrderID", odate as "OrderDate"),  
  3.          XMLELEMENT(name "customerID", custID)  
  4.          XMLAGG(item ORDER BY seqno) )  
  5. FROM items  
  6. WHERE ordID = 9001  
  7. GROUP BY ordID, odate, custID; 

使用生成列

DB2 9.7 for LUW中新的IBM DB2 pureXML特性允許你與數據庫分區功能(Database Partitioning Feature,DPF),范圍分區表和多維集群(MDC)表一起使用XML列,但分區或集群鍵必須由相關的列組成。前面你已經看到了如何使用INSERT和XMLTABLE從XML文檔抽取值到相關的列中,你可以使用這些關聯列對表進行分區或集群。如果你更喜歡在程序中使用簡單的INSERT語句,并且不知道如何抽取數據時,那你可以考慮使用一個生成的列。

DB2 9.7在用戶定義函數(UDF)中支持XML參數,允許你定義生成的列,使用插入的XML文檔中的值自動填充。下面的代碼顯示了一個UDF,它接受一個XML文檔作為輸入,如前面例子中的訂單文檔,這個UDF使用XMLCAST和XMLQUERY函數抽取輸入文檔的OrderDate屬性:

 

  1. CREATE FUNCTION extractDate(doc XML)  
  2.   RETURNS DATE 
  3.   LANGUAGE SQL CONTAINS SQL  
  4.   NO EXTERNAL ACTION DETERMINISTIC  
  5.   RETURN XMLCAST(XMLQUERY('$d/order/@OrderDate' 
  6.          PASSING doc AS "d"AS DATE); 

你可以在SELECT查詢和其它SQL語句中使用這個UDF,但也要定義一個生成列,對于下面的示例,假設檢索和插入完整的訂單是最關鍵的操作,在這種情況下,完整地存儲訂單文檔是***的選擇。下面的代碼定義了一個使用XML列存儲訂單的表,并自動抽取訂單日期填充到關聯的列(odate)中。一條INSERT語句現在可以簡單地插入一個XML文檔到order列中,不需要考慮抽取值到關聯列中:

  1. CREATE TABLE orders(  
  2.   order XML,  
  3.   odate DATE GENERATED ALWAYS AS (extractDate(order))); 

如果你連續不斷地存儲許多訂單,可能需要對舊訂單進行歸檔,這個時候使用范圍分區是***的選擇,下面的代碼顯示了表order2是通過按odate列的值進行分區的,odate列則產生自XML列,同樣,你可以使用生成的列作為分區數據庫的分配鍵,也可以作為MDC表的集群鍵:

  1. CREATE TABLE order2(  
  2.   order XML,  
  3.   odate DATE GENERATED ALWAYS AS (extractDate(order)) NOT NULL)  
  4.  PARTITION BY RANGE (odate)  
  5.  (PART q109 STARTING('01-01-2009') ENDING ('03-31-2009') INCLUSIVE,  
  6.  PART q209 ENDING ('06-30-2009') INCLUSIVE,  
  7.  PART q309 ENDING ('09-30-2009') INCLUSIVE,  
  8.  PART q409 ENDING ('12-31-2009') INCLUSIVE); 

控制XML存儲

 

自定義XML存儲有許多好處,將大型XML文檔拆分成多個小文檔,將會使操作XML數據變得更加容易和高效,使用UDF定義生成列可以簡化XML值抽取到關聯列,使用生成列還可以幫助你管理分區數據庫,范圍分區表,或MDC表中的XML。

原文出處:http://www.ibm.com/developerworks/data/library/dmmag/DMMag_2009_Issue3/Tips/index.html

原文名:Customizing XML storage in DB2

作者:Matthias Nicola

【編輯推薦】

  1. 在DB2中正確導出LOB數據
  2. DB2外部文件格式淺析
  3. DB2數據庫設計的三個建議
  4. 解析DB2與非DB2數據庫之間遠程復制
  5. DB2數據庫基本操作指令30條

 

責任編輯:彭凡 來源: 51CTO
相關推薦

2010-09-30 13:27:09

DB2游標

2010-08-10 15:30:21

2010-01-08 11:47:15

ibmdwDB2

2010-08-31 15:39:25

DB2存儲過程

2010-08-31 16:13:40

DB2SQL函數

2010-07-29 14:41:12

DB2 9 XML

2010-09-06 15:00:40

DB2 9 XML

2010-11-02 09:56:14

DB2目錄結構

2010-11-03 16:50:23

DB2目錄結構

2012-08-01 14:23:35

IBMdW

2011-09-02 13:50:36

OracleDB2數據存儲模式

2010-11-03 10:35:45

DB2存儲過程

2010-08-25 09:56:02

DB2存儲過程

2010-09-01 15:09:41

DB2動態游標

2010-07-29 14:54:21

DB2 9 XML

2010-09-07 08:27:17

DB2常用函數

2011-05-13 09:49:55

DB2數據移動

2013-04-01 14:35:10

Android開發Android自定義x

2010-02-03 09:16:01

DB2

2010-02-04 09:50:11

DB2Oracle數據
點贊
收藏

51CTO技術棧公眾號

污污的视频在线观看| 免费观看在线综合| 91社在线播放| 亚洲国产一区二区三区| 国产精品麻豆| 日韩伦理在线免费观看| 欧美精品一区二区三区很污很色的| 国产精品久久久久久影院8一贰佰| 5月婷婷6月丁香| 精品成人免费观看| 国内精品久久久久影院薰衣草| 巨大荫蒂视频欧美大片| 久久精品第九区免费观看| 日本韩国一区二区三区| 亚洲精品极品少妇16p| 成人高清免费观看mv| 欧美亚洲免费高清在线观看| 欧美精品日日鲁夜夜添| 日韩激情中文字幕| tube8在线hd| 一级黄色录像免费看| 日韩av一卡二卡| 国产福利视频一区二区三区| 成人全视频在线观看在线播放高清 | 国产精品丝袜久久久久久高清 | 国产精品一国产精品| 激情视频综合网| 久久99视频免费| 亚洲视频图片小说| 中文一区在线| 欧美爱爱视频| 欧美女子与性| 蜜桃麻豆91| 亚洲精品久久久久久久久久久久久 | 日本一级在线观看| 亚洲图片小说在线| 欧美激情在线有限公司| 欧美人与性动xxxx| 久久久99精品久久| 亚洲看片一区| 日韩av影院| 国产天堂在线播放视频| 一道本在线免费视频| 51蜜桃传媒精品一区二区| 国产一区二区动漫| 欧美日韩五月天| 中文av一区二区| 蜜臀a∨国产成人精品| 精品国产美女| 免费在线观看av网站| www.亚洲| 免费一级特黄毛片| 高清欧美性猛交xxxx| 欧美午夜性色大片在线观看| 91精品国产91久久久久久黑人| 成人污污视频| 国产在线网站| 日本欧洲一区| 久久99蜜桃综合影院免费观看| 久久99精品久久久久久噜噜| 精品成人免费观看| 久久在线观看免费| 日韩在线一区二区三区| 这里只有精品在线| 日韩一区二区三区色| 日韩免费影院| v片在线观看| av老司机在线观看| 91视频 -- 69xx| 亚洲最大福利视频| 国产亚洲a∨片在线观看| 欧美大片一区二区| 调教+趴+乳夹+国产+精品| 国产精品久久久久一区二区三区 | √最新版天堂资源网在线| 波多野结衣中文字幕在线| 国产a级一级片| 秋霞无码一区二区| 国产曰肥老太婆无遮挡| 欧美一区二区综合| 成人黄动漫网站免费| 成人精品一区二区三区电影免费 | 一区av在线播放| 18成人在线观看| 99久久免费视频.com| 久久色视频免费观看| 国产精品久久久久国产精品日日| 久久久久久久精| 久草热8精品视频在线观看| 日韩电影免费一区| 午夜视频一区| 国产精品日本一区二区不卡视频 | 日韩mv欧美mv国产网站| 奇米影视777在线欧美电影观看 | 国产福利在线| 一区二区三区高清在线视频 | 青青青草原在线| 成年午夜在线| 国产在线美女| 日韩在线电影| 青青草97国产精品麻豆| 国产精品普通话对白| 日韩影院在线观看| 欧美一二三区在线| 亚洲一区日韩精品| 亚洲免费不卡| 欧美激情亚洲天堂| 在线视频国产一区| 日本丶国产丶欧美色综合| 欧美亚日韩国产aⅴ精品中极品| 在线成人高清不卡| 中文字幕日韩欧美精品在线观看| 欧美片一区二区三区| 91精品久久久久久久久不口人| 国产区一区二区三区| 久久青青草原一区二区| 国产911在线观看| 永久免费的av网站| 成人看片app| 日本在线www| 91成人午夜| 一本色道久久精品| 国产色产综合色产在线视频| 亚洲一区精品在线| 欧美壮男野外gaytube| 久久99精品久久久久子伦| 国产主播喷水一区二区| 欧美极品少妇无套实战| 情趣网站在线观看| 国产成人免费9x9x人网站视频| 四季av在线一区二区三区| 国产成人自拍在线| 日韩亚洲欧美高清| 国产精品自产拍在线观看中文| 日韩中文字幕在线不卡| 欧美艹逼视频| 国产精一区二区| 久久99国产精品免费| 亚洲制服欧美中文字幕中文字幕| 一区二区在线观看不卡| 亚洲色无码播放| 国产成人精品一区二区三区福利| julia中文字幕一区二区99在线| 男捅女免费视频| 免费看电影在线| 精品国产一区二区三区av片| 国产一区高清在线| 欧美三级日韩三级国产三级| 中文字幕日韩精品在线| 欧美一区二区高清在线观看| 亚洲精品男人| 不卡一区综合视频| 亚洲色图清纯唯美| 国产aⅴ夜夜欢一区二区三区| yourporn在线观看中文站| 精品国产乱码久久久| 国产美女在线精品| 69堂精品视频在线播放| 国产精久久久| 99这里只有精品| 91在线高清视频| 国产精品一区在线| segui88久久综合| 久久国产三级精品| 国产aaa精品| 久久av一区| 性欧美疯狂xxxxbbbb| 国产精品视频播放| 欧美女v视频| 日韩高清在线观看| 日韩有码视频在线| 91黑丝在线| 国产精品v日韩精品v欧美精品网站| 欧美伊人久久大香线蕉综合69| 一区一区视频| 97色婷婷成人综合在线观看| 欧美电影《轻佻寡妇》| 久久精品国产网站| 四虎影视国产精品| 蘑菇福利视频一区播放| 日韩欧美中文在线| 99在线视频精品| 欧美日韩亚洲综合| 成人精品在线视频| 91福利国产成人精品播放| 另类图片综合电影| 国内成人在线| 一区二区三区国产精品| 久久在线免费观看视频| 日韩高清专区| 日韩经典av| 懂色中文一区二区在线播放| 日韩电影在线观看中文字幕 | 亚洲精品国久久99热| 日本一区网站| 国产一区影院| 精品美女永久免费视频| 国产精品av免费观看| 91精品影视| 国产精品嫩草影院av蜜臀|