DB2 9 for z/OS 是 IBM 的大型機關系數據庫管理系統的最新版本,它提供了許多新的特性和功能。這些新特性中最重要的是支持 XML 作為本機數據類型,但這並非是全部的改進。IBM 還添加了更多的 SQL 功能、改進了性能並擴展了在線模式修改等原有特性。
Beta 測試人員自 6 月開始試用這個軟件。現在,我們來討論這些即將出現的新特性。
開始
首先,我們看看運行 DB2 9 所需的前提條件。必須運行 z/OS V1.7,或者帶 Data Facility Storage Management Subsystem(DFSMS) V1.7、Language Environment Base Services 和 z/OS V1.7 Security Server Resource Access Control Facility(RACF)的 z/OS.e。但是,請記住,某些 DB2 9 功能(比如角色)需要 z/OS V1.8。另外,在遷移到 DB2 9 之前,必須處於 DB2 V8 的新功能模式並具有擴展的 Boot Strap Data Set(BSDS)。
DB2 9 for z/OS 可以在支持 z/Architecture 的任何處理器上運行,包括新的 Business Class 和 Enterprise Class 處理器、IBM System z9、zSerIEs z800、z890、z900、z990 或兼容的處理器。
XML 數據
DB2 9 中最大的技術進步是能夠將對結構化數據和非結構化數據的管理組合在一起。與 DB2 9 for Linux, Unix, and Windows(在今年早些時候發布)一樣,DB2 9 for z/OS 能夠以本機格式存儲 XML 數據。
“這有那麼重要嗎?” 您可能會問,“我們已經能夠使用 XML Extender 在 DB2 中存儲 XML 數據了,不是嗎?” 但是,DB2 9 改變了游戲規則。您將能夠在關系數據存儲庫中搜索和分析結構化數據,在 XML 存儲庫中搜索和分析非結構化數據而不需要對數據進行重新格式化。這種方式的新穎之處在於,它支持本機 XML,這意味著支持兩種存儲機制:傳統的 SQL/關系存儲和新的 XML 存儲(見圖 1)。
圖 1. DB2 新的 XML 存儲和界面
在 DB2 9 中存儲 XML 數據時,不再需要將它存儲為字符大對象(CLOB)或者將它分解進表中。DB2 9 將 XML 作為一種新的數據類型來處理,與關系數據不同,這種數據類型存儲在自然的層次結構中。DB2 9 提供了混合型數據服務器功能,這在行業中是首創的。盡管 XML 和關系數據是分開存儲的,但是它們都在同一個 DB2 引擎的控制之下。
那麼,在 DB2 9 中如何支持 XML 呢?將 XML 當作另一種數據類型。在 CREATE TABLE 語句使用 XML 數據類型,從而將列定義為 XML 類型的。對於表中的每一行,XML 類型的每個列可以容納一個 XML 文檔。盡管 XML 文檔在邏輯上與一行相關聯,但是 XML 和關系列以不同方式存儲。關系列存儲在我們熟知的傳統結構中,而 XML 數據存儲在層次化結構中。
無需為此擔心。IBM 已經將 XML 和關系數據無縫地集成在一起,從而簡化了應用程序開發,並用高度優化的 XML 索引優化了搜索性能。
DB2 9 支持 XPath 並包含用來支持 XML 模式定義的表。IBM DB2 實用程序已經得到擴展,可以用來管理 XML 數據。我不打算過分深入地討論 XML;只需指出 XML 支持是 DB2 9 中最大的新特性。但它不是惟一的改進,所以我們來看看其他進步。
在線模式修改
在線模式修改是 DB2 V8 提供的關鍵特性之一。在 DB2 9 中,在線模式修改得到了擴展,簡化了更多種類的數據庫定義修改,現在這個特性稱為 Database Definition On Demand。
在線表空間重組得到了重大的改進。在 DB2 V8 中,在對分區的表空間中的多個分區進行重組時,BUILD2 階段會花費很長時間。DB2 8 消除了 Data Partitioned Secondary Indexe(DPSI)的負擔;DB2 9 取消了所有輔助索引類型的 BUILD2 階段。
另一種新的在線模式修改功能支持通過克隆用一個表快速地替換另一個表。這種技術甚至能夠避免對包進行重新綁定。
DB2 9 中有一種新的表空間類型,它結合了分段表空間和分區表空間的性質。在使用時,DB2 會根據需要自動地添加分區以支持快速增長的數據。
在 DB2 9 中,還可以在 STOGROUP 上定義 SMS 構造(MGMTCLAS、DATACLASS 和 STORCLAS)並修改這些構造。還可以修改表空間和索引日志參數。
DB2 9 甚至增加了一個對以前的 DB2 代碼進行修改的新功能,這樣就不需要 IPL。
新的查詢功能
正如我們對新版本所期望的,DB2 9 提供了許多新的 SQL 功能。包括新的 SQL 數據操縱語句,以及 DECFLOAT(浮點小數)、BIGINT(8 字節的整數)、BINARY 和 VARBINARY 等新的數據類型。
DB2 for Linux, Unix, and Windows 在 SQL SELECT 語句中支持 INTERSECT 和 EXCEPT 已經有一段時間了;在 DB2 9 中,z/OS 平台上也提供了這種功能。可以使用這兩個集操作符簡化某些 SQL 語句。可以認為它們與 UNION 操作相似。
使用 INTERSECT 匹配結果集。如果兩個結果集中的數據是相同的,那麼它就會起作用。當指定 INTERSECT ALL 時,結果包含在兩個結果集中都存在的所有行。如果指定 INTERSECT 但是不帶 ALL 選項,那麼結果中會去掉重復的行。例如,下面的 SQL 將顯示在美國的既是顧客又是職員的所有人(不包含重復的行):
SELECT last_name, first_name, cust_num
FROM CUST
WHERE country = ‘USA’
INTERSECT
SELECT last_name, first_name, emp_num
FROM EMP
WHERE country = ‘USA’;
另一方面,EXCEPT 會組合來自兩個結果集的不匹配行。其他一些 DBMS 實現將這種操作稱為 MINUS 操作。當指定 EXCEPT ALL 時,結果包含在第二個表中沒有對應行的第一個結果表中的行,並保留所有重復的行。如果指定 EXCEPT 但是不帶 ALL 選項,那麼結果中會去掉重復的行。例如,下面的 SQL 將返回在 TABLE1 中存在而在 TABLE2 中不存在的條目:
SELECT item FROM TABLE1
EXCEPT
SELECT item FROM TABLE2;
在 DB2 9 中,可以在 fullselect 級上指定 ORDER BY 和 FETCH FIRST 子句,而不是只能在 SELECT 語句級上指定。這意味著可以對在 UNION(以及 INTERSECT 和 EXCEPT)的任意一側選擇的數據進行排序和限制。
DB2 9 還支持 MERGE 和 TRUNCATE 語句。MERGE 語句會將兩個表的數據合並在一起。目標表中與源表匹配的行會被更新,目標表中不存在的行會被插入。當然,可以使用多個選項控制 MERGE 的行為。TRUNCATE 語句可以快速地從表中刪除所有數據。
另一個出色的 SQL 新特性是,可以在 DELETE、UPDATE 和 MERGE 語句中執行 SELECT。DB2 9 允許從受到 DELETE、UPDATE 和 MERGE 語句影響的行中檢索列,這樣就用一個 SQL 調用替代了多個 SQL 調用。
INSTEAD OF 觸發器使我們能夠用觸發器替代視圖。在觸發時,會運行觸發器代碼,而不是觸發它的代碼。DB2 9 還改進了對本機 SQL 存儲過程的支持,它將存儲過程代碼集成進 DB2 引擎中,因此不必轉換為 C 代碼。
其他查詢功能包括 RANK、DENSE_RANK 和 ROW_NUMBER 的 OLAP 擴展,並用一些新功能加強了文本處理,比如大小寫不敏感的比較、按照文化進行排序以及對表達式進行索引。
安全性和法規遵從性
Sarbanes-Oxley 和 HIPAA 等政府法規對管理數據的方式做出了規定。為了遵從這些法規,需要對數據庫安全性和審計功能進行改進。
基於角色的安全授權是 DB2 9 中一項重要的改進。在授予和控制授權方面,角色比組或用戶更加靈活。角色是一組擁有同樣的安全特權的用戶。屬於某個角色的用戶可以執行這種角色有權執行的任務和訪問。
與使用用戶或組相比,使用角色來授予權限更容易管理。例如,假設 DBA 將訪問幾個表的權限授予一組用戶。要想改變表的數量,DBA 需要將新增的表的權限授予現有用戶。如果使用基於角色的安全機制,DBA 就只需聲明用戶屬於某個角色;然後在角色級上添加任何新的權力。
SELECT item FROM TABLE1
EXCEPT
SELECT item FROM TABLE2;
在 DB2 9 中,可以在 fullselect 級上指定 ORDER BY 和 FETCH FIRST 子句,而不是只能在 SELECT 語句級上指定。這意味著可以對在 UNION(以及 INTERSECT 和 EXCEPT)的任意一側選擇的數據進行排序和限制。
DB2 9 還支持 MERGE 和 TRUNCATE 語句。MERGE 語句會將兩個表的數據合並在一起。目標表中與源表匹配的行會被更新,目標表中不存在的行會被插入。當然,可以使用多個選項控制 MERGE 的行為。TRUNCATE 語句可以快速地從表中刪除所有數據。
另一個出色的 SQL 新特性是,可以在 DELETE、UPDATE 和 MERGE 語句中執行 SELECT。DB2 9 允許從受到 DELETE、UPDATE 和 MERGE 語句影響的行中檢索列,這樣就用一個 SQL 調用替代了多個 SQL 調用。
INSTEAD OF 觸發器使我們能夠用觸發器替代視圖。在觸發時,會運行觸發器代碼,而不是觸發它的代碼。DB2 9 還改進了對本機 SQL 存儲過程的支持,它將存儲過程代碼集成進 DB2 引擎中,因此不必轉換為 C 代碼。
其他查詢功能包括 RANK、DENSE_RANK 和 ROW_NUMBER 的 OLAP 擴展,並用一些新功能加強了文本處理,比如大小寫不敏感的比較、按照文化進行排序以及對表達式進行索引。
安全性和法規遵從性
Sarbanes-Oxley 和 HIPAA 等政府法規對管理數據的方式做出了規定。為了遵從這些法規,需要對數據庫安全性和審計功能進行改進。
基於角色的安全授權是 DB2 9 中一項重要的改進。在授予和控制授權方面,角色比組或用戶更加靈活。角色是一組擁有同樣的安全特權的用戶。屬於某個角色的用戶可以執行這種角色有權執行的任務和訪問。
與使用用戶或組相比,使用角色來授予權限更容易管理。例如,假設 DBA 將訪問幾個表的權限授予一組用戶。要想改變表的數量,DBA 需要將新增的表的權限授予現有用戶。如果使用基於角色的安全機制,DBA 就只需聲明用戶屬於某個角色;然後在角色級上添加任何新的權力。
DB2 9 還增加了一個可信任安全上下文,從而通過識別可信任連接(DDF、RRS 和 DSN)降低了管理密碼的復雜性。定義之後,通過已定義附件和源服務器進行連接的特定用戶可以與 DB2 建立可信任連接。在這個上下文中定義的用戶也可以定義為角色。
Secure Socket Layer(SSL)實現為線上的數據提供了加密機制,改進了 DRDA 使用的現有數據加密技術。
最後,DB2 9 改進了審計過濾,包括根據用戶 ID、工作站、應用程序名、包位置集合或名稱、集合 ID、關聯 ID 和角色包含或排除審計記錄。
性能改進
DB2 9 為改進性能提供了許多新特性。由於許多改進,INSERT 的性能大大提高了,這些改進包括對表達式進行索引的能力和隨機化索引鍵。日志記錄性能也大大提高了;提供了更大的索引頁大小選項(8K、16K 和 32K),從而減少了頁分割的數量。在 DB2 9 中頁分割的效率也更高了。
如果索引性能需要針對插入操作(而不是後續檢索)進行優化,那麼可以使用新的 APPEND 選項通知 DB2。如果需要對數據進行隨機化以避免插入熱點,那麼可以使用新的隨機化索引鍵功能。
DB2 9 還增加了用戶廣泛要求的 “無日志” 表空間(在這種表空間中數據修改不記入日志中)。使用這些表空間可以消除日志瓶頸;但是,可恢復性受到了限制。在 DB2 9 中,日志記錄特性可以打開和關閉,所以可以在關閉日志記錄的情況下進行一系列並行的高性能插入,之後再打開日志記錄。無論如何,要謹慎地使用這些表空間。另外請記住,對於單一的順序插入應用程序,它們不會顯著提高性能。
圖形化的 EXPLAIN 已經改進成 Optimization Support Center,增強了分析和改進查詢性能的設施。
硬件與 IBM System z 和 z/OS 的協作也提供了性能收益。DB2 以獨特方式使用 z/Architecture 指令集,而且最新的指令改進了可靠性、性能和可用性。而且,DB2 與硬盤和通道改變(DS8000,每秒 4 Gb 通道,MIDAW)的結合使用顯著提高了數據速率。
可以將工作負載轉移到 zIIP 上,從而降低擁有成本。在 V8 中,SQL 過程無法在 zIIP 上運行;但是,DB2 9 上的本機 SQL 過程語言使過程可以進行 zIIP 處理。
DB2 9 還做了內存改進。DDF 和 DBM1 在 bar 上使用共享內存。在 DB2 9 中,更多的 DB2 數據結構轉移到了 bar 上。
其他 DB2 9 性能改進包括更好的 LOB 性能,以及在使用大量變長列時更好的變長數據性能。
實用程序
DB2 9 提供了一些顯著的實用程序改進。REORG 取消了所有輔助索引類型的 BUILD2 階段。LOAD 和 REORG CPU 時間改進了 10% 到 15%。另外,DB2 提供了一個在線 REBUILD INDEX。
DB2 9 中取消的特性
在 DB2 中引入新特性和改進特性的同時,也取消了陳舊的特性。DB2 9 不再允許創建簡單的表空間。目前,DB2 將繼續支持現有的簡單表空間,但是不允許創建新的。請記住,遷移到 DB2 9 上之後,刪除的任何簡單表空間必須重建為分段表空間或分區表空間。
DB2 Estimator 以前可以從網上免費下載,但是對於 DB2 9 是不可用的。在 V7 中穩定下來的 Net.data 將不再得到支持。IBM WebSphere 是 IBM 用來將 DB2 數據交付給 Web 應用程序的戰略性解決方案。
JDBC/SQLJ Driver for OS/390 and z/OS 支持已經取消了。所有 Java 應用程序和 Java 例程必須修改為使用 IBM DB2 Driver for JDBC and SQLJ(以前稱為 DB2 Universal JDBC Driver)。
另外,DB2 9 不再支持 DB2 管理的存儲過程。需要將所有東西遷移到 WLM 管理的存儲過程空間。
取消的其他特性包括:
AIV Extender
Text Extender
Net Search Extender
進一步學習
本文可以作為您學習 DB2 9 的起點。
DB2 9 提供了許多令人振奮的新特性,使 DB2 for z/OS 數據服務器保持在性能、可用性和功能性方面領先。我會繼續使用它。