簡(jiǎn)介: 來(lái)自 DB2 Magazine 中文版。大型機(jī) DB2 數(shù)據(jù)服務(wù)器配備了新的混合型 XML/關(guān)系引擎。安全改進(jìn)、SQL 升級(jí)和性能改進(jìn)使其更加完善。
發(fā)布日期: 2006 年 11 月 22 日
級(jí)別: 初級(jí)
訪問(wèn)情況 3 次瀏覽
建議: 0 (添加評(píng)論)
DB2 9 for z/OS 是 IBM 的大型機(jī)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的最新版本,它提供了許多新的特性和功能。這些新特性中最重要的是支持 XML 作為本機(jī)數(shù)據(jù)類(lèi)型,但這并非是全部的改進(jìn)。IBM 還添加了更多的 SQL 功能、改進(jìn)了性能并擴(kuò)展了在線模式修改等原有特性。
Beta 測(cè)試人員自 6 月開(kāi)始試用這個(gè)軟件?,F(xiàn)在,我們來(lái)討論這些即將出現(xiàn)的新特性。
首先,我們看看運(yùn)行 DB2 9 所需的前提條件。必須運(yùn)行 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。但是,請(qǐng)記住,某些 DB2 9 功能(比如角色)需要 z/OS V1.8。另外,在遷移到 DB2 9 之前,必須處于 DB2 V8 的新功能模式并具有擴(kuò)展的 Boot Strap Data Set(BSDS)。
DB2 9 for z/OS 可以在支持 z/Architecture 的任何處理器上運(yùn)行,包括新的 Business Class 和 Enterprise Class 處理器、IBM System z9、zSeries z800、z890、z900、z990 或兼容的處理器。
DB2 9 中最大的技術(shù)進(jìn)步是能夠?qū)?duì)結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的管理組合在一起。與 DB2 9 for Linux, Unix, and Windows(在今年早些時(shí)候發(fā)布)一樣,DB2 9 for z/OS 能夠以本機(jī)格式存儲(chǔ) XML 數(shù)據(jù)。
“這有那么重要嗎?” 您可能會(huì)問(wèn),“我們已經(jīng)能夠使用 XML Extender 在 DB2 中存儲(chǔ) XML 數(shù)據(jù)了,不是嗎?” 但是,DB2 9 改變了游戲規(guī)則。您將能夠在關(guān)系數(shù)據(jù)存儲(chǔ)庫(kù)中搜索和分析結(jié)構(gòu)化數(shù)據(jù),在 XML 存儲(chǔ)庫(kù)中搜索和分析非結(jié)構(gòu)化數(shù)據(jù)而不需要對(duì)數(shù)據(jù)進(jìn)行重新格式化。這種方式的新穎之處在于,它支持本機(jī) XML,這意味著支持兩種存儲(chǔ)機(jī)制:傳統(tǒng)的 SQL/關(guān)系存儲(chǔ)和新的 XML 存儲(chǔ)(見(jiàn)圖 1)。
在 DB2 9 中存儲(chǔ) XML 數(shù)據(jù)時(shí),不再需要將它存儲(chǔ)為字符大對(duì)象(CLOB)或者將它分解進(jìn)表中。DB2 9 將 XML 作為一種新的數(shù)據(jù)類(lèi)型來(lái)處理,與關(guān)系數(shù)據(jù)不同,這種數(shù)據(jù)類(lèi)型存儲(chǔ)在自然的層次結(jié)構(gòu)中。DB2 9 提供了混合型數(shù)據(jù)服務(wù)器功能,這在行業(yè)中是首創(chuàng)的。盡管 XML 和關(guān)系數(shù)據(jù)是分開(kāi)存儲(chǔ)的,但是它們都在同一個(gè) DB2 引擎的控制之下。
那么,在 DB2 9 中如何支持 XML 呢?將 XML 當(dāng)作另一種數(shù)據(jù)類(lèi)型。在 CREATE TABLE
語(yǔ)句使用 XML 數(shù)據(jù)類(lèi)型,從而將列定義為 XML 類(lèi)型的。對(duì)于表中的每一行,XML 類(lèi)型的每個(gè)列可以容納一個(gè) XML 文檔。盡管 XML 文檔在邏輯上與一行相關(guān)聯(lián),但是 XML 和關(guān)系列以不同方式存儲(chǔ)。關(guān)系列存儲(chǔ)在我們熟知的傳統(tǒng)結(jié)構(gòu)中,而 XML 數(shù)據(jù)存儲(chǔ)在層次化結(jié)構(gòu)中。
無(wú)需為此擔(dān)心。IBM 已經(jīng)將 XML 和關(guān)系數(shù)據(jù)無(wú)縫地集成在一起,從而簡(jiǎn)化了應(yīng)用程序開(kāi)發(fā),并用高度優(yōu)化的 XML 索引優(yōu)化了搜索性能。
DB2 9 支持 XPath 并包含用來(lái)支持 XML 模式定義的表。IBM DB2 實(shí)用程序已經(jīng)得到擴(kuò)展,可以用來(lái)管理 XML 數(shù)據(jù)。我不打算過(guò)分深入地討論 XML;只需指出 XML 支持是 DB2 9 中最大的新特性。但它不是惟一的改進(jìn),所以我們來(lái)看看其他進(jìn)步。
在線模式修改是 DB2 V8 提供的關(guān)鍵特性之一。在 DB2 9 中,在線模式修改得到了擴(kuò)展,簡(jiǎn)化了更多種類(lèi)的數(shù)據(jù)庫(kù)定義修改,現(xiàn)在這個(gè)特性稱為 Database Definition On Demand。
在線表空間重組得到了重大的改進(jìn)。在 DB2 V8 中,在對(duì)分區(qū)的表空間中的多個(gè)分區(qū)進(jìn)行重組時(shí),BUILD2 階段會(huì)花費(fèi)很長(zhǎng)時(shí)間。DB2 8 消除了 Data Partitioned Secondary Indexe(DPSI)的負(fù)擔(dān);DB2 9 取消了所有輔助索引類(lèi)型的 BUILD2 階段。
另一種新的在線模式修改功能支持通過(guò)克隆用一個(gè)表快速地替換另一個(gè)表。這種技術(shù)甚至能夠避免對(duì)包進(jìn)行重新綁定。
DB2 9 中有一種新的表空間類(lèi)型,它結(jié)合了分段表空間和分區(qū)表空間的性質(zhì)。在使用時(shí),DB2 會(huì)根據(jù)需要自動(dòng)地添加分區(qū)以支持快速增長(zhǎng)的數(shù)據(jù)。
在 DB2 9 中,還可以在 STOGROUP
上定義 SMS 構(gòu)造(MGMTCLAS
、DATACLASS
和 STORCLAS
)并修改這些構(gòu)造。還可以修改表空間和索引日志參數(shù)。
DB2 9 甚至增加了一個(gè)對(duì)以前的 DB2 代碼進(jìn)行修改的新功能,這樣就不需要 IPL。
正如我們對(duì)新版本所期望的,DB2 9 提供了許多新的 SQL 功能。包括新的 SQL 數(shù)據(jù)操縱語(yǔ)句,以及 DECFLOAT
(浮點(diǎn)小數(shù))、BIGINT
(8 字節(jié)的整數(shù))、BINARY
和 VARBINARY
等新的數(shù)據(jù)類(lèi)型。
DB2 for Linux, Unix, and Windows 在 SQL SELECT 語(yǔ)句中支持 INTERSECT
和 EXCEPT
已經(jīng)有一段時(shí)間了;在 DB2 9 中,z/OS 平臺(tái)上也提供了這種功能??梢允褂眠@兩個(gè)集操作符簡(jiǎn)化某些 SQL 語(yǔ)句??梢哉J(rèn)為它們與 UNION
操作相似。
使用 INTERSECT
匹配結(jié)果集。如果兩個(gè)結(jié)果集中的數(shù)據(jù)是相同的,那么它就會(huì)起作用。當(dāng)指定 INTERSECT
ALL 時(shí),結(jié)果包含在兩個(gè)結(jié)果集中都存在的所有行。如果指定 INTERSECT
但是不帶 ALL 選項(xiàng),那么結(jié)果中會(huì)去掉重復(fù)的行。例如,下面的 SQL 將顯示在美國(guó)的既是顧客又是職員的所有人(不包含重復(fù)的行):
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
會(huì)組合來(lái)自兩個(gè)結(jié)果集的不匹配行。其他一些 DBMS 實(shí)現(xiàn)將這種操作稱為 MINUS
操作。當(dāng)指定 EXCEPT ALL
時(shí),結(jié)果包含在第二個(gè)表中沒(méi)有對(duì)應(yīng)行的第一個(gè)結(jié)果表中的行,并保留所有重復(fù)的行。如果指定 EXCEPT
但是不帶 ALL 選項(xiàng),那么結(jié)果中會(huì)去掉重復(fù)的行。例如,下面的 SQL 將返回在 TABLE1 中存在而在 TABLE2 中不存在的條目:
SELECT item FROM TABLE1 EXCEPT SELECT item FROM TABLE2; |
在 DB2 9 中,可以在 fullselect 級(jí)上指定 ORDER BY
和 FETCH FIRST
子句,而不是只能在 SELECT
語(yǔ)句級(jí)上指定。這意味著可以對(duì)在 UNION
(以及 INTERSECT
和 EXCEPT
)的任意一側(cè)選擇的數(shù)據(jù)進(jìn)行排序和限制。
DB2 9 還支持 MERGE
和 TRUNCATE
語(yǔ)句。MERGE
語(yǔ)句會(huì)將兩個(gè)表的數(shù)據(jù)合并在一起。目標(biāo)表中與源表匹配的行會(huì)被更新,目標(biāo)表中不存在的行會(huì)被插入。當(dāng)然,可以使用多個(gè)選項(xiàng)控制 MERGE
的行為。TRUNCATE
語(yǔ)句可以快速地從表中刪除所有數(shù)據(jù)。
另一個(gè)出色的 SQL 新特性是,可以在 DELETE
、UPDATE
和 MERGE
語(yǔ)句中執(zhí)行 SELECT
。DB2 9 允許從受到 DELETE
、UPDATE
和 MERGE
語(yǔ)句影響的行中檢索列,這樣就用一個(gè) SQL 調(diào)用替代了多個(gè) SQL 調(diào)用。
INSTEAD OF
觸發(fā)器使我們能夠用觸發(fā)器替代視圖。在觸發(fā)時(shí),會(huì)運(yùn)行觸發(fā)器代碼,而不是觸發(fā)它的代碼。DB2 9 還改進(jìn)了對(duì)本機(jī) SQL 存儲(chǔ)過(guò)程的支持,它將存儲(chǔ)過(guò)程代碼集成進(jìn) DB2 引擎中,因此不必轉(zhuǎn)換為 C 代碼。
其他查詢功能包括 RANK
、DENSE_RANK
和 ROW_NUMBER
的 OLAP 擴(kuò)展,并用一些新功能加強(qiáng)了文本處理,比如大小寫(xiě)不敏感的比較、按照文化進(jìn)行排序以及對(duì)表達(dá)式進(jìn)行索引。
Sarbanes-Oxley 和 HIPAA 等政府法規(guī)對(duì)管理數(shù)據(jù)的方式做出了規(guī)定。為了遵從這些法規(guī),需要對(duì)數(shù)據(jù)庫(kù)安全性和審計(jì)功能進(jìn)行改進(jìn)。
基于角色的安全授權(quán)是 DB2 9 中一項(xiàng)重要的改進(jìn)。在授予和控制授權(quán)方面,角色比組或用戶更加靈活。角色是一組擁有同樣的安全特權(quán)的用戶。屬于某個(gè)角色的用戶可以執(zhí)行這種角色有權(quán)執(zhí)行的任務(wù)和訪問(wèn)。
與使用用戶或組相比,使用角色來(lái)授予權(quán)限更容易管理。例如,假設(shè) DBA 將訪問(wèn)幾個(gè)表的權(quán)限授予一組用戶。要想改變表的數(shù)量,DBA 需要將新增的表的權(quán)限授予現(xiàn)有用戶。如果使用基于角色的安全機(jī)制,DBA 就只需聲明用戶屬于某個(gè)角色;然后在角色級(jí)上添加任何新的權(quán)力。
DB2 9 還增加了一個(gè)可信任安全上下文,從而通過(guò)識(shí)別可信任連接(DDF、RRS 和 DSN)降低了管理密碼的復(fù)雜性。定義之后,通過(guò)已定義附件和源服務(wù)器進(jìn)行連接的特定用戶可以與 DB2 建立可信任連接。在這個(gè)上下文中定義的用戶也可以定義為角色。
Secure Socket Layer(SSL)實(shí)現(xiàn)為線上的數(shù)據(jù)提供了加密機(jī)制,改進(jìn)了 DRDA 使用的現(xiàn)有數(shù)據(jù)加密技術(shù)。
最后,DB2 9 改進(jìn)了審計(jì)過(guò)濾,包括根據(jù)用戶 ID、工作站、應(yīng)用程序名、包位置集合或名稱、集合 ID、關(guān)聯(lián) ID 和角色包含或排除審計(jì)記錄。
DB2 9 為改進(jìn)性能提供了許多新特性。由于許多改進(jìn),INSERT
的性能大大提高了,這些改進(jìn)包括對(duì)表達(dá)式進(jìn)行索引的能力和隨機(jī)化索引鍵。日志記錄性能也大大提高了;提供了更大的索引頁(yè)大小選項(xiàng)(8K、16K 和 32K),從而減少了頁(yè)分割的數(shù)量。在 DB2 9 中頁(yè)分割的效率也更高了。
如果索引性能需要針對(duì)插入操作(而不是后續(xù)檢索)進(jìn)行優(yōu)化,那么可以使用新的 APPEND
選項(xiàng)通知 DB2。如果需要對(duì)數(shù)據(jù)進(jìn)行隨機(jī)化以避免插入熱點(diǎn),那么可以使用新的隨機(jī)化索引鍵功能。
DB2 9 還增加了用戶廣泛要求的 “無(wú)日志” 表空間(在這種表空間中數(shù)據(jù)修改不記入日志中)。使用這些表空間可以消除日志瓶頸;但是,可恢復(fù)性受到了限制。在 DB2 9 中,日志記錄特性可以打開(kāi)和關(guān)閉,所以可以在關(guān)閉日志記錄的情況下進(jìn)行一系列并行的高性能插入,之后再打開(kāi)日志記錄。無(wú)論如何,要謹(jǐn)慎地使用這些表空間。另外請(qǐng)記住,對(duì)于單一的順序插入應(yīng)用程序,它們不會(huì)顯著提高性能。
IBM 還對(duì) DB2 優(yōu)化做了幾項(xiàng)改進(jìn),包括 DB2 統(tǒng)計(jì)數(shù)據(jù)的柱狀圖,使 DB2 能夠更好地理解在范圍內(nèi)傾斜的數(shù)據(jù)。DB2 優(yōu)化器可以跨查詢塊優(yōu)化進(jìn)行部署,不再只限于每次一個(gè)查詢塊。另外,稀疏索引和內(nèi)存內(nèi)數(shù)據(jù)緩存技術(shù)(只在特殊情況下使用)在 DB2 9 中已經(jīng)得到改進(jìn),可以用于更多的場(chǎng)合。在星型模式中使用多個(gè)索引的能力也已經(jīng)改進(jìn)了。
圖形化的 EXPLAIN
已經(jīng)改進(jìn)成 Optimization Support Center,增強(qiáng)了分析和改進(jìn)查詢性能的設(shè)施。
硬件與 IBM System z 和 z/OS 的協(xié)作也提供了性能收益。DB2 以獨(dú)特方式使用 z/Architecture 指令集,而且最新的指令改進(jìn)了可靠性、性能和可用性。而且,DB2 與硬盤(pán)和通道改變(DS8000,每秒 4 Gb 通道,MIDAW)的結(jié)合使用顯著提高了數(shù)據(jù)速率。
可以將工作負(fù)載轉(zhuǎn)移到 zIIP 上,從而降低擁有成本。在 V8 中,SQL 過(guò)程無(wú)法在 zIIP 上運(yùn)行;但是,DB2 9 上的本機(jī) SQL 過(guò)程語(yǔ)言使過(guò)程可以進(jìn)行 zIIP 處理。
DB2 9 還做了內(nèi)存改進(jìn)。DDF 和 DBM1 在 bar 上使用共享內(nèi)存。在 DB2 9 中,更多的 DB2 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)移到了 bar 上。
其他 DB2 9 性能改進(jìn)包括更好的 LOB 性能,以及在使用大量變長(zhǎng)列時(shí)更好的變長(zhǎng)數(shù)據(jù)性能。
DB2 9 提供了一些顯著的實(shí)用程序改進(jìn)。REORG
取消了所有輔助索引類(lèi)型的 BUILD2 階段。LOAD
和 REORG CPU
時(shí)間改進(jìn)了 10% 到 15%。另外,DB2 提供了一個(gè)在線 REBUILD INDEX
。
在 DB2 中引入新特性和改進(jìn)特性的同時(shí),也取消了陳舊的特性。DB2 9 不再允許創(chuàng)建簡(jiǎn)單的表空間。目前,DB2 將繼續(xù)支持現(xiàn)有的簡(jiǎn)單表空間,但是不允許創(chuàng)建新的。請(qǐng)記住,遷移到 DB2 9 上之后,刪除的任何簡(jiǎn)單表空間必須重建為分段表空間或分區(qū)表空間。
DB2 Estimator 以前可以從網(wǎng)上免費(fèi)下載,但是對(duì)于 DB2 9 是不可用的。在 V7 中穩(wěn)定下來(lái)的 Net.data 將不再得到支持。IBM WebSphere 是 IBM 用來(lái)將 DB2 數(shù)據(jù)交付給 Web 應(yīng)用程序的戰(zhàn)略性解決方案。
JDBC/SQLJ Driver for OS/390 and z/OS 支持已經(jīng)取消了。所有 Java 應(yīng)用程序和 Java 例程必須修改為使用 IBM DB2 Driver for JDBC and SQLJ(以前稱為 DB2 Universal JDBC Driver)。
另外,DB2 9 不再支持 DB2 管理的存儲(chǔ)過(guò)程。需要將所有東西遷移到 WLM 管理的存儲(chǔ)過(guò)程空間。
取消的其他特性包括:
本文可以作為您學(xué)習(xí) DB2 9 的起點(diǎn)。請(qǐng)從 IBM 那里了解更多細(xì)節(jié)。(請(qǐng)將下面的頁(yè)面加為書(shū)簽,從而及時(shí)了解 DB2 的最新版本和 IBM 支持:ibm.com/db2/zos/support/plc。)
DB2 9 提供了許多令人振奮的新特性,使 DB2 for z/OS 數(shù)據(jù)服務(wù)器保持在性能、可用性和功能性方面領(lǐng)先。我會(huì)繼續(xù)使用它。
Craig S. Mullins is a Director of Technology Planning for BMC Software, located in Houston, Texas. Craig has extensive experience in the field of database management having worked as an application developer, a DBA, and an instructor with multiple database management systems including DB2, Oracle, and SQL Server. Previously, Craig worked as a Research Director with the Gartner Group covering the field of database administration. Craig is the author of DB2 Developer's Guide, the industry-leading book on DB2 for OS/390, and a new book titled Database Administration: Practices and Procedures, which was published by Addison-Wesley in June 2002. Additionally, he is a contributing editor and regular columnist at www.dbazine.com, he writes the monthly DBA Corner column for Database Trends & Application magazine, and he writes the quarterly Database Report column for The Data Administration Newsletter portal. You can contact Craig via his Web site at http://www.craigsmullins.com.
聯(lián)系客服