程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> IBM DB2 Connect簡介(1)

IBM DB2 Connect簡介(1)

編輯:DB2教程

在本系列的 第 1 部分中,我們初步地談到了 DB2 Connect 提供的不同編程接口以及實現這些接口的驅動程序。在最後的幾節中,我們大致地描述了 DB2 Connect 提供的通信基礎設施,並看到這個基礎設施如何大大減少對大型主機資源的使用,如何允許分布式應用程序充分利用大型主機平台的優勢(例如輕松地管理混合工作負載以及提供連續的應用程序可用性)。

您可能仍記得圖 1,在這幅圖中,DB2 Connect 由編程接口(被實現為 JDBC™、SQLJ、ODBC、DB2 CLI、OLE DB、.Net® 和 Embedded SQL 驅動程序)和一個通信基礎設施組成。

圖 1. DB2 Connect 由編程接口和一個通信基礎設施組成,通信基礎設施使客戶機服務器應用程序和基於 Web 的應用程序能利用大型主機的優勢

IBM DB2 Connect簡介(1)(圖一)



我們將在本文中討論上述通信基礎設施的功能之一,即 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(Windows平台上強大的數據庫平台))、非關系數據源(ADABAS、VSAM)、OLE DB、XML(標准化越來越近了) 和企業中任何其他數據源。

對異構型分布數據源的統一訪問

您也許知道統一(unifIEd)、分布(distributed)和異構(heterogeneous)的意思是什麼,但可能並不清楚 DB2 Connect 是如何實現這些概念的。您也許熟悉 IBM WebSphere Information Integrator 產品,並且會想,這些詞語很好地描述了這些產品。請繼續閱讀本文,如此一來這些產品之間的相互關系就會變得更加清晰。

統一訪問是減少在異構環境中開放應用程序的復雜性的一種非常好的方法。雖然應用程序編程人員總能一一建立到各個數據源的連接,但更容易的方式還是在應用程序中只使用一個數據庫連接。到不同數據源的不同連接需要多個驅動程序(例如,一個單獨的 DB2 和 Informix JDBC 驅動程序)。如果在應用程序中使用多個不同的連接,那麼在對待數據時,就不能把數據看作是由單個數據庫管理的那樣(例如,應用程序編程人員必須從多個數據源取數據,然後才可以執行連接操作)。而且,當使用多個不同連接時,代碼在應用程序中的位置便會固定下來,這樣數據架構師就不能自由地修改數據的位置,以適應不斷變化的業務需求。

相反,統一數據訪問機制則為應用程序編程人員提供了到企業所有數據資產的單點連接。它允許使用單個 API (驅動程序),允許使用一種風格的 SQL(您不必擔心 SQL Server(Windows平台上強大的數據庫平台) 使用貨幣數據類型而 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 的聯邦數據庫功能

IBM DB2 Connect簡介(1)(圖二)



例如,以下語句:

SELECT * FROM T1, T2 where T1.C1=T2.C2


可用於返回來自不同服務器上不同數據庫中各種表的結果。例如,表 T1 可能在一個 DB2 UDB for z/OS 數據庫上,它可以與表 T2 相連接,後者在一個 Informix IDS for Windows 數據庫上。

這個功能使應用程序開發人員可以在同一條 SQL SELECT 語句中引用由 DB2 UDB 家族中多個成員管理的對象 —— 完全不必知道查詢是分布式的。使這種特性更強大的是,負責編寫這類應用程序的開發人員可以把這些數據源看作本地 DB2 表(通過昵稱),並使用相同的 SQL API 來訪問每個數據源 —— 這些操作甚至可以在他們各自的集成開放環境(IDE)中進行!他們不需要理解後端數據存儲之間有何不同,因為在集成開放環境中,或者對於 SQL API 來說,這些數據存儲像是一個虛擬的數據庫(關於這方面的更多內容請參閱本系列的另一個部分)。

DB2 Connect 與 WebSphere Information Integrator 相結合作為聯邦服務器

在前一小節中,您看到 DB2 Connect 如何以 DB2 UDB 和基於 Informix IDS 的數據源建立聯邦數據庫。當與 WebSphere Information Integrator 相結合時,DB2 Connect 可以提供對其他數據源的透明訪問,例如 Oracle(大型網站數據庫平台)、Microsoft SQL Server(Windows平台上強大的數據庫平台)、Sybase、IMS、VSAM 和大批其他的數據源。當 DB2 Connect 與 WebSphere Information Integrator 相結合時,上面的圖可以增強到如下面的圖 3 所示:

圖 3. DB2 Connect 與 WebSphere Information Integrator 相結合時的聯邦數據庫功能,可用於更廣泛的關系數據庫訪問

IBM DB2 Connect簡介(1)(圖三)



實際上,在這個場景中,該功能的完整形象看上去應該是這樣的:

圖 4. DB2 Connect 與 WebSphere Information Integrator 相結合時的聯邦數據庫功能提供了對任何數據的訪問

IBM DB2 Connect簡介(1)(圖四)



DB2 Connect 在其聯邦核心中內建了一個智能的優化器。這意味著當您從一個 Oracle(大型網站數據庫平台) 數據庫選擇很多數據時(如果您正在使用 WebSphere Information Integrator),優化器知道啟發法、索引、基數和 Oracle(大型網站數據庫平台) 數據存儲的總體分布情況,並能夠重寫查詢,以獲得更好的訪問方式。

DB2 UDB 憑借其自治的、強大的優化技術而成名已久,這種技術能提供對數據的快速訪問:這些優點並沒有隨聯邦功能而消失。相反,它們被內建在 DB2 Connect 的聯邦優化器中。因此,當 DB2 Connect 充當聯邦層時,它可以執行謂詞疊加(push-down)或消除分支樹(branch-tree),從而加快數據訪問。DB2 Connect 會判斷是將謂詞疊加到本地存儲,還是帶回完整的結果集並在本地應用結果集更有意義。取決於數據存儲的並發特征或業務需求,DB2 Connect 甚至可以在這些外部數據源上創建一個溫(warm)數據緩存,以便不需要牽涉到異構數據庫。

深入分析聯邦的能力超出了本文的范圍,但要記住的最重要的一點是, 對於一名開發人員,在他自己的 IDE 中,只需一種 API,可以使用來自任何地方的各種數據 。在當今市場中,這些特征是無與倫比的,它們代表了一種伸手可及的專用 API 訪問或“即購即換”方法學的解決方案,在今天這樣注重成本的氛圍下,這種方法學幾乎被摒棄。最低限度是,DB2 Connect 是這些效率的一個起點,通過一個動態的選項,可以在需要的時候添加越來越多的數據源。

存儲過程和統一數據訪問

與其他作為競爭對手的數據庫供應商提供的存儲過程相比,DB2 服務器中的存儲過程在功能上有其獨特之處。DB2 存儲過程中的代碼可以重寫,重寫方式與應用程序其他部分幾乎相同(例如,程序員或應用程序 DBA 可以使用自己喜歡的編程語言 —— Java、COBOL、.Net 或 C —— 並可以在數據庫服務器平台上調用那種語言中可用的任何 API)。例如, 程序員可以(用 COBOL)編寫一個調用 CICS 事務的存儲過程,並將該存儲過程部署到 DB2 for z/OS。因為調用存儲過程的應用程序完全獨立於存儲過程實現的細節,因此調用者應用程序完全不知道它們在執行存儲過程的時候,會引起對 CICS 資源的訪問,也不知道這個存儲過程是用 COBOL (這種語言對於程序員或 DBA 來說可能並不熟悉)編寫的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved