IBM DB2

IBM DB2企業伺服器版本，是美國IBM公司發展的一套關係型資料庫管理系統。它主要的執行環境為UNIX（包括IBM自家的AIX）、Linux、IBM i（舊稱OS/400）、Z/OS，以及Windows伺服器版本。DB2也提供性能強大的各種IBM InfoSphere Warehouse版本。和DB2同級的還有另外一個關聯式資料庫管理系統：Informix，它在2001年被IBM收購。

## 歷史

DB2擁有悠久的歷史並且被很多人認為是最早使用SQL的資料庫產品。

DB2這個名字最早被用於資料庫管理系統（Database Management System, DBMS）是在1983年當IBM發布基於MVS大型機平台的DB2產品時。此前，一個叫做SQL/DS的同類產品被應用於VM大型機。更早期的38系統平台同樣也包含一個關係型資料庫管理系統。關係型系統（System R），是一個在70年代開發的檢索原型。DB2可以追溯至70年代初，當時在IBM工作的埃德加·科德博士描述了關係型資料庫理論並在1970年6月發表數據處理模型。為了應用這個模型科德需要一種被他稱為Alpha的關係型資料庫的語言。那個時候IBM並不相信科德想法的潛力，只是把這個項目的實施交給了一個並不在科德監管之下的程序小組，而這個小組違背了科德的關係型模型中的一些基礎理論；這個項目的實施結果就是Structured English QUEry語言（SEQUEL）。當IBM公布其第一個關係型資料庫產品時，他們希望同樣能有一款可用於商業用途的子語言，因此IBM重新開發了SEQUEL並且命名其為SQL。SQL，與流行的看法相反，並不是「依靠允許深層分支打破了面向結構的語言的基本規則」（Allen G. Taylor, 2004）的Structured Query Language的縮寫。

當收購了Illustra並通過引進他們的Informix Universal Server使他們的資料庫引擎成為後，甲骨文公司和IBM跟隨著擴展了他們資料庫引擎能力從而也能處理關係型對象。更進一步的是，在2001年，IBM購買了並在第二年將Informix技術整合在DB2產品組中。今天，DB2可以被技術性地認為是一個。

在很多年裡，DB2作為一個全功能的資料庫管理系統，被IBM大型機所專用。此後IBM將DB2帶向了其它平台，包括OS/2、UNIX以及Windows伺服器，然後是Linux（包括Linux on zSeries）和PDAs。這一轉變主要發生在90年代。DB2大型機版本的結構靈感部分來源於IBM DL/1和IBM IMS，這兩者最初都是層次型資料庫然後轉變為網路型（CODASYL）資料庫。DB2也被嵌入在了用於IBM System i（i系列，以前的AS/400）的i5/OS作業系統中，並且也有可用於z/VSE和z/VM的版本。

DB2 LUW(Linux, Unix, Windows)的一個較早的代碼版本是OS/2一個擴展版本組件Database Manager的一部分。IBM多次擴展了Database Manager的功能，包括在區域網內允許遠程共享訪問的分配式資料庫功能。最終IBM宣布在Database Manager的代碼中存在不可克服的複雜度問題，並且作出了困難的決定，在其多倫多實驗室完全重寫了這個軟體。新版本的Database Manager被稱為DB2，如同其在大型機上的前身一樣，同樣被運行在OS/2和RS/6000平台上，並分別被稱為DB2/2和DB2/6000。基於不同代碼的其它版本的DB2也遵循同樣的命名規則被叫做DB2/400（應用於AS/400），DB2/VSE（應用於 DOS/VSE環境）和 DB2/VM（應用於VM作業系統）。IBM的律師終止了這種簡便的命名方式並決定所有的產品都要被命名為「產品 for 平台」（例如，DB2 for OS/390）。接下來的新一代基於大型機和伺服器的產品被命名為DB2 Universal Database（DB2 UDB），但是這給DBMS的版本區分帶來了很大的混淆（大型機版本或者伺服器版本），出於這一點考慮，DB2大型機版本和伺服器版本使用完全不同的語言開發（大型機版本使用PL/S，伺服器版本使用C++），但是兩者共享非常相似的功能並使用相同的SQL優化的構架：Starburst Optimizer。

多年來DB2跟隨更新並促進了大量的硬體更新，特別是在IBM System z上的比如Parallel Sysplex數據共享特性。事實上，DB2 UDB Version 8 for z/OS現在只能在64位系統上運行而不能運行在較早的處理器上，DB2 for z/OS保留了一些與眾不同的軟體特性為一些尖端客戶服務。雖然最終的軟硬體升級都歸結於IBM大型機，但在一定程度上這種擴展也發生在其它的平台上，IBM的軟體工程師們總和對應的硬體工程師們一起協同合作。

在90年代中期，IBM發布了一組最初應用在AIX上的被稱為DB2 Parallel Edition的實現。此版本通過提供無分享架構（shared nothing architecture）而允許軟體更強的可伸縮性。在這個構架中一個單獨的大型資料庫被分割跨接在多個IBM伺服器上並通過高速連結來通訊。這個DB2版本最終被接入所有的Linux、UNIX以及Windows(LUW)平台並被重新命名為DB2 UDB Enterprise Server Edition(ESE)。IBM現在將這款產品稱為Database Partitioning Feature(DPF)並把它作為DB2旗艦企業級產品的附加功能售賣。

2006年年中，IBM宣布應用在分布式平台以及z/OS上的DB2 9代碼名稱為「Viper」。DB2 9 for z/OS 於2007年年初被公布。IBM聲明這個全新的DB2將是第一款「天然」存儲XML的關係型資料庫。其它的改進包括在分布式平台上OLTP相關的升級，z/OS 商業智能（Business intelligence）／數據倉庫（data warehousing）相關升級，更多的自我校正和自我管理特性，附加的64位機的開發（專為在z/OS上的虛擬存儲而開發），在z/OS上存儲過程（stored procedure）性能的提高，並且繼續提高在z/OS和分布式平台之間的SQL詞表的收斂。

基於分布式平台的DB2 9在2006年7月28日全球售賣，DB2 9 Express的價格自4，874美元／處理器或者165美元／使用者（至少5個使用者）起，包括一年的技術支持。基於z/OS的DB2價格從大約4，450／月起，包括技術支持。

## 版本

DB2有眾多的版本，或者是許可證。為了弱化「版本」的概念增強可選擇性，IBM允許客戶不購買他們不需要的特性。示例版本包括Express、Workgroup和Enterprise版本。基於Linux/UNIX/Windows的最複雜的版本是DB2 Data Warehouse Enterprise Edition，縮寫為DB2 DWE。這個版本偏重於混合工作負荷（線上交易處理和數據倉庫）和商業智能的實現。DB2 DWE包括一些商務智能的特性例如ETL、數據發掘、OLAP加速以及in-line analytics。

基於z/OS的DB2有著自己的許可證系列。自Version 8開始，IBM使基於z/OS的DB2和其它平台的DB2更為接近。（例如以前在SQL詞表中存在很顯著的差異。）基於z/OS的DB2有一些專有特性——引人注意的多級安全模式（Multi-level Security，MLS）、巨大的表容量以及硬體輔助壓縮——這些特性取決於特殊的運行環境以及客戶的需要。基於z/OS的DB2總是以領導OLTP性能和能力而聞名，並且它支持重要商務操作的可靠性和有效性同樣廣為人知。但是現在z/OS版本開始同樣具備了商業智能特性，例如物化查詢表（materialized query tables, MQTs）和星型架構（star schema）。Oracle的CEO Larry Ellison評價DB2 for z/OS為他所尊重和欽佩的一個資料庫競爭對手。

2006年1月30日，IBM發布了一個DB2免費版本DB2 Express-C。這是對最近公布的Oracle免費版本10g以及微軟免費版本SQL Server的回應。和Oracle以及微軟的免費版本不同，Express-C，它不限制使用者數量以及資料庫的大小。DB2 Express-C 8.2版本和9.1版本對運行伺服器的硬體有所限制，而DB2 Express-C 9.5卻可以在Windows以及Linux的任何大小的機器上運行，只是資料庫引擎最多只能使用2個CPU內核和2GB的記憶體。2007年IBM提供了一個為期一年的服務支持產品叫做Fixed Term License(FTL)，對每一台伺服器只要你每年付3000美元，將會得到Express-C一年的電話技術支持。購買FTL後DB2 Express-C引擎可以被允許用於高達4核的CPU以及4GB的記憶體。沒有購買FTL的DB2 Express-C使用者也可以在免費公開論壇上得到IBM技術人員和其他DB2使用者的技術支持和幫助。

## 競爭對手

自80年代中期開始，資料庫管理軟體市場就被Oracle所占據。2004年5月3日，IBM資料庫開發和銷售的高層人員，Janet Perna，宣布他們的主要競爭對手為Oracle的高級事務處理（advanced transaction handling）以及Teradata的決策支持系統（decision support systems）（例如數據倉庫）。但是，在較小的市場中也有其他的競爭者，包括Microsoft SQL Server（只能被應用於Microsoft Windows），開源軟體產品例如Firebird、PostgreSQL和MySQL，以及針對特殊使用者群的產品如Sybase和MaxDB。

在資料庫管理軟體競爭市場，資料庫可以成兆兆字節的增長，IBM的資料庫分區特性（Database Partitioning Feature, DPF）通常被用來和Oracle的Real Application Clusters（RAC）對比，RAC是一個共享硬碟的實現，作為Oracle Parallel Server（OPS）較早地為人所知。雖然DB2在價格上沒有明顯的優勢，但DB2 for z/OS似乎少有直接的競爭對手，值得注意的是，Oracle正在吸引客戶到其Linux on zSeries產品上。CA-Datacom和Software AG的ADABAS也在基於z/OS的關係型資料庫上進行競爭，而且也有一些其它的針對特殊使用者的產品占有一定的市場（如Model 204、SUPRA SQL、NOMAD等）。Oracle擁有可用於z/OS的31位RDBMS。非關係型資料庫競爭產品包括IMS、CA-IDMS等。

在Transaction Processing Performance Council的網站上，IBM和DB2常常居於TPC-C and TPC-H行業水準的首位。

2006年IBM通過發布一系列整合了DB2 Warehouse Edition和IBM system p (AIX)或者IBM system x (Linux)伺服器的預架構軟硬體系統的產品線來應對在日漸顯現的數據倉庫應用上的競爭。這個"warehouse appliance-like"系統系列產品被命名為IBM Balanced Configuration Unit，縮寫為BCU，此系列產品瞄準以Netezza和DATAllegro為代表的倉庫應用市場，但是它使用了DB2全功能特徵並藉此區別於單一面向數據倉庫的RDBMS。

## 技術資訊

從命令行方式到圖形使用者界面都可以使用DB2。命令行界面要求對產品知識的更多了解同樣也更容易編寫腳本並自動執行。圖形界面是一個多平台的Java客戶端，它包含了多種針對新手使用者的嚮導服務。DB2同時支持SQL和XQuery。DB2本地執行XML數據存儲，在這裡XML數據以XML（不是關係型數據或者CLOB數據）格式存儲以更快地通過使用XQuery進行存取。

DB2擁有基於.NET CLI, Java, Python, Perl, PHP, Ruby, C++, C, REXX, PL/I, COBOL, RPG, FORTRAN的APIs，以及很多其它的程序語言。DB2同樣支持整合於Eclipse和Visual Studio .NET整合開發環境之中。

## 錯誤處理

DB2電腦程式一個重要的特徵就是錯誤處理。SQL communications area（SQLCA）結構曾一度被專門用於DB2程序在每個SQL語句被執行後向應用程式返回錯誤信息。在SQLCA block中常見錯誤診斷被體現在SQLCODE中。

SQL返回代碼的值對應為：

- 0表示成功執行
- 正值表示成功執行但是有一個或多個警告。例如+100表示沒有行被發現。
- 負值表示出現錯誤。例如－911表示鎖超時（或死鎖），並觸發撤消程序。

DB2後來的版本增強了SQL語句執行的功能性和複雜性。多個錯誤或警告可以通過執行SQL語句被返回；它可以啟動一個資料庫觸發器和其它SQL語句。替代最初的SQLCA，錯誤信息現在被連續不斷的GET DIAGNOSTICS語句執行所檢索。

察看更多的常見SQLCODEs列表SQL返回值。

## 培訓及認證

目前，IBM提供多種培訓和認證，在其官方網站上都有提供。

## 使用者組

IDUG是International DB2 Users Group的縮寫，這是一個獨立的、非盈利的使用IBM 關係型資料庫管理系統（RDBMS）DB2的IT專業人才聯盟。IDUG提供培訓、技術資源、點網路工作的機會、在線資源以及其它項目來使DB2使用者提高他們使用DB2的能力以達到自己的工作目標。

## 相關資訊

- IBM資訊管理軟體技術資源
- IBM press release June 8, 2006
- "In Larry's Own Words"，October, 2003
- SUPRA 4GL
- "TPC-C". Transaction Processing Performance Council (June 2007). 2008-10-05修正更新。
- "TPC-H". Transaction Processing Performance Council (11 September 2008). 2008-10-05修正更新。
- Ambuj Goyal

## 外部連結

- IBM Database Magazine
- IBM DB2 9 Demo
- IBM DB2 Express-C - 免費下載版本
- DB2 Express-C 快 速 入 門
- IBM DB2 Podcast Series
- IBM DB2 Support Forums
- IBM DB2 Training and Certification
- DB2 Technical information and blog portal
- DB2 Tutorial
- DB2usa - Links to DB2 for z/OS documents available on the web
- IDUG, the International DB2 Users Group
- MS Technology's DB2 Technologies(頁面已失效)

## 基本資料

- 開發者：IBM
- 發行日期：1993年
- 程式語言：C, C++
- 作業系統：跨平台
- 語言：英語
- 類型：關係資料庫管理系統
- 許可協議：proprietary EULA