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

java實時數據集成簡介

編輯:關於JAVA

現在,復雜的“可熱插拔”系統和面向服務的體系結構(SOA)得到了廣泛應用,這使得將數據合理地整合在一起的難度日益增加。盡管您的主要應用程序數據庫在Oracle數據庫上運行,但是可能還有其他較小的系統在其他供應商提供的數據庫和平台上運行。您的應用程序本身可以通過 Web服務之類的技術進行交互,應用程序和數據可以遠程托管,也可以由您在企業數據中心內進行管理。

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

Oracle Data Integrator產品體系結構

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

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

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

Designer 用於定義數據存儲(表、文件、Web服務等)、接口(數據映射)以及程序包(包括接口在內的幾組集成步驟)。

Topology Manager 用於創建和管理到數據源和代理的連接,通常限制為只有管理員可以訪問。

Operator 用於查看和管理產品集成作業。

Security Manager 管理用戶及其信息庫權限。

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

聲明式設計

一般來說,數據集成任務涉及兩個主要的領域:

關於轉換哪位數據並將其與其他位相結合的業務規則

關於數據的實際提取、加載等操作方式的技術細節

這種劃分意味著,定義業務規則的人通常是機構的技術業務專家或數據專家,而技術細節則往往留給開發人員和 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 跨不同的平台創建實時數據集成過程,還探究了集成過程的聲明式方法,該方法可讓您集中精力定義業務規則,而不用考慮實現細節。

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