OracleDI實時數(shù)據(jù)集成簡介2011-03-24 16:49:11| 分類: 分享 | 標(biāo)簽: |字號大中小 訂閱 Oracle Data Integrator 產(chǎn)品體系結(jié)構(gòu)Oracle Data Integrator 是以 Java 圖形模塊和調(diào)度代理訪問的模塊化信息庫為中心進(jìn)行組織的。圖形模塊用于設(shè)計和構(gòu)建集成過程,代理用于安排和協(xié)調(diào)集成任務(wù)。當(dāng) Oracle Data Integrator 項目投入生產(chǎn)時,數(shù)據(jù)管理員可以使用基于 Web 的 Metadata Navigator 應(yīng)用程序來根據(jù)信息庫中的元數(shù)據(jù)生成報告?,F(xiàn)成的知識模塊可以使用特定于平臺的代碼和工具跨異構(gòu)平臺提取和加載數(shù)據(jù)。 Oracle Data Integrator 信息庫包含一個主信息庫(包含有關(guān)用戶和角色的詳細(xì)信息)、到數(shù)據(jù)庫和其他數(shù)據(jù)源的連接、項目版本以及一個或多個工作信息庫(包含數(shù)據(jù)模型的詳細(xì)信息以及用于集成數(shù)據(jù)的映射)。這些信息庫可以存儲在 Oracle 和非 Oracle 關(guān)系數(shù)據(jù)庫中,可以使用圖形模塊進(jìn)行管理,并可以在運行時由代理進(jìn)行訪問。 有四個圖形模塊可用來創(chuàng)建和管理 Oracle Data Integrator 項目: 這些基于 Java 的應(yīng)用程序可在包括 Microsoft Windows、Macintosh OS X 和 Linux 在內(nèi)的任何 Java 環(huán)境中運行。 一般來說,數(shù)據(jù)集成任務(wù)涉及兩個主要的領(lǐng)域: 創(chuàng)建新的接口時,開發(fā)人員或技術(shù)業(yè)務(wù)用戶首先定義要集成的數(shù)據(jù)以及應(yīng)使用的業(yè)務(wù)規(guī)則。在該步驟中,會將表聯(lián)接在一起,應(yīng)用過濾器,并使用 SQL 表達(dá)式來轉(zhuǎn)換數(shù)據(jù)。所使用的特定 SQL 語言由執(zhí)行代碼的數(shù)據(jù)庫平臺來決定。 然后,在另一個步驟中,技術(shù)人員可以使用特定于數(shù)據(jù)庫的工具和設(shè)計方法(例如增量加載、批量加載工具、漸變維度和更改數(shù)據(jù)捕獲)以最有效的方式來提取、組合并集成該數(shù)據(jù)。 由于 Oracle Data Integrator 在響應(yīng)事件的同時從很多不同的數(shù)據(jù)庫平臺加載和轉(zhuǎn)換數(shù)據(jù)并使用基于消息的技術(shù)(如 Web 服務(wù)),因此用于訪問和加載這些不同數(shù)據(jù)源的技術(shù)需要靈活、可擴展而又高效。Oracle Data Integrator 通過知識模塊解決了該問題。 知識模塊是 Oracle Data Integrator 的“插件”,它濃縮了為特定數(shù)據(jù)源或特定目標(biāo)加載、轉(zhuǎn)換或集成數(shù)據(jù)的最佳實踐。Oracle Data Integrator 有六種知識模塊,如下圖所示: 如果您是負(fù)責(zé)加載數(shù)據(jù)倉庫的人,那么不得不解決的一個問題是執(zhí)行夜間加載的時間段越來越短。如果您的元數(shù)據(jù)包含大量在加載到數(shù)據(jù)倉庫分段存儲區(qū)之前無法檢測的錯誤,時間就會變得格外緊張。 Oracle Data Integrator 利用了一種創(chuàng)新方法來解決該問題,即,使用檢查知識模塊在數(shù)據(jù)源處充當(dāng)臟數(shù)據(jù)的“防火墻”,只允許符合業(yè)務(wù)規(guī)則的數(shù)據(jù)進(jìn)入集成流程。要使用該方法有效地確保數(shù)據(jù)質(zhì)量,您首先要在源對象上定義一個或多個約束,然后使用檢查知識模塊來識別不符合這些約束的所有行,并將它們復(fù)制到錯誤表中。 這樣,在您以后從這些源對象中提取數(shù)據(jù)并在接口中使用它們時,可以確保僅加載了符合這些約束的數(shù)據(jù),并且您可以單獨處理錯誤表中的臟數(shù)據(jù)。 盡可能縮短數(shù)據(jù)加載時間的另一種有用的方法是,僅加載新的或經(jīng)過更改的數(shù)據(jù)。幸運的話,應(yīng)用程序設(shè)計人員會提供指示器和日期來幫助確定新的或經(jīng)過更改的數(shù)據(jù),但是大多數(shù)情況下,不會提供該信息,這需要您自己來確定感興趣的數(shù)據(jù)。 由于這是一個相當(dāng)普遍的要求,因此 Oracle Data Integrator 提供了日志記錄知識模塊來監(jiān)視源數(shù)據(jù)庫,并將新的和經(jīng)過更改的記錄復(fù)制到日志中,然后可以從日志中而非原始的源表中讀取這些記錄。如果 Oracle 之類的數(shù)據(jù)庫供應(yīng)商提供更改數(shù)據(jù)捕獲的本機支持,就會使用這些功能;否則,日志記錄知識模塊會使用觸發(fā)器之類的技術(shù)來捕獲數(shù)據(jù)操作語言 (DML) 活動并使更改可用。在本文的后面部分,您將看到 Oracle Data Integrator 如何提供 Oracle 更改數(shù)據(jù)捕獲功能,以及如何使用它以增量方式將數(shù)據(jù)庫實時加載到其他數(shù)據(jù)庫平臺上。 這時,Oracle Warehouse Builder 的常規(guī)用戶可能想知道它與 Oracle Data Integrator 的關(guān)系,以及它在其他 Oracle 數(shù)據(jù)倉庫技術(shù)產(chǎn)品中的適用情況。我們的回答是,Oracle Data Integrator 是一個工具,是對 Oracle Warehouse Builder 的補充,如果涉及在 Oracle 數(shù)據(jù)倉庫中創(chuàng)建分段層和集成層的工作很重要或者涉及 SOA 或非 Oracle 數(shù)據(jù)庫源,它將尤為有用。 對于構(gòu)建 Oracle 數(shù)據(jù)倉庫的人來說,Oracle Warehouse Builder 有一組功能強大的特定于 Oracle 的數(shù)據(jù)倉庫功能,例如,支持關(guān)系和多維數(shù)據(jù)結(jié)構(gòu)的建模、與 Oracle Business Intelligence Discoverer 集成、支持加載漸變維度,以及用于理解數(shù)據(jù)結(jié)構(gòu)和語義的數(shù)據(jù)分析器。 從源數(shù)據(jù)的最初準(zhǔn)備和集成一直到數(shù)據(jù)倉庫的分段存儲區(qū),Oracle Data Integrator 都起著重要作用。 Oracle Data Integrator 可以集成和同步大量不同數(shù)據(jù)源(包括 Web 服務(wù)和基于事件的體系結(jié)構(gòu))中的數(shù)據(jù),并且如上圖所示,還可以為特定于 Oracle 數(shù)據(jù)庫的功能(如 Oracle 更改數(shù)據(jù)捕獲)提供方便的圖形界面。將數(shù)據(jù)集成并復(fù)制到數(shù)據(jù)倉庫分段存儲區(qū)后,Oracle Warehouse Builder 會接替后續(xù)工作,創(chuàng)建并填充操作數(shù)據(jù)存儲和維度倉庫層。 現(xiàn)在大家對 Oracle Data Integrator 已經(jīng)有所了解,本文將重點關(guān)注如何在實際的數(shù)據(jù)集成案例中使用它。 在該案例中,您的任務(wù)是從 Oracle 數(shù)據(jù)庫中提取一些訂單和客戶數(shù)據(jù),將其與文件中保存的一些員工數(shù)據(jù)組合到一起,然后將集成的數(shù)據(jù)載入 Microsoft SQL Server 2000 數(shù)據(jù)庫。由于訂單到達(dá)時需要進(jìn)行分析,因此您希望以盡可能接近實時的速度將它們直接傳遞到目標(biāo)數(shù)據(jù)庫,并僅提取新的和經(jīng)過更改的數(shù)據(jù)以保持盡可能小的負(fù)載。您已經(jīng)在 Oracle 技術(shù)網(wǎng)上了解了 Oracle Data Integrator 的相關(guān)信息,并希望使用這一新工具來提取和加載數(shù)據(jù)。 您首先登錄到 Oracle Data Integrator 并啟動 Topology Manager,如下圖所示。 在 Oracle Data Integrator 中,物理數(shù)據(jù)庫、服務(wù)或基于事件的數(shù)據(jù)源均稱為數(shù)據(jù)服務(wù)器。使用 Topology Manager 創(chuàng)建三個新的數(shù)據(jù)服務(wù)器:
如果已經(jīng)定義了所有數(shù)據(jù)模型,并且已經(jīng)手動輸入源以及目標(biāo)表和文件的詳細(xì)信息或?qū)ζ溥M(jìn)行反向工程,Designer 將顯示您目前在項目中使用的所有數(shù)據(jù)存儲的列表,如下圖所示。 確定基礎(chǔ)源表是否未定義主鍵,您可以使用 Designer 應(yīng)用程序定義它們,然后讓 Oracle Data Integrator 以“虛擬方式”強制執(zhí)行,因為 Oracle Data Integrator 的很多映射功能都依賴于所定義的約束。 既然已經(jīng)定義了數(shù)據(jù)存儲,您可以開始設(shè)置獲取源數(shù)據(jù)的更改數(shù)據(jù)捕獲過程了。 但是,在此之前,您需要將提供更改數(shù)據(jù)捕獲功能的知識模塊導(dǎo)入項目。為此,單擊 Designer 應(yīng)用程序的 該知識模塊提供了三個配置選項。您可以選擇下列值來配置該模塊: 為此,在 Designer 的模塊列表中找到 Oracle 數(shù)據(jù)服務(wù)器,依次右鍵單擊 CUSTOMERS 和 ORDERS 表,然后選擇 現(xiàn)在,您可以創(chuàng)建從這兩個表中捕獲更改數(shù)據(jù)的日志了。為此,再次右鍵單擊該模型,并選擇 Changed Data Capture ->Start Journal。單擊 OK 在本地執(zhí)行代碼,然后啟動 Operator 應(yīng)用程序檢查操作進(jìn)程。如果一切正常,您將看到一個類似于以下的完成步驟列表。 如果該過程遇到錯誤,通常是由于您使用了不具有所需權(quán)限的用戶帳戶定義 Oracle 連接。查看您提供的用戶詳細(xì)信息和 Oracle Data Integrator 文檔以解決所有問題,然后再繼續(xù)該練習(xí)的其余部分。 接下來,您要向日志中添加一個用戶,方法是:返回 Designer 應(yīng)用程序,右鍵單擊 Oracle 源數(shù)據(jù)服務(wù)器,并選擇 該項目需要兩個接口,第一個接口用于從 Oracle 源數(shù)據(jù)庫中提取現(xiàn)有的數(shù)據(jù)集,將其與源文件中的數(shù)據(jù)聯(lián)合到一起,然后將組合數(shù)據(jù)載入目標(biāo) Microsoft SQL Server 數(shù)據(jù)庫,如下圖所示。 注意,目標(biāo)表中的某些列已經(jīng)自動映射,但 SALES_PERSON_ID、SALES_PERSON_NAME 和 CUSTOMER_NAME 等其他列最初并未映射,因為映射過程找不到匹配的源列?,F(xiàn)在,您將手動映射這些列,使用表達(dá)式編輯器輸入使用源或目標(biāo)數(shù)據(jù)庫語法的 SQL 表達(dá)式,具體取決于發(fā)生轉(zhuǎn)換的位置。 如果單擊 Oracle Data Integrator 已經(jīng)選擇了默認(rèn)知識模塊來實現(xiàn)從任何數(shù)據(jù)庫和文件中提取數(shù)據(jù),然后以增量方式載入任何數(shù)據(jù)庫。稍后,您可以將這些知識模塊更改為更適合您的特定數(shù)據(jù)庫和版本的模塊,但現(xiàn)在請保留這些模塊的默認(rèn)設(shè)置。 最后,如下圖所示,單擊 現(xiàn)在,您可以測試接口了。為此,單擊接口對話框右下角的 Execute,然后打開 Operator 應(yīng)用程序檢查接口進(jìn)度,如下圖所示。 由于接口的執(zhí)行未出現(xiàn)錯誤,您可以在 Designer 應(yīng)用程序中導(dǎo)航到目標(biāo)數(shù)據(jù)存儲并查看加載的數(shù)據(jù),如下圖所示。 現(xiàn)在,您已經(jīng)設(shè)置了初始負(fù)載,下面可以定義通過先前創(chuàng)建的日志表加載新的和經(jīng)過更改的數(shù)據(jù)的接口了。 為此,再創(chuàng)建一個接口,但這次,當(dāng)您添加 CUSTOMERS 和 ORDERS 源表時,單擊表明使用日志記錄的數(shù)據(jù)而非數(shù)據(jù)存儲內(nèi)容的復(fù)選框。為一個日志記錄表選擇該復(fù)選框后,系統(tǒng)將自動為一致集合中的所有其他表選中該復(fù)選框,如下圖所示。 將日志記錄表添加到接口后,您可以按照與先前完全相同的方式構(gòu)建接口的其余部分,唯一的區(qū)別是,第二個接口以日志記錄的數(shù)據(jù)而非源表內(nèi)容作為源數(shù)據(jù)。 要測試第二個接口,您可以將一些新記錄插入 ORDERS 和 CUSTOMERS 表,然后使用 Designer 接口來擴展日志窗口;稍后,您將自動擴展該窗口,并將其作為 Oracle Data Integrator 程序包的一部分進(jìn)行清除。但現(xiàn)在,右鍵單擊 Oracle 數(shù)據(jù)模型,并從上下文菜單中選擇 您可以快速檢查哪些行在表日志中(右鍵單擊相關(guān)的數(shù)據(jù)存儲,選擇 由于您已經(jīng)使用所創(chuàng)建的第一個接口將最初的數(shù)據(jù)集合載入目標(biāo)數(shù)據(jù)中心,現(xiàn)在可以創(chuàng)建一個 Oracle Data Integrator 程序包來執(zhí)行下列步驟:
要創(chuàng)建該程序包,導(dǎo)航到 Designer 應(yīng)用程序的 使用右側(cè)的工具箱,轉(zhuǎn)至 您可以將工具屬性設(shè)置為檢查先前定義的更改數(shù)據(jù)捕獲集合,并在發(fā)現(xiàn) 3 個日志行或檢查開始一分鐘后退出。 現(xiàn)在,您可以添加一個擴展日志窗口以讀入新數(shù)據(jù)的步驟。為此,導(dǎo)航到模型列表,并將 Oracle 模型拖放到畫布上。選擇該模型,查看屬性,然后將 然后,單擊 接下來,將從日志提取數(shù)據(jù)的接口添加到映射,然后將 Oracle 模型再次添加到程序包中,但這次選擇 由于最后的 OdiStartScen 步驟指的是程序包生產(chǎn)版本中的情況,您可以在 Designer 應(yīng)用程序的 總結(jié)Oracle Data Integrator 是 Oracle 融合中間件產(chǎn)品系列的一個新成員,您可以利用它跨眾多平臺執(zhí)行面向數(shù)據(jù)、事件和服務(wù)的集成。它對 Oracle Warehouse Builder 進(jìn)行了補充,并為特定于 Oracle 數(shù)據(jù)庫的功能(例如,批量數(shù)據(jù)加載和 Oracle 更改數(shù)據(jù)捕獲)提供了圖形界面。本文探究了如何使用 Oracle Data Integrator 跨不同的平臺創(chuàng)建實時數(shù)據(jù)集成過程,還探究了集成過程的聲明式方法,該方法可讓您集中精力定義業(yè)務(wù)規(guī)則,而不用考慮實現(xiàn)細(xì)節(jié)。 Mark Rittman [http://www./blog |
|