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