簡介
當今的應用程序需要頻頻與許多不同源和不同格式的信息相結合。因此,應用程序開發人員往往需要調用大量不同 API 和協議來檢索每個源中的信息,然後將這些信息合並到應用程序中。
WebSphere Information Integrator 通過提供一個到異構數據源的實時的基於 SQL 的接口,加速了這類場景的應用程序部署,異構數據源包括關系系統(如 DB2® Universal Database™ (DB2 UDB)、Oracle 和 Sybase)和非關系數據源(如文本文檔和非結構化數據),以及新興技術(如通過 Web Services 訪問的 XML 存儲庫和數據)。Information Integrator 通過透明地管理關系和非關系數據並將其一起引入單個虛擬位置,來滿足快速訪問完全不同的數據的市場需求。圖 1 詳細說明了 WebSphere Information Integrator 環境:
圖 1. WebSphere Information Integrator 提供單個 SQL API 來訪問不同的分布式數據
WebSphere Information Integrator 通過在其自身的編目中存儲聯邦數據源的元數據,從而在 DB2 UDB 數據庫引擎的上下文中構建數據庫聯邦。因為聯邦中的每個數據源一直在自主操作,所以維持聯邦數據庫與它所聯邦的源之間的一致性是一個相當大的挑戰。模式定義變更、服務器和網絡故障,以及密碼過期等事件隨時可能發生。這些事件中的每一種都可能使數據源變得不可訪問或使其做過的編目不再有效,通過聯邦數據庫訪問這些數據源的應用程序可能因此而中斷。
因此,檢測此類不一致性和自我管理集成環境的自主功能可以降低數據管理的復雜性。與允許真正虛擬化的環境相結合,Information Integrator 的自動化可以交付能夠利用人員、過程和信息之間的資源的隨需應變解決方案。
本文首先說明了聯邦數據庫系統的基本原理,給出了展示該系統的多樣性和可擴展性的場景。然後,我們來看一下聯邦數據庫和它所聯邦的源之間出現的實時不一致性。最後我們來看一看聯邦健康監控,即在 WebSphere Information Integrator V8.2 中提供的新的自主功能,它是在 DB2 UDB Health Monitoring 組件中實現的。該功能警告系統管理員聯邦數據庫編目和聯邦數據源之間存在不一致性,提出采取糾錯措施的建議,並定期發送故障排除通知。
聯邦系統的基本原理
WebSphere Information Integrator 聯邦系統包括以下組件:
DB2 UDB 引擎
無需移動到中心位置即可訪問分布式數據的 Information Integrator 實例
一個或多個數據源
客戶機(用戶和應用程序)
聯邦系統的創建方式是,在 DB2 UDB 引擎上安裝 Information Integrator,然後對其進行配置以注冊一個或多個異構數據源。聯邦數據庫系統的用戶可以對存儲在聯邦系統中任意位置的數據進行分布式查詢,不管自己的位置在哪裡,也不管數據源使用的是哪種 SQL 方言。圖 2 說明聯邦系統的架構。
圖 2. 聯邦系統配置的架構
聯邦系統與每個數據源通信是通過稱作包裝器 的軟件模塊進行的。包裝器包含特定數據源的特征。它提供了遠程數據的 DB2 關系模型,並通過向遠程數據源發送子查詢以幫助聯邦引擎實現查詢處理。
在聯邦系統中,服務器 表示遠程數據源上的一個數據集合。對於關系數據源來說,這個集合通常就是數據庫。服務器是通過 CREATE SERVER DDL 語句在聯邦系統中注冊的。該 DDL 將與遠程數據集合有關的信息存儲在 Information Integrator 編目中。例如,創建服務器時,數據庫的名稱、類型和版本(如 Oracle 8、Sybase 11.9)都會在 Information Integrator 編目中注冊。服務器定義用於通過所謂的別名 從遠程數據源訪問數據。
別名 是遠程數據源上駐留的數據集的表、視圖或任何其他形式的數據的表示。對於關系數據源來說,此數據通常存儲在表中。對於非關系數據源來說,此數據結構基於數據源的特定格式。別名通過 CREATE NICKNAME DDL 語句在聯邦系統中注冊。創建別名時,遠程表的名稱、其列的名稱、數據類型、索引或遠程文件的位置等都要在 Information Integrator 編目中注冊。
WebSphere Information Integrator 通過所謂的用戶映射 提供一種安全級別。您可以將每個 WebSphere Information Integrator 用戶 ID 映射為遠程數據源上的 ID 和密碼。用戶映射通過 CREATE USER MAPPING DDL 語句在聯邦系統中注冊。創建用戶映射時,遠程用戶 ID 和密碼都要在 Information Integrator 編目中注冊。
示例場景
為了更好地理解我們所討論的聯邦概念,下面來看一個示例。在此例中,Information Integrator 用於合並來自文件系統記錄、Oracle 和 DB2 數據源的數據。
場景:X 公司將員工記錄保存的 Oracle 表中。最近,這家公司已收購了在 DB2 表中保存其員工記錄的 Y 公司。這樣,腳本就根據 x 公司的指導原則生成了新員工的序列號,並將其存儲在文本文件中。下面是這兩個表和文本文件中的內容:
Oracle 表——包含 X 公司的所有員工信息
名字 姓氏 序列號 電話號碼 辦公室號碼 SSN Abby Mac 123A456 408-222-2323 H345 243-30-6789 Bob Smith 23H5611 408-222-4509 G129 223-45-6780 Jenny Hazel 786H543 408-224-3319 H480 823-19-6781 Edward James 788654Q 408-222-2965 A220 523-78-6782 ... ... ... ... ... ...
DB2 表——包含 Y 公司除序列號外的所有員工信息
名字 姓氏 電話號碼 辦公室號碼 SSN Laura Chen 650-245-2083 PR10 443-34-6389 Sara Bradly 650-245-3407 CS33 646-49-6783 Barbara Simons 650-245-2257 DE22 606-20-8789 ... ... ... ... ... ...
純文本文件——包含新員工(Y 公司)的序列號
SSN 序列號 443-34-6389 459610 646-49-6783 5T45A0 606-20-8789 2306F1 ... ...
現在,在內部 Web 站點發布員工記錄的應用程序必須能夠將新員工的新信息合並到整個公司中。Information Integrator 可以為 DB2 和 Oracle 員工表及序列號文本文件注冊別名。在此例中,注冊 ORACLE_NN 別名是為了訪問 Oracle 表,注冊 B2_NN 別名是為了訪問 DB2 表,注冊 SERIAL_NN 別名是為了訪問文本文件。應用程序使用這些別名來構建訪問 DB2、Oracle 和文本文件的查詢。請參見圖 3。
圖 3. 通過單個 SQL API 從 Oracle、DB2 和文件記錄數據源訪問數據的示例
清單 1 顯示用於在此例中從各種數據源提取數據的查詢:
清單 1. 跨不同數據源選擇
SELECT FIRSTNAME, LASTNAME, SERIALNUMBER, PHONENUMBER, OfficeNUMBER
FROM Oracle_NN UNION
(SELECT D.FIRSTNAME, D.LASTNAME, S.SERIALNUMBER,
D.PHONENUMBER, D.OfficeNUMBER
FROM DB2_NN D, SERIAL_NN S
WHERE D.SSN=S.SSN)
FIRSTNAME LASTNAME SERIALNUMBER PHONENUMBER OfficeNUMBER
--------------------------------------------------------------------------------------------
Edward James 788654Q 408-222-2965 A220
Sara Bradly 5T45A0 650-245-3407 CS33
Barbara Simons 2306F1 650-245-2257 DE22
Bob Smith 23H5611 408-222-4509 G129
Abby Mac 123A456 408-222-2323 H345
Jenny Hazel 786H543 408-224-3319 H480
Laura Chen 459610 650-245-2083 PR10
... ... ... ... ...
在此例中,您可以看到單個集成平台提供一個框架,該框架透明地使應用程序可以與多個數據源交互,無需終端用戶了解關於每個數據源的任何詳細信息。
訪問一個組織的所有在線信息並讓這些信息對員工和業務合作伙伴可訪問,這對於那些努力成為隨需應變商家的企業來說是件非常有趣的事情。WebSphere Information Integrator 通過允許應用程序訪問企業內部和外部源的方法解決了這些難題。用戶不會意識到信息來自於不同的源,如關系表、XML 存儲庫和業務應用程序,這些源往往是跨廣泛的地理位置和多種操作系統平台分布的。有了使信息容易訪問的能力,終端用戶的生產力和工作效率就會得到提高。
維護數據一致性
盡管 WebSphere Information Integrator 能夠集成和統一多種數據,無需考慮數據結構、所在位置或所用平台,但是在維護這一集成的健壯性方面仍然不可避免地存在一些挑戰:
數據源有規律地啟動和休眠(come up and go down)。
數據填充可能因為硬件或網絡故障而中斷。
遠程表可能被操縱或重構。
在隨需應變的企業,業務用戶不希望在其應用程序訪問此數據時遇到缺乏可用性或發生故障的情況。相反,他們更希望在發生此類問題之前得到通知,以便他們能夠及早主動采取更正措施。在這一部分中,我們來研究聯邦系統中語義不一致的可能性,以便設計和實現一種能夠預測這些問題並進行自我調整以防止發生問題的解決方案。
早在 基本原理部分,我們就已經討論了幾個聯邦概念,如服務器、別名和用戶映射等。服務器表示遠程數據集合。聯邦系統使用其編目中存儲的關於服務器的信息(如遠程數據庫名),將數據拉回應用程序。但這種情況可能引起應用程序故障:
數據源和應用程序之間的網絡問題
數據源不可用,如服務器停機時
在應用程序中,別名可以從遠程表、視圖或數據集中取回數據。但是,下列情況會引起這種應用程序發生故障:
遠程表被刪除。
遠程列被刪除。
遠程列的類型被更改。
文本文件的位置被更改。
需要用戶映射,以便聯邦數據庫用戶可以使用其 DB2 用戶 ID 和密碼訪問遠程數據源。下列情況會引起訪問此數據的應用程序發生故障:
遠程密碼已更改。
遠程用戶 ID 被取消。
自主功能能夠根據業務目標的要求進行自我管理並動態地適應變更。在隨需應變的企業中,為了防止應用程序在關鍵時候發生故障,識別潛在問題並及早采取更正措施是至關重要的。自主解決方案還可以減輕數據庫管理員管理復雜數據架構的負擔。因此,這會降低總體擁有成本 (TCO)。
使用 Health Monitor 管理聯邦數據
DB2 Health Monitor 是一種工具,它可以協助數據庫管理員 (DBA) 管理其數據庫資源的有效性,識別並解決問題。Health Monitor 主要用於監控潛在的系統健康問題。它幫助數據庫管理員診斷數據庫性能問題(如緩沖區和堆大小不理想)的原因、監控在應用程序中使用的表格和別名之類的數據庫對象的狀態。DB2 Health Monitor 以預定義的刷新間隔來評估數據庫對象,以確定是否存在不健康的條件。它能夠警告數據庫管理員在數據庫對象或系統的總體健康狀況方面存在的潛在健康問題。然後給數據庫管理員提供預配置的措施以響應這些警告。健康狀況監控器還可以記錄管理通知日志中的警告,並通過電子郵件或紙質信函發送通知。因此,它可以通過自動化數據庫管理員的健康監控任務來釋放寶貴的 DBA 資源。
換句話說,DB2 Health Monitor 有兩個主要目標:
監控——提供這樣一些機制,即使用易於訪問、組織良好的結構來收集、管理和報告關於數據庫環境中的問題和受影響區域的詳細信息
推薦——提供這樣一些機制,即推薦和構建將系統返回到健康狀態所需的操作。
Health Monitor 使用健康指示器評估特定數據庫方面(如性能)的狀態。
健康指示器
健康指示器可以測定某些特定數據庫對象類的狀態。例如,健康指示器可以用來跟蹤數據庫堆內存的消耗量。將某策略應用於這一測量來確定健康級別。在不健康狀態出現時,健康狀況監控器可以根據每個健康指示器的策略為該健康指示器生成警告。在 DB2 Information Integrator V8.2 版中添加了兩個新的健康指示器,用於對聯邦系統的健康狀況進行監控:
服務器健康指示器
別名健康指示器
健康指示器有三個種類:基於狀態的、基於集合狀態的和基於阈值的。由於兩個聯邦健康指示器都是基於集合狀態的指示器,本文將只討論基於集合狀態的指示器的特征。
基於集合狀態的指示器
這些指示器對於 DB2 V8.2 和 Information Integrator V8.2 來說,還是新生事物,當集合中一個或多個對象的健康中出現非正常狀態時,它們就會生成注意警報。在我們的例子中,這些指示器表示數據庫對象(如別名或服務器)集的聚合狀態。因此,健康指示器為每個集合生成一個警報,並單獨存儲該警報下的對象,而不是為所有受影響的對象生成警報。
評诂聯邦系統的健康
健康狀況監控器以非可配置的預定義的時間間隔收集與健康有關的信息。圖 4 說明評诂聯邦系統健康的健康狀況監控器架構:
圖 4. 評诂聯邦系統健康的健康狀況監控器架構
如果一個或多個別名不可用,則別名健康指示器將發出警報。出現下列某種情況時,別名被指示為無效:
無效列——遠程列或其數據類型已改變
無效表——遠程表、視圖或數據集被刪除
無效用戶映射——本地或遠程用戶 ID 或密碼已改變
查詢錯誤——上面沒有提到的任何其他情況
如果一個或多個服務器無效,則服務器健康指示器將轉變為警報狀態。當服務器不可用時,健康指示器狀態如下所示:
不可用——遠程數據源被刪除或停用,或者數據源與聯邦服務器之間存在網絡故障
健康狀況監控器在健康快照 中記錄與健康相關的指示器信息。此數據通常包括:
名稱——集合中的對象名稱(如不健康的服務器和別名)
詳細信息——提供描述關於對象如何不健康的原因的字符串
警報狀態——警報、警告或注意狀態
時間戳——評诂時間戳
歷史——以前生成的警報的歷史記錄
一旦間隔級別過期,健康狀況監控器就會處於休眠狀態,並在下一個間隔到來時蘇醒。
訪問健康信息
健康狀況監控器數據可以通過健康快照來使用。每個健康快照可根據其最近刷新間隔來報告每個健康狀況監控器的狀態。快照用於檢測現有的數據庫健康問題,包括服務器和別名的不良健康狀況。
聯邦別名和服務器的健康快照可以通過 Health Center(圖形用戶界面)、命令行處理器或 C 應用程序中的 API 獲取。API 不是本文要討論的內容,所以這裡只描述前兩種方法。
通過 Health Center 監控
Health Center 是一個圖形化界面,它為 DB2 健康狀況監控器提供了管理工具。它提供:
查看所有實例及其數據庫的警報狀態的中心位置
查看實例和數據庫及其子對象(包括聯邦對象,如服務器和別名)上的當前警報的圖形化界面
訪問當前警報的詳細信息和推薦的解決措施的圖形化界面
通過命令行監控
健康快照還可以通過命令行處理器 (CLP) 獲取。快照可以為數據庫管理器及其對象檢索健康狀態信息。如果發出“GET HEALTH SNAPSHOT”命令時聯邦服務器和別名處於不健康狀態,這些對象上的健康信息(包括不健康對象的名稱、問題的詳細信息、最後的評诂時間等)就會被檢索出來。返回的信息表示發出該命令時服務器和別名的健康狀態的快照。
推薦引擎
推薦引擎可幫助解決健康狀況監控器生成的健康警報問題。在一個或多個數據庫對象上出現健康警報後,推薦引擎就會以適合數據庫需求的方式提供一些建議來解決這些警報問題。
對於聯邦對象,此顧問推薦了可以解決不健康服務器和別名問題的措施。每個建議都包含一個詳細描述,並且包括對此建議的解釋,它的確定方式和結果狀態。
您可以通過命令行或圖形化用戶界面 (Health Center) 為每個健康指示器檢索建議。一旦客戶機通過檢查健康快照的輸出檢測到健康指示器已經進入警報狀態,它就可以使用“GET RECOMMENDATIONS”命令從命令行處理器查詢推薦引擎,指定處於警報狀態的健康指示器。推薦引擎將確定適當的建議,並將此建議返回到客戶機。
使用圖形用戶界面,您可以檢索到同樣的結果。在此例中,Recommendation Advisor 將從任一在 Health Center 的警報視圖中顯示的警報健康指示器啟動。Recommendation Advisor 是一個向導,指導用戶采取措施來解決警報的問題。
使用 WebSphere Information Integrator 工具的端到端解決方案
Health Center 和 DB2 UDB Control Center(Information Integrator 管理工具所在的位置)通過 Health Beacons 集成。Control Center 中的 Health Beacons 提供關於 Health Center 中新警報的可視化指示。信標(beacon)可以在所有 Control Center 窗口和筆記本電腦中實現。未打開 Health Center 時,信標顯示當前警報,提示用戶打開 Health Center 以獲取更加詳細的信息。
結束語
在 WebSphere Information Integrator V8.2 發行以前,毫無疑問 Information Integrator 與 IBM 的隨需應變的特征是一致的,原因是:
集成:Information Integrator 集成並統一來自異構源的數據,允許客戶機應用程序方便而高效地利用完全不同的數據。
開放:Information Integrator 提供了單個基於 SQL 的 API,從而提供一個開放的、語言和平台獨立的界面,供所有用戶使用。
虛擬化:Information Integrator 提供了一個聯邦系統來擔當虛擬數據庫,它能夠透明地訪問任何數據,不管自身的位置在哪裡,也不管使用的是哪種 SQL 方言。
健康監控的自動化通過使 Information Integrator 具有以下特性,將此集成、開放、虛擬化的解決方案向前推進了一步,並完善了隨需應變環境的基本特征集合:
自主:Information Integrator 中的健康狀況監控器提供了優化和保護應用程序的自我管理能力,並且因此降低了數據庫管理的復雜性和總體擁有成本。
事實上,在聯邦環境中維護語義的一致性對於任何一位數據庫管理員來說都是挑戰性的任務,因此,使用像聯邦健康監控之類的自主功能可以給任何數據庫管理員帶來好處,而不管企業級別如何。