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 的縮寫。

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

在很多年裡，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 的能力以達到自己的工作目標。

## 相關條目

* 資料記錄
* DB2 雜誌
* Geneva ERS
* MS 技術 提供嵌入 DB2 的技術
* MST Viewer DB2 和 AFP 支援的相關文件
* SQL/DS

## 相關資訊

* IBM 資訊管理軟體技術資源（頁面存檔備份，存於網際網路檔案館）
  1. IBM press release（頁面存檔備份，存於網際網路檔案館） June 8, 2006
  2. "In Larry's Own Words"，October, 2003
  3. SUPRA 4GL
  4. "TPC-C"（頁面存檔備份，存於網際網路檔案館）. Transaction Processing Performance Council (June 2007). 2008-10-05 修正更新。
  5. "TPC-H"（頁面存檔備份，存於網際網路檔案館）. Transaction Processing Performance Council (11 September 2008). 2008-10-05 修正更新。
  6. 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 (頁面已失效)（頁面存檔備份，存於網際網路檔案館）