正在看的db2教程是:IBM DB2 Connect簡介(1)。
在本系列的 第 1 部分中,我們初步地談到了 DB2 Connect 提供的不同編程接口以及實現這些接口的驅動程序。在最後的幾節中,我們大致地描述了 DB2 Connect 提供的通信基礎設施,並看到這個基礎設施如何大大減少對大型主機資源的使用,如何允許分布式應用程序充分利用大型主機平台的優勢(例如輕松地管理混合工作負載以及提供連續的應用程序可用性)。
您可能仍記得圖 1,在這幅圖中,DB2 Connect 由編程接口(被實現為 JDBC™、SQLJ、ODBC、DB2 CLI、OLE DB、.NET® 和 Embedded SQL 驅動程序)和一個通信基礎設施組成。
圖 1. DB2 Connect 由編程接口和一個通信基礎設施組成,通信基礎設施使客戶機服務器應用程序和基於 Web 的應用程序能利用大型主機的優勢
我們將在本文中討論上述通信基礎設施的功能之一,即 DB2 Connect 如何提供對異構型分布數據的統一訪問。
在討論這種解決方案在統一訪問、分布式和異構等方面的細節之前,我們需要先將目光轉向通信基礎設施本身。DB2 Connect 以通信服務器的形式提供這種通信基礎設施,通信服務器可以部署在 Windows®、Linux (例如 Linux for zSeries)和 UNIX® 服務器上。這種通信服務器是使用在構建 DB2 UDB 數據庫服務器時所用的相同代碼基礎構建的,因此,它繼承了 DB2 UDB 服務器那種架構中具備的所有品質。
實際上,我們在本文中所描述的功能有一個要求,那就是在 DB2 Connect 服務器本身上創建一個數據庫(在這裡您不需要 DB2 Universal Database™ (UDB))。乍一看來,這似乎與本系列第 1 部分中的說法相矛盾,在那裡我們說 DB2 Connect 只是將應用程序連接到 DB2 for z/OS 和 DB2 for iSeries® 數據庫,DB2 Connect 並不管理數據。然而需要澄清的是,我們要在 DB2 Connect 服務器上創建的這個數據庫並不存放數據。它只是作為一個單一的連接點來使用,以便向應用程序提供統一的或單一的數據庫鏡像。於是,DB2 Connect 服務器只是將對數據的請求路由到真正管理數據的不同數據庫服務器。
雖然在第 1 部分您了解到真正使 DB2 Connect 有別於其他競爭者的通信管道的一些特性,但您很可能已經知道,DB2 Connect 至少盡到了責任(將應用程序連接到大型主機)。現在您對 DB2 Connect 的底層架構有了更好的理解,接下來是該提供比本系列文章的第 1 部分(副標題 - 內有乾坤)更進一步內容的時候 —— 我們將從這裡開始第 2 部分。
在第 2 部分中,我們將談到作為數據訪問平台的 DB2 Connect,在這裡我們不僅僅是談論大型主機上的 DB2。例如,您知道嗎,DB2 Connect 工作站可以在同一個事務中執行一個 DB2 for z/OS 數據庫和 Windows 數據庫上的 Informix® IDS 之間的分布式連接(join),它還可以在同一個提交范圍內使用內建的對兩階段提交(two-phase commit,2PC)的支持來更新這些數據源。我提到過您將發現一些巧妙的特性,這就是其中之一!如果說這聽起來像是聯邦,或者更像是 WebSphere® Information Integrator (前身為 DB2 Information Integrator),那就對了。實際上,所有 DB2 UDB 和 DB2 Connect 服務器都附帶了 WebSphere Information Integrator 對整個 DB2 UDB 家族和內建在引擎中的 Informix IDS 的聯邦支持。WebSphere Information Integrator 之類的產品擴展了聯邦引擎的范圍,使之包括其他關系數據源(Oracle、Microsoft® SQL Server)、非關系數據源(ADABAS、VSAM)、OLE DB、XML 和企業中任何其他數據源。
對異構型分布數據源的統一訪問
您也許知道統一(unified)、分布(distributed)和異構(heterogeneous)的意思是什麼,但可能並不清楚 DB2 Connect 是如何實現這些概念的。您也許熟悉 IBM WebSphere Information Integrator 產品,並且會想,這些詞語很好地描述了這些產品。請繼續閱讀本文,如此一來這些產品之間的相互關系就會變得更加清晰。
統一訪問是減少在異構環境中開放應用程序的復雜性的一種非常好的方法。雖然應用程序編程人員總能一一建立到各個數據源的連接,但更容易的方式還是在應用程序中只使用一個數據庫連接。到不同數據源的不同連接需要多個驅動程序(例如,一個單獨的 DB2 和 Informix JDBC 驅動程序)。如果在應用程序中使用多個不同的連接,那麼在對待數據時,就不能把數據看作是由單個數據庫管理的那樣(例如,應用程序編程人員必須從多個數據源取數據,然後才可以執行連接操作)。而且,當使用多個不同連接時,代碼在應用程序中的位置便會固定下來,這樣數據架構師就不能自由地修改數據的位置,以適應不斷變化的業務需求。
相反,統一數據訪問機制則為應用程序編程人員提供了到企業所有數據資產的單點連接。它允許使用單個 API (驅動程序),允許使用一種風格的 SQL(您不必擔心 SQL Server 使用貨幣數據類型而 DB2 UDB 不使用這種類型),它還對數據位置進行抽象,以便可以在不影響現有應用程序的情況下更改數據位置。最後,它允許編程人員一致地對待所有數據,就好像它們來自同一個關系數據庫,並且那個數據庫可以在保證事務完整性的情況下管理對數據的連接、排序和過濾 —— 並且,由於有了對 DB2 Connect 基本特性的擴展,後端數據源不必一定是關系數據源(例如,它可以是 VSAM 或 ADABAS 數據源)。
我希望您已經清楚,使用單個數據庫比起協調對多個數據源的訪問來要簡單得多。但我們 IBM 信息管理解決方案的不同之處在於,我們並不期望您取消現有的應用,全部移植到 DB2 數據庫,因為那樣不現實。
DB2 Connect 通過以下三種不同機制之一實現簡單直觀的訪問方法:
聯邦數據庫
存儲過程
SQL 函數
DB2 Connect 和聯邦數據庫
DB2 Connect 附帶了一個內建的基礎級聯邦數據庫功能。您可能對這個功能比較熟悉,因為之前 IBM DataJoiner 產品也提供了這個功能。從 Version 8 開始,聯邦數據庫支持已成為 DB2 Connect 和 DB2 UDB 服務器的一部分,任何人不需要購買額外的產品就可以使用該功能。換句話說,當您在 Linux、Windows 和 UNIX 服務器上部署了 DB2 Connect 服務器時,就可以創建一個聯邦數據庫,並且應用程序可以連接到這個聯邦數據庫。建立了與聯邦數據庫的連接後,請求被路由到真正的數據源 —— 但是函數補償、數據類型轉換、有效數據檢索的優化等復雜性對用戶來說是透明的。
DB2 Connect 的聯邦組件包括對 DB2 UDB for Linux、DB2 UDB for UNIX 、DB2 UDB for Windows、DB2 UDB for VSE/VM、DB2 UDB for z/OS、DB2 UDB for iSeries 和 Informix IDS 數據庫服務器的讀/寫支持。
您可以使用 DB2 Connect 中的聯邦功能來執行跨這些服務器的分布式請求,如圖 2 所示:
圖 2. DB2 Connect 的聯邦數據庫功能
例如,以下語句:
SELECT * FROM T1, T2 where T1.C1