Oracle Data Integrator 介紹

轉自:http://my.oschina.net/aiguozhe/blog/115773數據庫

本文介紹了 Oracle Data Integrator,它是一個基於 Java 的中間件,可使用數據庫在 SOA 中執行基於集合的數據集成任務。


    如今,複雜的「可熱插拔」系統和麪向服務的體系結構 (SOA) 獲得了普遍應用,這使得將數據合理地整合在一塊兒的難度日益增長。儘管您的主要應用程序數據庫在 Oracle 數據庫上運行,可是可能還有其餘較小的系統在其餘供應商提供的數據庫和平臺上運行。您的應用程序自己能夠經過 Web 服務之類的技術進行交互,應用程序和數據能夠遠程託管,也能夠由您在企業數據中心內進行管理。服務器

    Oracle Data Integrator 屬於 Oracle Fusion Middleware產品系列,它解決了異構程度日益增長的環境中的數據集成需求。它是一個基於 Java 的中間件,可使用數據庫來執行基於集合的數據集成任務,也能夠將該功能擴展到多種數據庫平臺以及 Oracle 數據庫。此外,經過它,您還能夠經過 Web 服務和消息提取並提供轉換數據,以及建立在面向服務的體系結構中響應和建立事件的集成過程。數據結構


Oracle Data Integrator 產品體系結構

    Oracle Data Integrator 是以 Java 圖形模塊和調度代理訪問的模塊化信息庫爲中心進行組織的。圖形模塊用於設計和構建集成過程,代理用於安排和協調集成任務。當 Oracle Data Integrator 項目投入生產時,數據管理員可使用基於 Web 的 Metadata Navigator 應用程序來根據信息庫中的元數據生成報告。現成的知識模塊可使用特定於平臺的代碼和工具跨異構平臺提取和加載數據。



    
    Oracle Data Integrator 信息庫包含一個主信息庫(包含有關用戶和角色的詳細信息)、到數據庫和其餘數據源的鏈接、項目版本以及一個或多個工做信息庫(包含數據模型的詳細信息以及用於集成數據的映射)。這些信息庫能夠存儲在 Oracle 和非 Oracle 關係數據庫中,可使用圖形模塊進行管理,並能夠在運行時由代理進行訪問。架構

有四個圖形模塊可用來建立和管理 Oracle Data Integrator 項目:oracle

  • Designer 用於定義數據存儲(表、文件、Web 服務等)、接口(數據映射)以及程序包(包括接口在內的幾組集成步驟)。 
  • Topology Manager 用於建立和管理到數據源和代理的鏈接,一般限制爲只有管理員能夠訪問。 
  • Operator 用於查看和管理產品集成做業。 
  • Security Manager 管理用戶及其信息庫權限。

這些基於 Java 的應用程序可在包括 Microsoft Windows、Macintosh OS X 和 Linux 在內的任何 Java 環境中運行。異步


Oracle Data Integrator 屬於 Oracle 融合中間件產品系列,它解決了異構程度日益增長的環境中的數據集成需求。它是一個基於 Java 的應用程序,可使用數據庫來執行基於集合的數據集成任務,也能夠將該功能擴展到多種數據庫平臺以及 Oracle 數據庫。此外,經過它,您還能夠經過 Web 服務和消息提取並提供轉換數據,以及建立在面向服務的體系結構中響應和建立事件的集成過程。
編輯器

oracle的數據加載工具,說白了,就是不一樣庫,或不一樣用戶下的數據傳輸工具。上網上下載個操做說明,先在本地安裝一個ODI,熟悉熟悉操做就好了。
主要有三個工具:
一、Designer進行數據傳輸的操做(不一樣庫表數據的傳輸,傳輸方式不少種(牛B之處))
二、Operator查看數據傳輸的結果(傳輸成功,仍是失敗,失敗的緣由等等)。
三、Topology manager定義物理和邏輯架構,就是配置不一樣庫的url,sid什麼的。
ide

ODI就是一個導數的工具,用IMP,EXP加個FTP和定時crontab同樣能夠實現導數,只不過,odi更增強大,能夠實現更多的功能,等你上個項目,當你接口實現不了需求的時候,你就知道要用存儲過程了,odi能夠刷新執行,定時執行,不一樣的庫數據導給同一個庫用來出報表,大體如此,沒有必要扣什麼數據挖掘,除非售前也歸你,向客戶兜售ODI,才須要扯一些什麼數據倉儲,數據挖掘之類的。
模塊化


看完這些,瞭解就好了,下面若是用不到,就不用看了。。工具























聲明式設計

通常來講,數據集成任務涉及兩個主要的領域:

  • 關於轉換哪位數據並將其與其餘位相結合的業務規則 
  • 關於數據的實際提取、加載等操做方式的技術細節 
這種劃分意味着,定義業務規則的人一般是機構的技術業務專家或數據專家,而技術細節則每每留給開發人員和 DBA 等技術人員來定義。使用大多數數據集成工具,一般很難以這種方式劃分職責,由於它們的數據映射特性在同一個數據映射中混合了業務規則和技術實現細節。而 Oracle Data Integrator 採用了一種不一樣的方法,像 SQL 同樣使用聲明式方法來構建數據映射,這在工具中稱爲「接口」。  建立新的接口時,開發人員或技術業務用戶首先定義要集成的數據以及應使用的業務規則。在該步驟中,會將表聯接在一塊兒,應用過濾器,並使用 SQL 表達式來轉換數據。所使用的特定 SQL 語言由執行代碼的數據庫平臺來決定。

    而後,在另外一個步驟中,技術人員可使用特定於數據庫的工具和設計方法(例如增量加載、批量加載工具、漸變維度和更改數據捕獲)以最有效的方式來提取、組合並集成該數據。

可擴展的知識模塊

    因爲 Oracle Data Integrator 在響應事件的同時從不少不一樣的數據庫平臺加載和轉換數據並使用基於消息的技術  (如 Web 服務),所以用於訪問和加載這些不一樣數據源的技術須要靈活、可擴展而又高效。Oracle Data Integrator 經過知識模塊解決了該問題。

    知識模塊是 Oracle Data Integrator 的「插件」,它濃縮了爲特定數據源或特定目標加載、轉換或集成數據的最佳實踐。Oracle Data Integrator 有六種知識模塊,以下圖所示:



  • 反向工程知識模塊用於從源數據庫中讀取表和其餘對象元數據。 
  • 日誌記錄知識模塊記錄單個表或視圖或者一組一致的表或視圖中的新數據和更改的數據。 
  • 加載知識模塊用於從源數據庫中有效地提取數據,幷包括特定於數據庫的適用的批量卸載工具。 
  • 檢查知識模塊用於檢測源數據中的錯誤。 
  • 集成知識模塊用於有效地將分段存儲區中的數據轉換爲目標表,以便爲給定數據庫生成優化的本機 SQL。 
  • 服務知識模塊能夠將數據公佈爲 Web 服務。 
  • 知識模塊還能夠擴展,這樣您能夠添加 Oracle Data Integrator 當前未提供的功能。例如,採用一組現有的基於 Oracle 的知識模塊並將其擴展爲包括 Oracle 數據庫 10g 中的 Oracle 數據泵功能將是一項相對簡單的任務。

數據質量防火牆

    若是您是負責加載數據倉庫的人,那麼不得不解決的一個問題是執行夜間加載的時間段愈來愈短。若是您的元數據包含大量在加載到數據倉庫分段存儲區以前沒法檢測的錯誤,時間就會變得格外緊張。

    Oracle Data Integrator 利用了一種創新方法來解決該問題,即便用檢查知識模塊在數據源處充當髒數據的「防火牆」,只容許符合業務規則的數據進入集成流程。要使用該方法有效地確保數據質量,您首先要在源對象上定義一個或多個約束,而後使用檢查知識模塊來識別不符合這些約束的全部行,並將它們複製到錯誤表中。



這樣,在您之後從這些源對象中提取數據並在接口中使用它們時,能夠確保僅加載了符合這些約束的數據,而且您能夠單獨處理錯誤表中的髒數據。

支持更改數據捕獲

    儘量縮短數據加載時間的另外一種有用的方法是,僅加載新的或通過更改的數據。幸運的話,應用程序設計人員會提供指示器和日期來幫助肯定新的或通過更改的數據,可是大多數狀況下不會提供該信息,這須要您本身來肯定感興趣的數據。

    因爲這是一個至關廣泛的要求,所以 Oracle Data Integrator 提供了日誌記錄知識模塊來監視源數據庫,並將新的和通過更改的記錄複製到日誌中,而後能夠從日誌中而非原始的源表中讀取這些記錄。若是 Oracle 之類的數據庫供應商提供更改數據捕獲的本機支持,就會使用這些功能;不然,日誌記錄知識模塊會使用觸發器之類的技術來捕獲數據操做語言 (DML) 活動並使更改可用。在本文的後面部分,您將看到 Oracle Data Integrator 如何提供 Oracle 更改數據捕獲功能,以及如何使用它以增量方式將數據庫實時加載到其餘數據庫平臺上。

Oracle Data Integrator 與 Oracle Warehouse Builder 比較

    這時,Oracle Warehouse Builder 的常規用戶可能想知道它與 Oracle Data Integrator 的關係,以及它在其餘 Oracle 數據倉庫技術產品中的適用狀況。咱們的回答是,Oracle Data Integrator 是一個工具,是對 Oracle Warehouse Builder 的補充,若是涉及在 Oracle 數據倉庫中建立分段層和集成層的工做很重要或者涉及 SOA 或非 Oracle 數據庫源,它將尤其有用。

    對於構建 Oracle 數據倉庫的人來講,Oracle Warehouse Builder 有一組功能強大的特定於 Oracle 的數據倉庫功能,例如,支持關係和多維數據結構的建模、與 Oracle Business Intelligence Discoverer 集成、支持加載漸變維度,以及用於理解數據結構和語義的數據分析器。

    從源數據的最初準備和集成一直到數據倉庫的分段存儲區,Oracle Data Integrator 都起着重要做用。



    Oracle Data Integrator 能夠集成和同步大量不一樣數據源(包括 Web 服務和基於事件的體系結構)中的數據,而且如上圖所示,還能夠爲特定於 Oracle 數據庫的功能(如 Oracle 更改數據捕獲)提供方便的圖形界面。將數據集成並複製到數據倉庫分段存儲區後,Oracle Warehouse Builder 會接替後續工做,建立並填充操做數據存儲和維度倉庫層。

    如今你們對 Oracle Data Integrator 已經有所瞭解,本文將重點關注如何在實際的數據集成案例中使用它。

Oracle Data Integrator 使用示例:跨平臺實時數據集成

    在該案例中,您的任務是從 Oracle 數據庫中提取一些訂單和客戶數據,將其與文件中保存的一些員工數據組合到一塊兒,而後將集成的數據載入 Microsoft SQL Server 2000 數據庫。因爲訂單到達時須要進行分析,所以您但願以儘量接近實時的速度將它們直接傳遞到目標數據庫,並僅提取新的和通過更改的數據以保持儘量小的負載。您已經在 Oracle 技術網上了解了 Oracle Data Integrator 的相關信息,並但願使用這一新工具來提取和加載數據。

您首先登陸到 Oracle Data Integrator 並啓動 Topology Manager,以下圖所示。



在 Oracle Data Integrator 中,物理數據庫、服務或基於事件的數據源均稱爲數據服務器。使用 Topology Manager 建立三個新的數據服務器:

一個 Oracle 數據庫數據服務器,使用 SYSTEM 用戶的憑證設置,映射到數據庫上的 ORDERS 和 ORDERS_WORKAREA 模式。ORDERS 模式包含您要提取的訂單數據,而 ORDERS_WORKAREA 模式是您專門設置的一個空模式,用來存放 Oracle Data Integrator 建立的工做表。使用 Oracle JDBC 驅動程序創建該鏈接。 
一個文件數據服務器,映射到以逗號分隔的文件(其中包含員工詳細信息)。使用 Sunopsis 文件 JDBC 驅動程序創建該鏈接。 
一個 Microsoft SQL Server 數據服務器,映射到名爲 ORDERS_DATA_MART 的數據庫。使用 Sun JDBC-ODBC 橋接 JDBC 驅動程序創建該鏈接,或者使用 Microsoft JDBC 驅動程序(能夠從 Microsoft Web 站點下載)。 
定義數據服務器以後,您能夠退出 Topology Manager 並啓動 Designer。使用 Designer,您能夠建立表明 Oracle、文件以及 Microsoft SQL Server 表和文件的數據模型,這在 Oracle Data Integrator 中稱爲數據存儲。首先建立 Oracle 和 Microsoft SQL Server 模型,而後使用反向功能將表的元數據導入 Oracle Data Integrator 的信息庫中,以下圖所示。

若是已經定義了全部數據模型,而且已經手動輸入源以及目標表和文件的詳細信息或對其進行反向工程,Designer 將顯示您目前在項目中使用的全部數據存儲的列表,以下圖所示。



肯定基礎源表是否未定義主鍵,您可使用 Designer 應用程序定義它們,而後讓 Oracle Data Integrator 以「虛擬方式」強制執行,由於 Oracle Data Integrator 的不少映射功能都依賴於所定義的約束。

既然已經定義了數據存儲,您能夠開始設置獲取源數據的更改數據捕獲過程了。

可是,在此以前,您須要將提供更改數據捕獲功能的知識模塊導入項目。爲此,單擊 Designer 應用程序的 Projects 選項卡,右鍵單擊項目,而後選擇 Import->Import Knowledge Modules。從列表中選擇如下知識模塊,它們可提供更改數據捕獲功能並將在項目的其餘部分中使用。

CKM SQL 
IKM SQL 增量更新 
JKM Oracle 10g Consistent (LOGMINER) 
LKM File to SQL 
LKM SQL to SQL 
如今,所需的知識模塊已經可用,您能夠編輯之前建立的 Oracle 模塊並選擇 Journalizing 選項卡。因爲您但願以一致的方式捕獲對 ORDERS 和 CUSTOMER 表的更改,所以選擇了 Consistent 選項和 JKM Oracle 10g Consistent (LOGMINER) 知識模塊。該知識模塊(以下圖所示)將使用 Oracle 數據庫 10g 的 LogMiner 功能捕獲新的和通過更改的數據,並使用 Oracle 流以異步方式在隊列中傳播更改。



該知識模塊提供了三個配置選項。您能夠選擇下列值來配置該模塊:

Asynchronous Mode:Yes 
Auto-Configuration:Yes 
Journal Table Options:default 
單擊 Apply 保存更改,而後單擊 OK 完成配置。如今,您須要將表添加到更改數據捕獲集合中。

爲此,在 Designer 的模塊列表中找到 Oracle 數據服務器,依次右鍵單擊 CUSTOMERS 和 ORDERS 表,而後選擇 Changed Data Capture ->Add to CDC。而後,再次編輯模型的 Journalized Tables 選項卡,使用向上和向下箭頭鍵將 ORDERS 表置於 CUSTOMERS 表的上面。

如今,您能夠建立從這兩個表中捕獲更改數據的日誌了。爲此,再次右鍵單擊該模型,並選擇 Changed Data Capture ->Start Journal。單擊 OK 在本地執行代碼,而後啓動 Operator 應用程序檢查操做進程。若是一切正常,您將看到一個相似於如下的完成步驟列表。



若是該過程遇到錯誤,一般是因爲您使用了不具備所需權限的用戶賬戶定義 Oracle 鏈接。查看您提供的用戶詳細信息和 Oracle Data Integrator 文檔以解決全部問題,而後再繼續該練習的其他部分。

接下來,您要向日志中添加一個用戶,方法是:返回 Designer 應用程序,右鍵單擊 Oracle 源數據服務器,並選擇 Changed Data Capture ->Subscriber->Subscribe。添加一個新用戶,並在本地執行代碼以確保代碼正確執行(某些操做可能會發出警告,由於在前面的步驟中已經建立了所需的表)。該步驟完成後,您已經創建了更改數據捕獲過程,能夠開始構建接口了。

該項目須要兩個接口,第一個接口用於從 Oracle 源數據庫中提取現有的數據集,將其與源文件中的數據聯合到一塊兒,而後將組合數據載入目標 Microsoft SQL Server 數據庫,以下圖所示。

注意,目標表中的某些列已經自動映射,但 SALES_PERSON_ID、SALES_PERSON_NAME 和 CUSTOMER_NAME 等其餘列最初並未映射,由於映射過程找不到匹配的源列。如今,您將手動映射這些列,使用表達式編輯器輸入使用源或目標數據庫語法的 SQL 表達式,具體取決於發生轉換的位置。

若是單擊 Flow 選項卡,您將看到用於加載和集成數據的實際知識模塊,以下圖所示。

Oracle Data Integrator 已經選擇了默認知識模塊來實現從任何數據庫和文件中提取數據,而後以增量方式載入任何數據庫。稍後,您能夠將這些知識模塊更改成更適合您的特定數據庫和版本的模塊,但如今請保留這些模塊的默認設置。

最後,以下圖所示,單擊 Control 選項卡,以選擇用於處理目標表的約束錯誤的控制知識模塊。選擇 CKM SQL Knowledge Module 以處理符合 ISO-92 的數據庫中的錯誤數據。



如今,您能夠測試接口了。爲此,單擊接口對話框右下角的 Execute,而後打開 Operator 應用程序檢查接口進度,以下圖所示。



因爲接口的執行未出現錯誤,您能夠在 Designer 應用程序中導航到目標數據存儲並查看加載的數據,以下圖所示。

如今,您已經設置了初始負載,下面能夠定義經過先前建立的日誌表加載新的和通過更改的數據的接口了。

爲此,再建立一個接口,但此次,當您添加 CUSTOMERS 和 ORDERS 源表時,單擊代表使用日誌記錄的數據而非數據存儲內容的複選框。爲一個日誌記錄表選擇該複選框後,系統將自動爲一致集合中的全部其餘表選中該複選框,以下圖所示。



將日誌記錄表添加到接口後,您能夠按照與先前徹底相同的方式構建接口的其他部分,惟一的區別是,第二個接口以日誌記錄的數據而非源表內容做爲源數據。

要測試第二個接口,您能夠將一些新記錄插入 ORDERS 和 CUSTOMERS 表,而後使用 Designer 接口來擴展日誌窗口;稍後,您將自動擴展該窗口,並將其做爲 Oracle Data Integrator 程序包的一部分進行清除。但如今,右鍵單擊 Oracle 數據模型,並從上下文菜單中選擇 Changed Data->Consumption->Extend Window,使新的和通過更改的數據的最新集合可用於第二個接口,以下圖所示。



您能夠快速檢查哪些行在表日誌中(右鍵單擊相關的數據存儲,選擇 Changed Data Capture,而後選擇 Journal Data…),也能夠執行接口(在編輯器中再次打開它,並單擊屏幕右下角的 Execute)。

因爲您已經使用所建立的第一個接口將最初的數據集合載入目標數據中心,如今能夠建立一個 Oracle Data Integrator 程序包來執行下列步驟:

檢查 ORDERS 和 CUSTOMER 日誌記錄數據,以查看是否已添加新的或通過更改的數據記錄。若是檢測到預約義數量的日誌記錄,運行程序包的其他部分或跳到最後一步,無需加載任何數據。 
若是檢測到日誌記錄數據,擴展日誌窗口。 
執行該接口,以讀取日誌記錄數據,將其與文件聯合,並加載目標數據存儲。 
清除日誌窗口。 
再次啓動該程序包。 
建立該程序包而後將其做爲 Oracle Data Integrator 案例部署可有效地建立一個實時、連續運行的 ETL 過程。使用 Oracle Data Integrator 的事件檢測功能,該程序包將在檢測到預先設置的更改數據記錄數或通過指定的毫秒數後自行啓動。經過爲日誌記錄數據的數量和超時設置相應的閾值,您能夠建立一個延遲最小的實時集成過程。

要建立該程序包,導航到 Designer 應用程序的 Projects 選項卡,找到包含您先前定義的接口的文件夾,找到 Packages 項,右鍵單擊該項,而後選擇 Insert Package。爲該程序包指定一個名稱,而後導航到程序包詳細信息對話框的 Diagram 選項卡。

使用右側的工具箱,轉至 Event Detection 文件夾並將 OdiWaitForLogData 工具添加到程序包畫布中,以下圖所示。該工具將按期輪詢日誌記錄數據,若是未找到任何行,該工具將失敗,若是在日誌中檢測到預先設置的行數,該工具將進入程序包的下一個步驟。

您能夠將工具屬性設置爲檢查先前定義的更改數據捕獲集合,並在發現 3 個日誌行或檢查開始一分鐘後退出。

如今,您能夠添加一個擴展日誌窗口以讀入新數據的步驟。爲此,導航到模型列表,並將 Oracle 模型拖放到畫布上。選擇該模型,查看屬性,而後將 Model Type 列表更改成 Journalizing Model,以下圖所示。

而後,單擊 Extend Window 複選框,以代表該日誌步驟將擴展日誌窗口。

接下來,將從日誌提取數據的接口添加到映射,而後將 Oracle 模型再次添加到程序包中,但此次選擇 Purge Window 選項,以便在讀取日誌後將其清除。最後,將 Utilities 文件夾中的 OdiStartScen 工具添加到工具箱,以便在其完成後再次重啓,您還能夠添加顯示步驟流程的鏈接器(以下圖所示),具體取決於第一個步驟是否檢測到日誌行。



因爲最後的 OdiStartScen 步驟指的是程序包生產版本中的狀況,您能夠在 Designer 應用程序的 Project 選項卡中找到要使用的程序包,右鍵單擊該程序包,並選擇 Generate Scenario。建立了案例以後,您能夠編輯 OdiStartScen 步驟的屬性,使其引用您剛剛生成的案例名稱。將這最後一步添加到程序包以後,您就能夠確保它連續運行,並以實時方式將 Oracle 源表中新的和通過更改的數據傳播到目標數據庫。

總結
Oracle Data Integrator 是 Oracle 融合中間件產品系列的一個新成員,您能夠利用它跨衆多平臺執行面向數據、事件和服務的集成。它對 Oracle Warehouse Builder 進行了補充,併爲特定於 Oracle 數據庫的功能(例如,批量數據加載和 Oracle 更改數據捕獲)提供了圖形界面。本文探究瞭如何使用 Oracle Data Integrator 跨不一樣的平臺建立實時數據集成過程,還探究了集成過程的聲明式方法,該方法可以讓您集中精力定義業務規則,而不用考慮實現細節。

Mark Rittman [http://www.rittmanmead.com/blog] 是一位 Oracle ACE,而且是 Rittman Mead Consulting 的創始人之一,Rittman Mead Consulting 是 Oracle 的專業合做夥伴,總部設在英國,並致力於 Oracle 商務智能和數據倉庫。他按期向 OTN 和 OTN 論壇投稿,而且是 Oracle Press 即將在 2008 年出版的《Oracle 商務智能套件開發人員指南》一書的做者之一

相關文章
相關標籤/搜索