基於OracleCDC技術實現的變更數據抽取方法
2023-05-22 06:05:41 3
專利名稱::基於OracleCDC技術實現的變更數據抽取方法
技術領域:
:本發明涉及一種基於OracleCDC技術實現的變更數據抽取方法。
背景技術:
:在構建數據倉庫的ETL過程中,變更數據的抽取是一個非常關鍵的環節.對變更數據抽取的解決方案,一般需要達到以下兩點要求1.準確性,能夠將業務表的變更數據按一定的頻率準確的取到數據倉庫中。2.性能,不能對業務資料庫、業務表造成太大的壓力,不能影響現有業務系統的性能。目前實現數據同步最常用的三種方式1.時間戳同步使用業務表中某一欄位做為判斷新舊數據的依據,該欄位可以是時間類型,也可以是int型。使用該種方式存在以下問題無法捕獲對時間戳以前數據的delete和update才喿作,在數據準確性上受到了一定的限制,而實際業務中delete和update的才喿作還比較普遍;要求業務系統的表必須有一個可以標識新舊數據的列,而某些表沒有設置這種列。2.全表掃描使用數據倉庫中的當前表與業務系統表進行對比,取得變化了的數據,使用全表掃描存在以下問題需要將業務系統中表全部轉輸,造成很高的網絡負載;需要對兩版本的表進行全表掃描,性能代價非常高;無法反映數據的歷史狀態,如無法捕捉庫存的歷史變化記錄。3.觸發器在要抽取的表上建立需要的觸發器,一般要建立插入、修改、刪除三個觸發器,每當源表中的數據發生變化,就被相應的觸發器將變化的數據寫入一個臨時表,抽取線程從臨時表中抽取數據,臨時表中抽取過的數據被標記或刪除。觸發器方式的優點是數據抽取的性能較高,缺點是要求業務表建立觸發器,對業務系統有一定的影響。
發明內容本發明的目的就是針對上述的不足,提供了一種基於OracleCDC技術實現的變更數據抽取方法。本發明提供的基於OracleCDC技術實現的變更數據抽取方法,包括如下步驟1)解析xml文件信息,獲取配置信息;這些信息包括原表,快照表,目的表,欄位等。用於後續程序中建表和發送目標等。2)利用酉己置4言息中username,tableDescriptions4言息,4吏用oracle中的dbms-cdc—publish來創建一個變更表,用於捕獲源表變更記錄;可以使用標準SQL語句來創建這一個存儲過程,通過這創建變更表,用來監控源表的變更,把源表中得每一次變更記錄到變更表中。3)利用dbms—cdc—publish創建訂閱用戶,且激活訂閱用戶;可以使用標準SQL語句來創建這一個存儲過程,訂閱用戶是用來訂閱變更變化的,當變更表中有數據變更信息後,訂閱用戶就能收到這個變更信息。4)通過dbms一cdc-publish創建一個訂閱窗口和訂閱視圖,以視圖的形式來獲取一個時間段的變更數據;可以使用標準SQL語句來創建這一個存儲過程,訂閱窗口和視圖表示這一個時間段內訂閱的變更表信息有哪些變化,並把這些變化數據通過程序提取出來。5)當獲取到變更數據以後,將變更數據轉化成一個DataObject對象;獲取資料庫數據信息,將每一行數據進行解析,並打包放入DataObject對象中。進入等待發送隊列中。6)將Do對象發送到目標服務,當目標服務處理完成返回結果後進入第7)步。7)數據傳送成功後刪除訂閱視圖與窗口,表示這一次變更數據抽取過程完畢;可以使用標準SQL語句來創建這一個存儲過程。刪除這一次訂閱視圖與窗口後。表示這一個時間段內的同步完成。實現上述的方法的裝置,包括一解析單元,用於解析xml配置文件信息,獲取配置信息;一變更表創建單元,用於利用配置信息中資料庫連接權限以及資料庫表單描述信息,使用oracle中的dbms—cdc—publish來創建一個變更表;一訂閱用戶創建單元,用於使用dbms-cdc—publish創建訂閱用戶,並且激活訂閱;一訂閱視圖創建單元,用於創建一個訂閱窗口和訂閱S見圖,以視圖的形式來獲取一個時間段的變更數據;一數據獲取單元,用於將變更數據轉化成一個DataObject對象;一傳送與判斷單元,用於將Do對象發送到目標服務;一刪除訂閱單元,用於在數據傳送成功後刪除訂閱-現圖與窗口。本發明具有如下優點1.無需編程,現有編程人員可以將時間花費在更有價值的項目上。公司可以利用遺留系統並跨所有支持的平臺整合數據,無需對現有環境進行更改。可以輕鬆地適應計算環境中未來的變更,以使您的投資能適應未來。2.高性能通信,支持高效的數據傳輸,包括大對象二進位(L0B)文件,如多々某體音頻和一見頻數據。3.確保信息直接在源和目標系統之間最有效、最快速的;洛徑中流動。圖l是本發明實施例的總流程圖;圖2是本發明實施例的循環處理數據子流程圖。具體實施例方式一種基於OracleCDC技術實現的變更數據抽取方法,具體來說是這樣的CDCSource作為現有技術直接面對用戶,提供一個完整的UI頁面,按照提示配置屬性,打包後成功部署到伺服器上。在UI頁面中,選擇CDCSource構件,可以通過界面連接屬性,直接添加配置資料庫地址,用戶名,密碼,源表名,快照表名,目的表名,以及所要監控變更的欄位列表等信息,這是容易實現的。如圖1所示,本方法開始於步驟101,解析xbean.xml文件信息,獲取配置信息;這些信息包括原表,快照表,目的表,欄位等。用於後續程序中建表和發送目標等。然後進入步驟102,獲取用戶handle,subhandle是ORACLE中訂閱ID,當一個源表被發布後,訂閱用戶創建訂閱時生成一個subhandle,用來記錄訂閱4言息。再進入步驟103,返回Number類型數據,如果返回失敗,則返回步驟102;如果成功,則進入下一步驟。步驟利用dbms—cdc—publish創建訂閱用戶,然後進入步驟105激活訂閱用戶;使用標準SQL語句來創建這一個存4諸過程。訂閱用戶是用來訂閱變更變化的。當變更表中有數據變更信息後,訂閱用戶就能收到這個變更信息。然後進入步驟1G6,循環處理數據子流程,流程結束。如圖2所示,循環處理子流程是這樣的首先開始於步驟201,創建訂閱用戶。然後進入步驟202通過dbms—cdc-publish創建一個訂閱一見圖,以視圖的形式來獲取一個時間段的變更數據;使用標準SQL語句來創建這一個存儲過程。訂閱窗口和視圖表示這一個時間^敬內訂閱的變更表信息有哪些變化,並把這些變化數據通過程序提取出來。再進入步驟203,獲取到變更數據,將變更數據轉化成一個DataObject對象;獲取資料庫數據信息,將每一行數據進行解析,並打包放入DataObject對象中。進入等待發送隊列中。然後進入步驟204,將Do對象發送到目標服務。進入步驟205,判斷目標服務返回值,如果失敗,進入步驟2051處理異常,然後返回步驟204;如果成功,進入下一步。最後進入步驟206和207,數據傳送成功後刪除訂閱視圖與窗口,表示這一次變更數據抽取過程完畢。使用標準SQL語句來創建這一個存儲過程。刪除這一次訂閱視圖與窗口後。表示這一個時間段內的同步完成。然後返回步驟201,開始下一循環。權利要求1.一種基於OracleCDC技術實現的變更數據抽取方法,其特徵在於包括如下步驟1)解析xml文件信息,獲取配置信息;2)利用配置信息中username,tableDescriptions信息,使用oracle中的dbms_cdc_publish來創建一個變更表,用於捕獲源表變更記錄;3)利用dbms_cdc_publish創建訂閱用戶,且激活訂閱用戶;4)通過dbms_cdc_publish創建一個訂閱窗口和訂閱視圖,以視圖的形式來獲取一個時間段的變更數據;5)當獲取到變更數據以後,將變更數據轉化成一個DataObject對象;6)將Do對象發送到目標服務,當目標服務處理完成返回結果後進入第7)步;7)數據傳送成功後刪除訂閱視圖與窗口,表示這一次變更數據抽取過程完畢。2.實現權利要求所述的方法的裝置,其特徵在於包括一解析單元,用於解析xml配置文件信息,獲取配置信息;一變更表創建單元,用於利用配置信息中資料庫連接權限以及資料庫表單描述信息,使用oracle中的dbms-cdc—publish來創建一個變更表;一訂閱用戶創建單元,用於使用dbms-cdc-publish創建訂閱用戶,並iU敫活訂閱;一訂閱:現圖創建單元,用於創建一個訂閱窗口和訂閱—見圖,以i見圖的形式來獲取一個時間段的變更數據;一數據獲取單元,用於將變更數據轉化成一個DataObject對象;一傳送與判斷單元,用於將Do對象發送到目標服務;一刪除訂閱單元,用於在數據傳送成功後刪除訂閱-現圖與窗口。全文摘要一種基於OracleCDC技術實現的變更數據抽取裝置,包括一解析單元,一變更表創建單元,一訂閱用戶創建單元,一訂閱視圖創建單元,一數據獲取單元,一傳送與判斷單元,一刪除訂閱單元,本發明無需編程,能高性能的通信,確保信息直接在源和目標之間最有效、最快速的路徑中流通。文檔編號G06F17/30GK101645072SQ20091001820公開日2010年2月10日申請日期2009年8月25日優先權日2009年8月25日發明者剛周,皮開元,琦舒,俊陳申請人:山東中創軟體商用中間件股份有限公司