DB2 9 Viper快速入門
DB2數據庫在開發過程中開發出了很多新的版本,功能性較之前有了很大的提高,其中DB2 9 Viper就是其中之一,下文中詳細為大家介紹DB2 9 Viper。
為了幫助您快速掌握 DB2 自身的 XML 特性,請完成幾個普通的任務,比如:
創建用于管理 XML 數據的數據庫對象,包括一個測試數據庫、一些示例表和視圖。
使用 INSERT 和 IMPORT 語句將 XML 數據填充到數據庫中。
驗證您的 XML 數據。使用 DB2 開發和注冊您的 XML 模式,并在導入數據時使用 XMLVALIDATE 選項。
后續文章將包括其他主題,比如使用 SQL 查詢、更新和刪除 DB2 XML 數據,使用 XQuery 查詢 DB2 XML 數據,開發存取 DB2 XML 數據的 Java 應用程序和 Web 組件。
創建數據庫對象
讓我們先來創建一個單獨的 DB2 Unicode 數據庫。在 DB2 Viper 中,只有 Unicode 數據庫才能同時存儲 XML 文檔和 SQL 數據的更多傳統格式,比如整數、日期/時間、變長字符串,等等。隨后,您將在這個數據庫中創建對象來管理 XML 和其他類型的數據。
創建測試數據庫
為了創建一個新的 DB2 Unicode “測試” 數據庫,打開 DB2 命令窗口,發出語句來指定 Unicode 編碼集合和支持的區域,如 清單 1:
清單 1. 創建用于存儲 XML 數據的數據庫
create database test using codeset UTF-8 territory us
旦創建了 Unicode 數據庫,您就不需要發出任何專門的命令或采取任何進一步措施來使 DB2 能夠以它自身分層的格式存儲 XML 數據,因為您的 DB2 系統已經準備好了。
創建示例表
為了存儲 XML 數據,請創建包含一個或多個 XML 列的表。這些表充當文檔集合的邏輯容器;在幕后,DB2 實際上使用了不同的存儲方案來存儲 XML 和非 XML 數據。然而,使用表作為管理各種受支持的數據格式的邏輯對象,簡化了管理和應用程序開發問題,特別是當需要在一個單獨的查詢中集成不同的數據格式時。
您可以對 DB2 表進行定義,使其只包含 XML 列、只包含傳統 SQL 類型的列或者同時包含兩者。本文對后一種情況進行了建模。清單 2 中的例子連接到 “測試” 數據庫,并創建了兩個表。***個是 “items” 表,追蹤關于貨物的銷售情況和顧客對貨物的評價信息。第二個表追蹤的是關于 “客戶” 的信息,包括關于聯系信息的數據。注意 “comments” 和 “contactinfo” 是基于新的 DB2 XML 數據類型,而所有其他的列都是基于傳統 SQL 數據類型的。
清單 2. 創建用于 XML 數據的表
connect to test;
create table items (
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
);
create table clients(
id int primary key not null,
name varchar(50),
status varchar(10),
contactinfo xml
);
如果您仔細地查看這些表定義例子,您將注意到 “comments” 和 “contactinfo” 列都沒有進行 XML 文檔內部結構的定義。這是 DB2 的一個重要特性。用戶不需要為了存儲數據而預定義一個 XML 數據結構(或者,更準確地說是一個 XML 模式)。事實上,DB2 可以在一個單獨的列中存儲任何格式良好的 XML 文檔,這意味著不同模式的 XML 文檔 —— 或沒有和任何注冊的模式關聯的文檔 —— 都可以存儲在相同的 DB2 列中。當我們討論如何在 DB2 中存儲數據時,本文將深入討論這個特性。
創建視圖
您可以隨意地在包含 XML 數據的表上創建視圖,就像您可以在只包含傳統 SQL 數據類型的表上創建視圖一樣。清單 3 中的例子創建具有 “Gold” 狀態的客戶的一個視圖:
清單 3. 創建一個包含 XML 數據的視圖
create view goldview as
select id, name, contactinfo
from clients where status='Gold';
關于索引的一點說明
***,沒有必要在 XML 列上創建專門的索引來提高數據的查詢速度。因為這是一篇介紹性文章,而且示例數據很少,所以本文不會涵蓋到那個主題。然而,在生產環境中,定義一個適當的索引對實現***的性能來說很關鍵。查看本文結尾部分的 “參考資料”,以助于了解 DB2 的新索引技術。