DB2 Version 9.5 pureXML的增強和新特性
DB2 9XML支持概述
DB2 9引入了原生XML數據類型。它將XML存儲為一種經過解析的分層(原生)格式,并允許用戶使用XQuery和SQL/XML語言查詢數據。DB2XQuery表達式將存儲在DB2數據庫中的XML文檔用作XML的查詢源。函數xmlcolumn和sqlquery用來連接存儲在數據庫中的XML值,并為XQuery解析器提供XML序列。
除了XQuery語言,DB2 9還提供了SQL/XML函數在單個查詢中同時處理XML數據和關系數據。SQL/XML函數xmlquery、xmltable和xmlexists有助于將XQuery嵌入到SQL語句中。
DB2 9還支持模式驗證。它引入了新的命令和存儲過程,用于將模式注冊到數據庫并充當數據庫對象。在插入操作之前或之后,可以用xmlvalidate函數根據已注冊的模式驗證XML值。也可以對模式進行注釋,以便于將XML數據分解為關系表。諸如xmlelement、xmlattributes等發布函數可用來將關系值轉換為XML文檔。DB2 9也針對XML數據支持對一些實用工具(導入、導出等等)進行了更新。更多關于Version9中的XML支持請參見參考資料部分。
DB2 V9.5的新特性
在處理XML數據方面,現有的DB2 9功能非常強大。DB2 V9.5增強了一些現有特性并引入了其他功能,以使XML處理更加強大和高效。下面是本文將要討論的功能列表:
◆支持在非Unicode數據庫中使用XML
◆子文檔更新
◆基礎表存儲/壓縮
◆兼容的XML模式演化
◆驗證觸發器
◆驗證檢查約束
◆XML復制
◆XML聯合
◆XML載入
◆sqlquery()參數
◆用戶友好的發布函數
◆SQL/XML函數的默認參數傳遞
◆XSLT函數
◆XML分解增強
◆XML索引增強
◆索引顧問程序(Indexadvisor)和優化器增強
◆DB2DataWeb服務
以下小節的大多數代碼示例都基于DB2 V9.5示例數據庫。可以從DB2 V9.5命令行處理器運行db2sampl命令來創建示例數據庫。也可以通過firststep來創建。firststep是DB2提供的一個工具,在安裝了DB2之后就會執行,也可以在以后通過在Windows中選擇Start>AllPrograms>IBMDB2>db2copyname>Setuptools>firststeps來執行。
支持在非Unicode數據庫中使用XML
DB2 9只允許用戶使用UTF-8代碼頁創建包含XML數據的數據庫。這意味著,即使XML文檔中的值是ASCII格式的,也需要存儲到UTF-8格式的數據庫中。DB2 V9.5去掉了這個限制,并且允許用戶用任意代碼集創建包含XML列的數據庫。由于去掉了這個限制,即使數據庫不是用UTF-8格式創建的,用戶也可以更改一個表以添加XML列,或者創建一個包含XML列的新表。
以下代碼創建了一個示例數據庫和包含一個XML列的示例表:
清單1.使用默認代碼頁的數據庫
db2 CREATE DATABASE sampledb |
DB2 V9.5允許用戶更新存儲在數據庫中的XML文檔的一部分。它引入了XQuerytransform表達式,該表達式使用4個更新表達式——insert、delete、replace和rename來修改XML文檔片段。transform表達式是XQuery語言的一部分,因此可以用在XQuery表達式中。對于DB2 V9.5,一個transform表達式中只能使用一個更新表達式。一個transform表達式有以下子句:
◆COPY:transform表達式的copy子句將源XML值綁定到一個變量。更新表達式將會在查詢中對該副本進行處理。
◆MODIFY:modify子句根據更新表達式修改復制的XML值。在MODIFY子句中可以使用多個更新表達式。
◆return:return子句返回修改后的值。
下面將解釋這4個更新表達式:
1.insert表達式將一個新的XML節點插入到現有XML文檔中。可以在XML文檔指定插入的位置.
2.replace表達式用來更新特定節點的特定值。
3.delete表達式用來從XML文檔刪除特定節點。
4.rename表達式用來對節點進行重命名。
由于transform表達式是XQuery語言的一部分,因此可以在包含xmlquery函數的SQL語句中使用它,也可以用于更新語句來更新XML值。
清單2中的代碼更新了示例數據庫中customer表的info列。它更新XML文檔以使用cid關系列的值匹配CID屬性。
清單2.更新表的transform表達式
UPDATE CUSTOMER |
如果在表的XML列上存在XML驗證檢查約束,在手動更新或者通過觸發器更新之前,用戶可能需要驗證新的XML值。
以下代碼示例從purchaseorder表中刪除一個條目,并將修改后的文檔作為查詢結果。
清單3.transform表達式
xquery |
示例xupdate.db2給出了transform表達式的不同例子。可以在sqllib/samples/xml/xquery/clp目錄下找到此示例。
基礎表行存儲/壓縮
在DB2 9中,XML數據和關系數據存儲在不同的位置。這個存儲位置稱作XML數據區域(XMLdataarea,XDA)。DB2 9將所有XML文檔存儲在這個存儲位置,這意味著訪問XML值和關系數據需要更多I/O。如果XML文檔較小,而且在存儲關系值之后頁面大小仍足夠容納XML值,那么將XML存儲在相同的頁面能夠提供不錯的性能收益。這些收益包括:
壓縮:因為XML數據和關系數據存儲在一起,因此可以使用DB2 9中引入的壓縮技術對XML數據進行壓縮。由于XML值比關系數據大,所以可以獲得較高程度的壓縮。
查詢性能:由于XML數據和關系數據存儲在相同位置,因此直接插入XML數據使得基礎表比一般情況下要大。如果XML數據的訪問頻率與表中的其他關系值相當,那么這將提高查詢數據的性能。
DB2 V9.5引入了XML數據的基礎表行存儲。這意味著如果每行的關系數據和XML數據的總大小沒有超過1頁面的大小,這兩種數據就可以存儲在相同的物理頁面。只有當一個記錄的總大小沒有超過頁面大小時,才能夠對XML數據進行基礎表行存儲。如果是這樣,XML數據就會像通常一樣存儲在XML存儲位置。DB2中允許的頁面最大值為32KB,因此一個XML值的最大插入長度也被限制到32KB。如果文檔的內部樹表示的大小比指定的插入長度小,它們將會被插入。清單4中的代碼所創建的表可以對XML數據進行基礎表行存儲:
清單4.XML數據的基礎表存儲
db2 CREATE TABLE emp1(id INT, info XML INLINE LENGTH 1024) |
使用 INLINE 選項指定將 XML 數據跟關系數據存儲在一起。這對于要獲取的數據都位于相同位置的查詢來說很有利。另一方面,對于訪問非 XML 數據的查詢,這可能導致需要更多的 I/O 才能找到關系數據。
#p#
使用 XML 數據基礎表行存儲的理想情形是,當表只有一個 XML 類型列并且 XML 文檔的最大值沒有超過頁面大小時。
兼容的 XML 模式演化
為了增加靈活性并提供更好的模式演化,DB2 V9.5 為 XML 模式引入了 update 特性。以前注冊的模式能夠更新為新模式,只要它們互相兼容。如果使用舊模式驗證的 XML 文檔對于新模式仍然有效,那么這兩種模式就是兼容的。
例如,新模式中添加的可選元素和舊模式中的元素兼容,這是由于新元素的可選特性使經過舊模式驗證的 XML 文檔仍然有效。新 XML 文檔可以擁有這個可選元素,并且能夠通過新模式的驗證。因為舊文檔仍然有效,所以更新模式之后無需再執行任何操作。如果模式不兼容,模式更新就會失敗。舊模式的注釋和標識符仍然會保留。
為了更新模式,DB2 V9.5 引入了 XSR_UPDATE 存儲過程。存儲過程檢查兼容性,只當新模式具備兼容性時才更新模式。要更新模式,用戶需要分別注冊新舊模式,然后調用 XSR_UPDATE 存儲過程。一旦舊模式經過更新,用戶可以選擇保留舊模式或者將其刪除。
讓我們以 customer 表的 info 列作為一個例子。info 列包含 addr 元素,該元素具有以下定義(在 sqllib/samples/db2sampl 目錄下可以找到完整的模式)。
清單 5. 舊 XML 模式定義
之后,用戶希望擁有一個可選的 HouseNo 元素。要更新已注冊的模式以使標識符保持不變,需要先注冊包含附加元素的新模式。 新 addr 元素的定義如下:
清單 6. 新 XML 模式定義
注冊之后,可以用以下存儲過程將現有模式更新為新模式:
清單7. 使用 XSR_UPDATE 更新模式
db2 call XSR_UPDATE('RSCHEMA','CUSTOMER','RSCHEMA','CUSTOMER1',0) |
最后一個參數值0表示更新之后不應該刪除新模式。如果該參數設置為其他非零值,在更新操作之后新模式將會被刪除。
示例代碼xsupdate.db2演示了兼容的XML模式演化。可以在sqllib/samples/xml/clp目錄中找到該示例。
驗證觸發器支持
為了提高應用程序靈活性并為用戶提供對引入的XML文檔的自動驗證功能,DB2 V9.5擴展了在beforetrigger中對XML的支持。beforetrigger是使用BEFORE選項創建的觸發器,并在inster/update/delete操作之前執行。在beforetrigger中,可以在新變量中引用XML值。觸發器的操作可以對新值應用xmlvalidate函數。觸發器的WHEN子句可以用來檢查是否根據任何指定模式對新值進行了驗證。可以使用WHEN條件中的ISVALIDATED或ISNOTVALIDATEDACCORDINGTOXMLSCHEMA子句來完成該操作。根據WHEN條件的輸出,可能還需要驗證XML值或設置一個新值。目前,只允許將xmlvalidate函數用于XML類型的transition變量。觸發器創建之后,在每次執行插入操作時,將會被自動激活并執行,如果在插入語句中沒有驗證XML值,也可以用觸發器進行驗證。
以下代碼是一個DDL語句,用于創建customer表和根據該表定義的觸發器。只要存在對表的插入操作,就會激活觸發器。如果沒有在插入語句中對XML文檔進行驗證,觸發器將會在插入之前使用xmlvalidate函數驗證該文檔。以下的示例代碼假設表的customer不存在,并且已經在數據庫中注冊了該customer模式。
清單8.為一個表定義的觸發器
CREATE TABLE Customer ( Cid BIGINT NOT NULL, |
示例 xmltrig.db2 提供了不同的場景和操作,這些操作用來分配新值并驗證 XML 值,可以在觸發器內部執行。該示例可以在 sqllib/samples/xml/clp 目錄中找到。
XML 驗證檢查約束
檢查約束(check constraint)是一類可以在創建表時作用到表列的約束。只有當約束合法時,DB2 才允許插入操作,否則插入將會失敗。
DB2 V9.5 支持對 XML 值進行檢查約束。用戶可以使用檢查約束來加強對 XML 列的驗證。與 before trigger 類似,可以在檢查約束中使用 IS VALIDATED ACCORDING TO XMLSCHEMA 子句來加強驗證。惟一的區別在于,這種約束只檢查驗證條件,并不會進行實際的驗證。用戶可以在插入語句中使用 xmlvalidate 來顯式驗證 XML 值,或者使用 before trigger 來執行自動驗證。根據檢查約束中指定的模式,只有當 XML 值有效時,才能成功插入。
對一個表 XML 值應用 before trigger 和檢查約束,往往可以確保 XML 值對于指定模式是有效的。只要執行了插入操作,before trigger 就會自動進行驗證,而檢查約束將會讓用戶顯式地使用 xmlvalidate 函數。這兩種方法可以一起使用,以加強 XML 值的完整性。
清單9 中的代碼將會修改 清單 8 中創建的表 customer,以對表執行檢查約束:
清單9. 檢查約束
db2 ALTER TABLE customer ADD CONSTRAINT check_info
CHECK(info IS VALIDATED ACCORDING TO XMLSCHEMA ID customer)
上面創建的檢查約束總是會檢查是否根據 customer 模式對文檔進行了驗證。如果沒有觸發器,用戶需要使用 xmlvalidate 函數顯式地驗證該文檔。
示例代碼 xmlcheckconstraint.db2 演示了如何為具有相同結構的不同表創建視圖,該視圖可以進行檢查約束,以及按模式對表進行劃分。
XML 復制支持
DB2 V9.5 支持將 XML 數據復制到其他支持 XML 數據的數據庫。可以使用 WebSphere® Replication Server 9.5 版或者 WebSphere Data Event Publisher 9.5 版來進行復制。WebSphere Replication Server 可以將 XML 數據復制到支持 XML 數據類型的聯合目標,也可以將 XML 數據映射到 CLOB/BLOB 列。
像任何其他關系列一樣,對 XML 數據的復制是在事務消息中完成的,因此復制的 XML 的大小將受到最大事務消息長度的限制。如果數據很大,可以在原始文檔中插入一個占位符文檔。也可以在例外表中插入一個例外。
當進行復制時,不能對 XML 模式注冊進行復制。此外,在復制過程中也不能對 XML 數據進行驗證。
XML 聯合支持
WebSphere Federation Server Version 9.1 支持 pureXML,因此能夠集成本地和遠程的 XML 存儲數據。可以將來自不同數據庫的 XML 數據當作本地數據查看,而且可以用 DB2 XQuery 和 SQL/XML 查詢這些數據。可以在遠程聯合數據庫上創建一個視圖,以連續字符串的方式查看該數據,這些數據可以在 WebSphere Federation Server 上解析為 XML 值。現在 DB2 可以使用 SQL/XML 和 XQuery 語言通過為視圖創建的別名來查詢數據。
與驗證本地 XML 值的方式相同,可以使用 db2 xmlvalidate 函數驗證來自不同聯合數據源的 XML 數據。
載入支持
DB2 9 主要支持兩種用 XML 值填充表的方式。insert 語句向表中插入 XML 值,import 實用程序用于將大量數據導入表中。
DB2 V9.5 擴展了對 load 實用程序的支持。load 支持 import 支持的大多數 XML 數據選項。可以使用 FROM 子句為 XML 數據指定路徑。在 load 期間可以使用 XMLVALIDATE USING 子句對 XML 數據進行驗證。load 有 3 個不同的選項:XDS、SCHEMA 和 SCHEMALOCATION HINTS。當指定 XDS 選項時,可以使用 DEFAULT, IGNORE 和 MAP 子句。這些選項的含義與 import 中對應選項的含義相同。可以使用文件類型修改器 XMLCHAR 和 XMLGRAPHIC 指定數據的代碼頁。XML 數據指定程序(XML data specifier,XDS)在數據文件中指定 XML 值。load 重啟的行為和原來一樣。它通過掃描所有 XML 文檔重新構建所有索引。
示例代碼 xmlload.db2 演示了 DB2 V9.5 中可用的 XML 數據載入選項。可以在 sqllib/samples/xml/clp 目錄中找到該示例。
#p#
XSLT支持
DB2 V9.5提供了使用數據庫本身的XSL轉換來處理XML文檔的功能。可以使用XSLT樣式表將存儲在數據庫中的XML文檔轉換為HTML格式。為此,DB2 V9.5引入了xsltransform函數。該函數還支持使用參數的樣式表。xsltransform函數可以將作為XML文檔存儲在數據庫表列中的XSLT樣式表應用到XML文檔上。這為用戶提供了靈活性,用戶可以檢索來自數據庫的經過轉換的XML文檔,并可以直接在Web上顯示。
現在,假設您已有下面的XML文檔:
清單10.XML文檔
Ice Scraper, Windshield 4 inch
Basic Ice Scraper 4 inches wide, foam handle
3.99
以及相應的 XSLT 樣式表:
清單11. XSLT 樣式表
這些文檔需要存儲在表中,或者當作參數傳遞。當將這些值作為參數傳遞時,請確保它們是格式良好的XML文檔。參數的數據類型可以是XML、VARCHAR、CLOB或BLOB。假設文檔和樣式表都存儲在表中,可以用以下語句轉換XML文檔:
注意:示例假設存儲文檔的表名稱為xslt,XML文檔的列名為xmldoc,XSL文檔的列名為xsldoc。
清單12.XSLTransform表達式
SELECT XSLTRANSFORM (description USING stylesheet AS CLOB (10M)) |
這個查詢輸出一個 HTML 文檔,可以在瀏覽器中進行查看。清單 13 顯示該 HTML 輸出:
清單13. XSLTransform 表達式的 HTML 輸出
﹤html﹥ |
用戶也可以將XML文檔和一個XSLT樣式表存儲在不同的表中,而且可以通過連接表將單個XSLT樣式表應用到多個XML值。
發布函數
發布函數用來將關系數據轉換為XML值。DB2 9引入了SQL/XML支持,該支持在DB2 V9.5中得到了增強和簡化。一些DB2 9SQL/XML函數,比如xmlelement,需要提供所有XML元素的名稱、屬性和其他節點,而這些元素來自表的關系列或者被顯式地提供。有時用戶需要生成XML值,但是不想牽涉到元素名稱。
通過引入新函數xmlrow和xmlgroup,DB2 V9.5對現有的發布函數進行了擴展。這些函數從表列獲得XML元素的名稱和值。xmlrow輸出是一個表示為XML的行值的序列,xmlgroup函數將所有值集合到一個根節點下。
下表是一個示例employee表,該表擁有員工的詳細地址,包含以下記錄:
IDNAMESTREETCITYSTATECOUNTRY
1manojsector14gurgaonharyanaindia
下面的查詢在該行中應用了xmlrow和xmlgroup函數。
清單14.新發布函數
db2SELECTXMLROW(id,name,street,city,state,country)FROMEMPLOYEE
1
manoj
sector14
gurgaon
haryana
india
db2SELECTXMLGROUP(id,name,street,city,state,country)FROMEMPLOYEE
1
manoj
sector14
gurgaon
haryana
india
在DB2 9中,為了得到相同結果,除了顯式地提供元素名稱,還需要將xmlelement應用到每個列值。
跟V91版本中相同的查詢相比,示例代碼xmlintegrate.db2為這些函數提供了更多復雜例子。可以在sqllib/samples/xml/clp目錄下找到該示例。
將參數傳遞給sqlquery函數
在DB2 9中,sqlquery函數將一個SQL語句嵌入到XQuery表達式中。此函數將一個字符串值作為輸入,該字符串是一個有效的SQL全選擇語句。在DB2 9中,不能將參數從XQuery語句傳遞給此函數。
DB2 V9.5增強了該函數,引進了一個新的parameter函數,該函數將一個整數值作為輸入。現在,sqlquery函數可以將多個參數作為輸入,第一個參數是一個表示全選擇的字符串,其后是參數的值。sqlquery函數的第一個字符串參數可以包含parameter函數,該函數將會被傳遞給sqlquery函數的參數取代,該參數位于第一個必需的字符串參數之后。傳遞給parameter函數的整數值表示在調用sqlquery函數中參數的位置,該參數將會在調用中被取代。例如,parameter(1)告訴解析器用字符串參數后的第一個參數替代這個值。參數的類型應該和全選擇所期望的值類型相同。可以使用類型轉換函數將值轉換為一個合適的類型。
讓我們以示例數據庫中的customer表作為例子。可以通過運行db2sampl命令和從firststep創建示例數據庫。firststep是DB2提供的一個工具,在安裝了DB2之后就會執行,也可以在以后通過在Windows中選擇Start>AllPrograms>IBMDB2>db2copyname>Setuptools>firststeps來執行。
customer表包含一個作為關系列的cid列,以及表示顧客id的鍵值。infoXML列具有一個屬性Cid,該屬性也表示顧客id。如果數據是一致的,那么屬性Cid值應該與特定行的cid列值相同。以下的查詢將檢查數據保持一致的行的數量。Cid屬性的值被傳遞給sqlquery函數,以將其與關系cid值進行比較。
清單15.將參數傳遞給sqlquery函數
xquerydeclaredefaultelementnamespace"http://posample.org";
for$iindb2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo/@Cid
for$jindb2-fn:sqlquery("selectinfofromcustomerwherecid=parameter(1)",$i)
return
{$i}
此查詢返回所有數據一致的顧客id。
示例代碼xqueryparam.db2提供了一些不錯的例子,將一個和多個參數傳遞給sqlquery函數。可以在sqllib/samples/xml/clp目錄中找到該示例。
現有函數XMLQuery、XMLtable和XMLExists的默認傳遞行為
在DB2 9中,函數xmlquery、xmltable和xmlexists用來將Xquery語句嵌入到SQL語句中。利用這些函數的PASSING子句將參數從SQL語句傳遞給這些函數。
在DB2 9中,如果同一個SQL語句中的這些函數會執行多次,那么每次執行都需要一個獨立的PASSING子句。有時這會使查詢的結構看起來很復雜和龐大。DB2 V9.5擴展了這些函數,以使用默認的傳遞機制。現在,將一個列名稱用作這些函數的Xquery中的一個變量名。如果沒有使用顯式的PASSING子句,默認情況下DB2將傳遞相同列給一個變量。這使查詢更精簡并更易于理解。以下代碼給出了一個針對示例數據庫表的例子。查詢為名為RobertShoemaker的顧客獲取purchaseorder中的第一項。
清單16.SQL/XML函數的默認傳遞行為
SELECTXMLQUERY('declaredefaultelementnamespace"http://posample.org";
$PORDER/PurchaseOrder/item[1]')
FROMpurchaseorderASp,customerASc
WHEREXMLEXISTS('declaredefaultelementnamespace"http://posample.org";
$INFO/customerinfo[name="RobertShoemaker"and@Cid=$CUSTID]')
對于SELECT子句中的xmlquery函數,默認情況下傳遞purchaseorder表的porder列。同樣地,對于xmlexists函數,默認情況下傳遞customer表的info列和custid列。請確保以大寫字母的方式使用這些變量的名稱,因為xquery是一個區分大小寫的語言,而且關系列名稱常常以大寫的方式存儲。
XML驗證約束
DB2 V9.5增強了SELCT語句使用的ISVALIDATED子句,以包含ACCORDINGTOXMLSCHEMAID。現在用戶能夠提供多個模式并僅選擇針對這些模式驗證的XML值。DB2 V9.5可以將任何XML表達式(而不是一列)作為一個操作數,這具有很大的靈活性。下面的例子只選擇了customer表中用customer模式驗證之后的文檔。
清單17.SELECT語句中的XML驗證約束
db2SELECTinfoFROMcustomer
WHEREinfoISVALIDATEDACCORDINGTOXMLSCHEMAIDcustomer
經過注釋的XML模式分解
DB2 9支持XML模式的注釋,因此除遞歸模式外,可以將數據分解為關系表。DB2 V9.5解除了這個限制,現在即使模式是遞歸的,用戶也可以對數據進行注釋和分解。
DB2 V9.5擴展了分解,以提供插入順序。當將數據分解成多個具有外鍵關系的表時,這尤其重要。在這種情況下,應該首先填充主表,以保持引用約束。可以使用以下注釋指定插入順序:
清單18.對模式進行注釋,以提供插入順序
CUSTOMER
PURCHASEORDER
示例代碼recxmldecomp.db2和xmldecomposition.db2給出了一些不錯的例子,其中分別演示了將遞歸模式和插入順序進行注釋并分解到表中。可以在sqllib/samples/xml/clp目錄中找到示例代碼。
XML索引增強
DB2 9引入了XML索引。可以在數據庫中XML文檔的特定節點上創建XML索引。索引的數據類型可以是VARCHAR、DOUBLE、DATE或TIMESTAMP。如果索引的數據類型與XML文檔的元素類型不匹配,DB2將插入XML值,但是不會為該值創建索引。
DB2 V9.5為索引引入了一個附加子句REJECTINVALIDVALUES。如果使用該子句創建索引,并且索引的數據類型與正在插入的XML文檔中元素的數據類型不匹配,插入將會失敗。如果在插入XML值之后創建索引,而且數據類型不匹配,索引創建也會失敗。
對于DB2 V9.5,這種行為是默認的,也可以使用IGNOREINVALIDVALUES子句顯式地指定這種行為。
下面的示例將會使用REJECTINVALIDVALUES為customer表的Cid屬性創建一個索引。
清單19.XML索引
db2CREATEINDEXindex1ONcustomer(info)
GENERATEKEYUSINGXMLPATTERN
'declaredefaultelementnamespace"http://posample.org";
/customerinfo/@cid'asSQLDOUBLEREJECTINVALIDVALUES
Index顧問程序和優化器增強
索引顧問程序可以用來獲得關于同時為XML和關系數據建立索引的建議。通過同時為XML和關系數據建立索引,用戶可以獲得良好的性能提升。DB2 9.5優化器使用兩種類型的索引來優化查詢,并幫助選擇最佳的查詢執行計劃。
DB2 DataWeb服務
使用DataWeb服務,可以將DB2 V9.5XML數據作為數據庫manipulation(ML)操作的Web服務公開。DataWeb服務(DES)將ML操作(如插入、更新、選擇和存儲過程)作為Web服務公開。可以通過Web瀏覽器、用戶客戶端使用基于HTTP的SOAP協議(例如POST和GET方法)來訪問這些Web服務。通過在現有數據庫工具中集成基于Eclipse的工具,可以對DataWeb服務提供支持。
控制中心也經過了更新,以處理XML數據。
結束語
DB2 9將XML作為一個新數據類型引入,而且提供了處理XML值的基礎設施。它提供了一些基本功能,比如查詢XML文檔、注冊模式和驗證XML文檔、使用SQL/XML在SQL和XQuery之間交互。DB2 V9.5增強了現有的功能,并提供了更多函數以有效地處理XML數據。
【編輯推薦】