欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)同步方法及裝置的制作方法

文檔序號:6468201閱讀:126來源:國知局

專利名稱::一種數(shù)據(jù)同步方法及裝置的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及計算機領(lǐng)域,尤指一種數(shù)據(jù)同步方法及裝置。
背景技術(shù)
:在大型的電子商務(wù)網(wǎng)站中,經(jīng)常要從數(shù)據(jù)倉庫中同步計算好的數(shù)據(jù)到前臺的聯(lián)機事務(wù)處理(On-LineTransactionProcessing,OLTP)的曱骨文ORACLE數(shù)據(jù)庫中,以供前臺的應(yīng)用服務(wù)器查詢。ORACLE數(shù)據(jù)庫中包括一個撤銷/回5錄空間(undotablespace),當(dāng)一個會話對數(shù)據(jù)庫進行l(wèi)t據(jù)操作語言(DataManipulationLanguage,DML)的更新和刪除(UpdateandDelete)操作時,會把影響數(shù)據(jù)行的原始數(shù)據(jù)遷到另外一個地方存起來,這個地方就是撤銷/回滾表空間。在此會話沒有提交(Commit)之前,其它會話訪問這些數(shù)據(jù)行時,發(fā)現(xiàn)數(shù)據(jù)已被修改,但沒有被提交,根據(jù)存儲的撤銷/回滾地址信息,可以到撤銷/回滾表空間中去獲取原始數(shù)據(jù),但在此會話沒有提交前或回滾完成前,所占用的回滾段是不會釋放的。目前常用的同步數(shù)據(jù)的方法,其同步的體系結(jié)構(gòu)如圖1所示。圖l中,tl表為前臺OLTPORACLE數(shù)據(jù)庫中的一張表;數(shù)據(jù)倉庫DW(datawarehouse)為后臺的數(shù)據(jù)倉庫,上層服務(wù)器(Application)從tl表中獲取數(shù)據(jù)。同步數(shù)據(jù)的邏輯如下(以下命令都在前臺數(shù)據(jù)庫執(zhí)行)第一步刪除用戶表tl表中的數(shù)據(jù)(deletefromschemal.tablename),將刪除的數(shù)據(jù)暫時放到招i銷/回滾束空間中。第二步從(后臺數(shù)據(jù)倉庫的)用戶表t2表中獲取數(shù)據(jù)插入到用戶表tl表中(insertintoschemal.tablenameselect*fromschema2.tablename劍nk一dw),同步過來的、尚未提交的數(shù)據(jù)也暫存于撤銷/回滾表空間中。第三步提交(commit)。第四步若出現(xiàn)異常,回滾(rollback)。由于前臺和數(shù)據(jù)倉庫都是采用ORACLE數(shù)據(jù)庫,可以直接通過數(shù)據(jù)庫連接(databaselink)導(dǎo)入/出數(shù)據(jù);上述步驟的第二步中所使用的Ink—dw就是一個數(shù)據(jù)庫連接?,F(xiàn)有技術(shù)的數(shù)據(jù)同步方法,由于同一數(shù)據(jù)業(yè)務(wù)的所有操作均在同一張表中進行,即后臺數(shù)據(jù)倉庫中的一張表對應(yīng)前臺數(shù)據(jù)庫的一張表,當(dāng)操作進行時,將會有大量數(shù)據(jù)需要被放到撤銷/回滾表空間。由于上述原因?qū)е卢F(xiàn)有技術(shù)存在下列缺點(1)在上述步驟中,第一步和第二步將會消耗大量的撤銷/回滾表空間,所以經(jīng)常會在這里出現(xiàn)問題,如果消耗完所有撤銷/回滾表空間,將會影響到其它正常的DML(Insert,UpdateandDelete)操作,即影響到業(yè)務(wù)的正常進行。如果在高峰時期,撤銷/回滾表空間被占滿,那么應(yīng)用服務(wù)器向數(shù)據(jù)庫發(fā)出的DML語句,都會出現(xiàn)等待,進而把應(yīng)用服務(wù)器端配置的連接池占滿,因為進入應(yīng)用服務(wù)器的請求越來越多,而這些請求因得不到連接,都要排隊等待,從而形成惡性循環(huán),很快就會把應(yīng)用服務(wù)器的內(nèi)存資源等消耗完,進而導(dǎo)致應(yīng)用服務(wù)器死機。(2)第一步和第二步執(zhí)行時間過長,在這么長的時間之內(nèi),如果出現(xiàn)異常,將會進入第四步,即回滾步驟。從而導(dǎo)致容錯能力比較差,且進入回滾狀態(tài)后,因為數(shù)據(jù)量巨大,ORACLE做回滾的時間將會非常長,進而影響了生產(chǎn)數(shù)據(jù)庫的性能。(3)同步數(shù)據(jù)的效率低,這個效率損耗主要存在于第一步的刪除操作中。(4)不具有斷點續(xù)傳能力。(5)無法監(jiān)控同步數(shù)據(jù)的進度。隨著同步數(shù)據(jù)量越來越大,前臺ORACLE數(shù)據(jù)庫的撤銷/回滾表空間很容易被占滿,出現(xiàn)影響業(yè)務(wù)的正常進行的情況越來越多,給企業(yè)的生產(chǎn)數(shù)據(jù)庫帶來嚴(yán)重的安全隱患。
發(fā)明內(nèi)容本發(fā)明實施例提供一種數(shù)據(jù)同步方法及裝置,解決了數(shù)據(jù)同步量日漸增大時的擁堵問題,提高了數(shù)據(jù)同步的速度和效率。一種數(shù)據(jù)同步方法,包括預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表,當(dāng)從所述源數(shù)據(jù)表向所述目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)時,執(zhí)行下列步驟從所述兩張目標(biāo)數(shù)據(jù)表中確定出一張當(dāng)前目標(biāo)數(shù)據(jù)表;從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù);同步數(shù)據(jù)完成后,應(yīng)用服務(wù)器轉(zhuǎn)向訪問所述當(dāng)前目標(biāo)數(shù)據(jù)表。根據(jù)本發(fā)明的上述方法,所述應(yīng)用服務(wù)器通過預(yù)先建立的上層視圖訪問所述上層視圖指向的一張目標(biāo)數(shù)據(jù)表;所述應(yīng)用服務(wù)器轉(zhuǎn)向訪問所述當(dāng)前目標(biāo)數(shù)據(jù)表,具體包括更新預(yù)先建立的上層視圖,使其指向所述當(dāng)前目標(biāo)數(shù)據(jù)表。根據(jù)本發(fā)明的上述方法,所述從所述兩張目標(biāo)數(shù)據(jù)表中確定出一張為當(dāng)前目標(biāo)數(shù)據(jù)表,包括分別計算所述兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù);確定所述記錄數(shù)為零的一張目標(biāo)數(shù)據(jù)表為所述當(dāng)前目標(biāo)數(shù)據(jù)表。根據(jù)本發(fā)明的上述方法,所述從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)時,包括直接向確定出的所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù);或刪除確定出的所述當(dāng)前目標(biāo)數(shù)據(jù)表,并創(chuàng)建一張新的目標(biāo)數(shù)據(jù)表作為當(dāng)前目標(biāo)數(shù)據(jù)表,向新創(chuàng)建的當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)。根據(jù)本發(fā)明的上述方法,所述從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù),具體包括確定所述源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若千存儲區(qū)域;確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息;根據(jù)所述存儲地址信息,分別將所述存儲區(qū)域中的待同步數(shù)據(jù)同步到所述當(dāng)前目標(biāo)數(shù)據(jù)表中。根據(jù)本發(fā)明的上述方法,所述根據(jù)所述存儲地址信息,分別將所述存儲區(qū)域中的待同步數(shù)據(jù)同步到所述當(dāng)前目標(biāo)數(shù)據(jù)表中,具體包括根據(jù)所述存儲地址信息,由一個數(shù)據(jù)同步進程依次同步每一個所述存儲區(qū)域中的數(shù)據(jù)到所述當(dāng)前目標(biāo)數(shù)據(jù)表中;或?qū)⑺龃鎯^(qū)域分為N組,并啟動對應(yīng)的N個數(shù)據(jù)同步進程;并根據(jù)所述存儲地址信息,由每個數(shù)據(jù)同步進程依次同步對應(yīng)組中的各個所述存儲區(qū)域中的數(shù)據(jù)到所述當(dāng)前目標(biāo)數(shù)據(jù)表中。本發(fā)明的上述方法,還包括當(dāng)同步某一個所述存儲區(qū)域中的數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的數(shù)據(jù)的過程;當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域內(nèi)的數(shù)據(jù)的過程。本發(fā)明的上述方法,還包括同步數(shù)據(jù)成功后,清空所述兩張目標(biāo)數(shù)據(jù)表中未同步數(shù)據(jù)的另一張目標(biāo)數(shù)據(jù)表。一種數(shù)據(jù)同步裝置,包括數(shù)據(jù)表建立模塊,用于預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表;以及建立上層視圖,使應(yīng)用服務(wù)器能通過所述上層視圖訪問其指向的一張目標(biāo)數(shù)據(jù)表;確定模塊,用于從所述兩張目標(biāo)數(shù)據(jù)表中確定出一張當(dāng)前目標(biāo)數(shù)據(jù)表;數(shù)據(jù)同步模塊,用于從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù);訪問更新才莫塊,用于當(dāng)同步數(shù)據(jù)成功后,應(yīng)用服務(wù)器轉(zhuǎn)向訪問所述當(dāng)前目標(biāo)數(shù)據(jù)表。根據(jù)本發(fā)明的上述裝置,所述訪問更新模塊,具體用于預(yù)先建立上層視圖,使應(yīng)用服務(wù)器能通過所述上層視圖訪問其指向的一張目標(biāo)數(shù)據(jù)表;當(dāng)同步數(shù)據(jù)完成后,更新所述上層視圖,使其指向所述當(dāng)前目標(biāo)數(shù)據(jù)表。根據(jù)本發(fā)明的上述裝置,所述確定模塊包括計算單元,用于分別計算所述兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù);確定單元,用于確定所述計算單元計算出的記錄數(shù)為零的一張目標(biāo)數(shù)據(jù)表為所述當(dāng)前目標(biāo)數(shù)據(jù)表。根據(jù)本發(fā)明的上述裝置,所述確定單元,還用于當(dāng)所述計算單元計算出的所述兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù)均不為零時,顯示異常,并結(jié)束數(shù)據(jù)同步流程。、根據(jù)本發(fā)明的上述裝置,所述數(shù)據(jù)同步模塊包括存儲區(qū)域確定單元,用于確定所述源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域;地址信息確定單元,用于確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息;數(shù)據(jù)同步單元,用于根據(jù)所述地址信息確定單元確定出的存儲地址信息,分別將所述存儲區(qū)域中的待同步數(shù)據(jù)同步到所述當(dāng)前目標(biāo)數(shù)據(jù)表中。根據(jù)本發(fā)明的上述裝置,所述數(shù)據(jù)同步單元包括第一數(shù)據(jù)同步子單元,用于根據(jù)所述存儲地址信息,由一個數(shù)據(jù)同步進程依次同步每一個所述存儲區(qū)域中的數(shù)據(jù)到所述當(dāng)前目標(biāo)數(shù)據(jù)表中;第二數(shù)據(jù)同步單元,用于將所述存儲區(qū)域分為N組,啟動對應(yīng)的N個數(shù)據(jù)同步進程;并根據(jù)所述存儲地址信息,由每個數(shù)據(jù)同步進程依次同步對應(yīng)組中的各個所述存儲區(qū)域中的數(shù)據(jù)到所述當(dāng)前目標(biāo)數(shù)據(jù)表中。根據(jù)本發(fā)明的上述裝置,所述數(shù)據(jù)同步單元,還包括重啟子單元,用于當(dāng)同步某一個所述存儲區(qū)域中的數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的數(shù)據(jù)的過程;以及當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域中的數(shù)據(jù)的過程。本發(fā)明的上述裝置,還包括數(shù)據(jù)表清空模塊,用于同步數(shù)據(jù)成功后,清空所述兩張目標(biāo)數(shù)據(jù)表中未同步數(shù)據(jù)的另一張目標(biāo)數(shù)據(jù)表。一種同步數(shù)據(jù)的方法,包括將源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的存儲區(qū)域劃分為若干組;并行啟動對應(yīng)的若干個數(shù)據(jù)同步進程,由每個數(shù)據(jù)同步進程同步對應(yīng)組中的各個所述存儲區(qū)域中的待同步數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。根據(jù)本發(fā)明的上述方法,所述由每個數(shù)據(jù)同步進程同步對應(yīng)組中的各個所述存儲區(qū)域中的數(shù)據(jù)是依次進行的,具體包括每個數(shù)據(jù)同步進程處理所述對應(yīng)組中的一個存儲區(qū)域中的待同步數(shù)據(jù);同步所述一個存儲區(qū)域中的待同步數(shù)據(jù)并成功提交后,判斷是否處理完所述對應(yīng)組內(nèi)的所有存儲區(qū)域;當(dāng)未處理完所述對應(yīng)組內(nèi)的所有存儲區(qū)域時,啟動處理所述對應(yīng)組中下一個存儲區(qū)域中的待同步數(shù)據(jù)的過程。本發(fā)明的上述方法,還包括當(dāng)同步某一個所述存儲區(qū)域中的待同步數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的待同步數(shù)據(jù)的過程;當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域內(nèi)的待同步數(shù)據(jù)的過程。根據(jù)本發(fā)明的上述方法,將源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的存儲區(qū)域劃分為若干組之前,還包括確定源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域;以及確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息。根據(jù)本發(fā)明的上述方法,所述確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息,具體包括確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲的最小地址和最大地址;將確定出的包含最小地址和最大地址的地址范圍存儲到一張中間表中。一種同步凝:據(jù)的裝置,包括分組單元,用于將源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的存儲區(qū)域劃分為若干組;數(shù)據(jù)同步單元,用于并行啟動對應(yīng)的若干個數(shù)據(jù)同步進程,由每個數(shù)據(jù)同步進程同步對應(yīng)組中的各個所述存儲區(qū)域中的待同步數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。根據(jù)本發(fā)明的上述置,所述數(shù)據(jù)同步單元,具體包括控制執(zhí)行子單元和判斷子單元;控制執(zhí)行子單元,用于控制每個數(shù)據(jù)同步進程處理所述對應(yīng)組中的一個存儲區(qū)域中的待同步數(shù)據(jù);以及當(dāng)判斷子單元判斷出未處理完所述對應(yīng)組內(nèi)的所有存儲區(qū)域時,啟動處理所述對應(yīng)組中下一個存儲區(qū)域中的待同步數(shù)據(jù)的過程;判斷子單元,用于同步所述一個存儲區(qū)域中的待同步數(shù)據(jù)并成功提交后,判斷是否處理完所述對應(yīng)組內(nèi)的所有存儲區(qū)域。根據(jù)本發(fā)明的上述置,所述數(shù)據(jù)同步單元,還包括重啟子單元,用于當(dāng)同步某一個所述存儲區(qū)域中的待同步數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的待同步數(shù)據(jù)的過程;以及當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域中的待同步數(shù)據(jù)的過程。本發(fā)明的上述置,還包括存儲區(qū)域確定單元,用于確定源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域;地址信息確定單元,用于確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息。本發(fā)明實施例提供的數(shù)據(jù)同步方法及裝置,通過預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表,當(dāng)從所述源數(shù)據(jù)表向所述目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)時,首先從所述兩張目標(biāo)數(shù)據(jù)表中確定出一張當(dāng)前目標(biāo)數(shù)據(jù)表;然后從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù);同步數(shù)據(jù)成功后,應(yīng)用服務(wù)器轉(zhuǎn)向訪問所述當(dāng)前目標(biāo)數(shù)據(jù)表。上述方法中,兩張目標(biāo)數(shù)據(jù)表交替使用,應(yīng)用服務(wù)器訪問的數(shù)據(jù)表和同步數(shù)據(jù)程序訪問的數(shù)據(jù)表互不干涉,避免了將大量數(shù)據(jù)轉(zhuǎn)移到撤銷/回滾表空間中,既有效的避免了撤銷/回滾空間被占滿后造成排隊和擁堵現(xiàn)象,又提高了數(shù)據(jù)同步速度和效率。圖1為現(xiàn)有技術(shù)中數(shù)據(jù)同步方法的原理示意圖2為本發(fā)明實施例中數(shù)據(jù)同步方法的原理示意圖3為本發(fā)明實施例中數(shù)據(jù)同步方法的流程圖4為本發(fā)明實施例中向t2表中同步數(shù)據(jù)的原理示意圖5為本發(fā)明實施例中向tl表中同步數(shù)據(jù)的原理示意圖6為本發(fā)明實施例一中數(shù)據(jù)同步方法的流程圖7為本發(fā)明實施例二中數(shù)據(jù)同步方法的流程圖8為本發(fā)明實施例中向當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)的流程圖9為本發(fā)明實施例中oracle數(shù)據(jù)庫的數(shù)據(jù)存儲格式示意圖10為本發(fā)明實施例中采用多進程并行同步數(shù)據(jù)的流程圖11為本發(fā)明實施例中數(shù)據(jù)同步裝置的結(jié)構(gòu)示意圖;圖12為本發(fā)明實施例中多進程同步數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖。具體實施例方式本發(fā)明實施例提供的數(shù)據(jù)同步方法,其原理如圖2所示。對同一數(shù)據(jù)業(yè)務(wù),預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表,圖2中所示的目標(biāo)數(shù)據(jù)表1和目標(biāo)數(shù)據(jù)表2。也就是說每一張源數(shù)據(jù)表對應(yīng)的目標(biāo)數(shù)據(jù)表有兩張,兩張目標(biāo)數(shù)據(jù)表交替使用。使用目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的應(yīng)用服務(wù)器(Application)通過預(yù)先建立的上層視圖(View)訪問上層視圖指向的那一張目標(biāo)數(shù)據(jù)表。其中,上層視圖的作用相當(dāng)于一個指針,使得服務(wù)器可以通過它訪問數(shù)據(jù)表。例如圖2中,當(dāng)上層視圖指向目標(biāo)數(shù)據(jù)表1時,應(yīng)用服務(wù)器可以通過上層視圖訪問目標(biāo)數(shù)據(jù)表1中的數(shù)據(jù),同時,由于目標(biāo)數(shù)據(jù)表2此時處于空閑狀態(tài),當(dāng)有待同步數(shù)據(jù)時,則可以向目標(biāo)數(shù)據(jù)表2中同步數(shù)據(jù);當(dāng)上層視圖指向目標(biāo)數(shù)據(jù)表2時,應(yīng)用服務(wù)器可以通過上層視圖訪問目標(biāo)數(shù)據(jù)表2中的數(shù)據(jù),同時,由于目標(biāo)數(shù)據(jù)表l此時處于空閑狀態(tài),當(dāng)有待同步數(shù)據(jù)時,則可以向目標(biāo)數(shù)據(jù)表l中同步數(shù)據(jù)。從而使同步數(shù)據(jù)和應(yīng)用服務(wù)器訪問數(shù)據(jù)的進程不必在同一張表中進行,可以互不干擾。體過程如圖3所示,執(zhí)行步驟如下步驟S1:從兩張目標(biāo)數(shù)據(jù)表中確定出一張當(dāng)前目標(biāo)數(shù)據(jù)表??梢酝ㄟ^分別計算兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù),確定記錄數(shù)為零的那一張目標(biāo)數(shù)據(jù)表為當(dāng)前目標(biāo)數(shù)據(jù)表。例如若目標(biāo)數(shù)據(jù)表1中數(shù)據(jù)的記錄數(shù)為零,則說明目標(biāo)數(shù)據(jù)表1為空表,確定目標(biāo)數(shù)據(jù)表1為當(dāng)前目標(biāo)數(shù)據(jù)表;若目標(biāo)數(shù)據(jù)表2中數(shù)據(jù)的記錄數(shù)為零,則說明目標(biāo)數(shù)據(jù)表2為空表,確定目標(biāo)數(shù)據(jù)表2為當(dāng)前目標(biāo)數(shù)據(jù)表。特別的,當(dāng)兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù)均為零時,可以根據(jù)計算順序確定一張或任選其中一張作為當(dāng)前目標(biāo)數(shù)據(jù)表;當(dāng)兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù)均不為零時,顯示異常,并結(jié)束數(shù)據(jù)同步流程。步驟S2:從源數(shù)據(jù)表向確定出的當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)。特別的,從源數(shù)據(jù)表向確定出的當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)時,可以直接向確定出的當(dāng)前目標(biāo)數(shù)據(jù)表(即原有的空的目標(biāo)數(shù)據(jù)表)中同步數(shù)據(jù);也可以將原來的空的目標(biāo)數(shù)據(jù)表刪除(drop)掉,并重新建立一個新的目標(biāo)數(shù)據(jù)表,作為當(dāng)前目標(biāo)數(shù)據(jù)表,向新建立的當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)。對于新建目標(biāo)數(shù)據(jù)表的情況,可以采用如下命令實現(xiàn)createtablet2asselect*fromschema2.tablename@lnk_dw;該命令的操作實際上是一個復(fù)合操作,一個DDL(創(chuàng)建t2表),一個數(shù)據(jù)同步,但ORACLE會把它看成是一個DDL操作,DDL操作基本上不占用撤銷/回滾表空間。另外可以采用并行提示,具體命令如下createtablet2asselect/*+parallel(dw一t2,4)*/*fromschema2.tablename劍nk一dwdw_t2;上面命令中的/*+parallel(dw—t2,4)*/表示對dw—t2表的掃描,采用四個進程來處理。采用此種方案,可以進一步減少撤銷/回滾表空間被占滿的可能,以及可以在一定程度上提高同步數(shù)據(jù)的效率,但整個DDL操作的時間過長,整個同步數(shù)據(jù)的容錯能力比較差,且同步數(shù)據(jù)的進度無法監(jiān)控。從源數(shù)據(jù)表向當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)的具體過程在后邊再進行詳細闡述。步驟S3:同步數(shù)據(jù)成功后,應(yīng)用服務(wù)器轉(zhuǎn)向訪問當(dāng)前目標(biāo)數(shù)據(jù)表。具體包括每次同步數(shù)據(jù)成功后,都需要更新上層視圖,使上層視圖指向新導(dǎo)入數(shù)據(jù)的目標(biāo)數(shù)據(jù)表,從而保證應(yīng)用服務(wù)器能夠順利訪問同步到目標(biāo)數(shù)據(jù)表中的數(shù)據(jù)。特別的,在同步數(shù)據(jù)成功后,會執(zhí)行清空兩張目標(biāo)數(shù)據(jù)表中未同步數(shù)據(jù)的另一張目標(biāo)數(shù)據(jù)表的操作。上述源數(shù)據(jù)表和目標(biāo)數(shù)據(jù)表可以都是后臺數(shù)據(jù)庫倉庫中的數(shù)據(jù)表,也可以都是前臺ORACLE數(shù)據(jù)庫中的數(shù)據(jù)表,還可以一個是后臺數(shù)據(jù)庫倉庫中的數(shù)據(jù)表,另一個是前臺ORACLE數(shù)據(jù)庫中的數(shù)據(jù)表。下面以從后臺數(shù)據(jù)倉庫的數(shù)據(jù)表(源數(shù)據(jù)表)向前臺ORACLE數(shù)據(jù)庫中的數(shù)據(jù)表(目標(biāo)數(shù)據(jù)表)同步數(shù)據(jù)為例進行詳細闡述。在前臺數(shù)據(jù)庫中,對同一數(shù)據(jù)業(yè)務(wù)建立兩張數(shù)據(jù)表,即后臺數(shù)據(jù)倉庫中的一張數(shù)據(jù)表對應(yīng)前臺數(shù)據(jù)庫的兩張數(shù)據(jù)表(tl表和t2表),兩張數(shù)據(jù)表格交替使用,即源數(shù)據(jù)表為后臺數(shù)據(jù)倉庫中的一張數(shù)據(jù)表,目標(biāo)數(shù)據(jù)表為前臺ORACLE數(shù)據(jù)庫中預(yù)先建立的與其對應(yīng)的兩張數(shù)據(jù)表。其原理如圖4和圖5所示。其中,圖4為應(yīng)用服務(wù)器(Application)訪問tl表,從后臺數(shù)據(jù)倉庫向空的t2表中同步數(shù)據(jù)的情況;圖5為應(yīng)用服務(wù)器訪問t2表,從后臺數(shù)據(jù)倉庫向空的tl表中同步數(shù)據(jù)的情況。圖4和圖5中數(shù)據(jù)倉庫DW表示后臺的數(shù)據(jù)倉庫,tl表和t2表為前臺數(shù)據(jù)庫中對應(yīng)同一數(shù)據(jù)業(yè)務(wù)的兩張數(shù)據(jù)表,后臺數(shù)據(jù)倉庫DW中的一張數(shù)據(jù)表對應(yīng)前臺數(shù)據(jù)庫中的兩張數(shù)據(jù)表(tl表和t2表),即可以從后臺數(shù)據(jù)倉庫的一個表中向tl表或t2表中同步數(shù)據(jù)。應(yīng)用月良務(wù)器通過上層一見圖(view)指向tl表或t2表,來確定訪問tl表或t2表中的數(shù)據(jù)。即上層視圖指向tl表,則應(yīng)用服務(wù)器通過上層視圖訪問tl表中的數(shù)據(jù);上層視圖指向t2表,則應(yīng)用服務(wù)器通過上層視圖訪問t2表中的數(shù)據(jù)。從數(shù)據(jù)倉庫DW同步數(shù)據(jù)到前臺ORACLE數(shù)據(jù)庫中,通常都有一定的時間間隔(或說設(shè)定的數(shù)據(jù)同步周期),例如一天同步一次。當(dāng)要同步數(shù)據(jù)時,檢測tl表和t2表;如果tl表為空,則向tl表中同步數(shù)據(jù);如果t2表為空,則向t2表中同步數(shù)據(jù)。圖4所示是應(yīng)用服務(wù)器訪問tl表,t2表為空,向t2表中同步數(shù)據(jù)的情況,待同步數(shù)據(jù)完成,重新定義上層視圖view,使上層視圖指向t2表,然后執(zhí)行如下命令truncatetabletlj將tl表中的數(shù)據(jù)清空。特別的,由于truncate(刪節(jié))方式和刪除(delete)方式的原理不同,使用truncate方式比delete方式快很多,大大減少了刪除舊數(shù)據(jù)的時間。當(dāng)向t2表中同步數(shù)據(jù)并重定義上層視圖后,應(yīng)用服務(wù)器訪問t2表中的數(shù)據(jù),當(dāng)下次再需要同步數(shù)據(jù)時,則將向空的tl表中同步數(shù)據(jù)。圖5所示即為應(yīng)用服務(wù)器訪問t2表,tl表為空,向tl表中同步數(shù)據(jù)的情況。待同步數(shù)據(jù)完成,重新定義上層視圖view,使上層視圖指向tl表,然后執(zhí)行如下命令truncatetablet2;將t2表中的數(shù)據(jù)清空。當(dāng)從源數(shù)據(jù)表(后臺數(shù)據(jù)倉庫的數(shù)據(jù)表)向目標(biāo)數(shù)據(jù)表(前臺ORACLE數(shù)據(jù)庫中的數(shù)據(jù)表)中同步數(shù)據(jù)時,具體可以包括下列實施例一和實施例二所給出的兩種具體執(zhí)行過程。實施例一本發(fā)明實施例一所提供的從源數(shù)據(jù)表(后臺數(shù)據(jù)倉庫的數(shù)據(jù)表)向目標(biāo)數(shù)據(jù)表(前臺ORACLE數(shù)據(jù)庫中的數(shù)據(jù)表)中進行同步數(shù)據(jù)的方法,以tl表作為目標(biāo)數(shù)據(jù)表1,t2表作為目標(biāo)數(shù)據(jù)表2為例進行說明,其流程如圖6所示,執(zhí)行步驟如下步驟S101:計算tl表中的記錄數(shù)Nl。特別的,在處理時,可以使用rownum<2的方式計算tl表的記錄數(shù)N1,具體命令如下Selectcount(*)intoNlfromtlwhererownum<2。其中,rownum表示數(shù)據(jù)記錄,所說的rownum<2的方式具體為只要檢測到數(shù)據(jù)表中有至少一條記錄時即認為數(shù)據(jù)表中有數(shù)據(jù),而不必繼續(xù)檢測更多的數(shù)據(jù)記錄。步驟S102:判斷tl表中是否有數(shù)據(jù)。具體為通過判斷計算出的記錄數(shù)Nl是否等于零來判斷tl表中是否有數(shù)據(jù)。若是,則執(zhí)行步驟S103;若否,則執(zhí)行步驟Slll。步驟S103:從后臺數(shù)據(jù)倉庫向tl表中同步數(shù)據(jù)。從后臺數(shù)據(jù)倉庫中的數(shù)據(jù)表向tl表中同步數(shù)據(jù)的具體過程參見后續(xù)步驟的詳細描述。特別的,進行數(shù)據(jù)同步時,可以釆用現(xiàn)有的數(shù)據(jù)同步方式,也可以根據(jù)ORACLEEXTENT的原理,釆用分段提交的方式。步驟S104:判斷是否同步成功。若是則執(zhí)行步驟S105;若否,則執(zhí)行步驟S108。步驟S105:創(chuàng)建新的上層視圖。創(chuàng)建新的上層視圖,指向tl表,使得應(yīng)用服務(wù)器能夠通過上層視圖訪問tl表中的數(shù)據(jù)。步驟S106:對t2表執(zhí)行清空操作。特別的,對t2表執(zhí)行清空操作時,優(yōu)選使用上述的truncatetable命令快速刪除舊數(shù)據(jù),清空t2表。然后執(zhí)行步驟S107。步驟S107:結(jié)束數(shù)據(jù)同步流程。步驟S108:顯示異常,并結(jié)束數(shù)據(jù)同步流程。步驟S111:計算t2表中的記錄數(shù)N2。在處理時,也可以使用上述rowmmK2的方式計算t2表的記錄數(shù)N2,具體命令行為Selectcount(*)intoN2fromt2whererownum<2。步驟S112:判斷t2表中是否有數(shù)據(jù)。具體為通過判斷計算出的記錄數(shù)N2是否等于零來判斷t2表中是否有數(shù)據(jù)。若是,則執(zhí)行步驟S113;若否,說明兩張表中均有數(shù)據(jù),出現(xiàn)異常,則執(zhí)行步驟S108。步驟S113:從后臺數(shù)據(jù)倉庫向t2表中同步數(shù)據(jù)。從后臺數(shù)據(jù)倉庫中的數(shù)據(jù)表向t2表中同步數(shù)據(jù)的具體過程參見后續(xù)步驟的詳細描述。特別的,進行數(shù)據(jù)同步時,可以采用現(xiàn)有的數(shù)據(jù)同步方式,也可以根據(jù)ORACLEEXTENT的原理,釆用分段提交的方式。步驟S114:判斷是否同步成功。若是則執(zhí)行步驟S115;若否,則執(zhí)行步驟S108。步驟S115:創(chuàng)建新的上層視圖。如果同步數(shù)據(jù)成功,則重新創(chuàng)建上層視圖,指向剛同步數(shù)據(jù)的表,即t2表,使得應(yīng)用服務(wù)器能夠通過上層視圖訪問t2表中的數(shù)據(jù)。步驟S116:對tl表執(zhí)行清空操作。特別的,對tl表執(zhí)行清空操作時,優(yōu)選使用上述的truncatetable命令快速刪除舊數(shù)據(jù),清空tl表。然后執(zhí)行步驟S107。實施例二本發(fā)明實施例二所提供的當(dāng)從源數(shù)據(jù)表(后臺數(shù)據(jù)倉庫的數(shù)據(jù)表)向目標(biāo)數(shù)據(jù)表(前臺ORACLE數(shù)據(jù)庫中的數(shù)據(jù)表)中同步數(shù)據(jù)的過程,仍以tl表作為目標(biāo)數(shù)據(jù)表1,t2表作為目標(biāo)數(shù)據(jù)表2為例進行說明,其流程如圖7所示,執(zhí)行步驟如下步驟S201:分別計算tl表中的記錄數(shù)Nl和t2表中的記錄數(shù)N2。在處理時,仍然可以使用上述rowmmK2的方式計算tl表的記錄數(shù)Nl和t2表中的記錄數(shù)N2,具體命令行為Selectcount(*)intoNlfromtlwhererownum<2;Selectcount(*)intoN2fromt2whererownum<2。步驟S202:判斷tl表和t2表中是否有數(shù)據(jù)。具體包括判斷tl表中的記錄數(shù)N1和t2表中的記錄數(shù)N2是否等于零。若Nl-O,N2*0,則說明tl表中沒有數(shù)據(jù),t2表中有數(shù)據(jù),則執(zhí)行步驟S203;若Nl-0,N2=0,則說明tl表中有數(shù)據(jù),t2表中沒有數(shù)據(jù),則執(zhí)行步驟S213',若Nl-O,N2=0,則說明tl表和t2表中都沒有數(shù)據(jù),則執(zhí)行步驟S223;若Nl-0,N2-0,則說明tl表和t2表中都有數(shù)據(jù),則執(zhí)行步驟S233。步驟S203:從后臺數(shù)據(jù)倉庫向tl表中同步數(shù)據(jù)。從后臺數(shù)據(jù)倉庫的數(shù)據(jù)表向tl表中同步數(shù)據(jù)的具體過程參見后續(xù)步驟的詳細描述。特別的,進行數(shù)據(jù)同步時,可以釆用現(xiàn)有的數(shù)據(jù)同步方式,也可以根據(jù)ORACLEEXTENT的原理,采用分段提交的方式。步驟S204:判斷是否同步成功。若是則執(zhí)行步驟S205;若否,則執(zhí)行步驟S233。步驟S205:創(chuàng)建新的上層視圖。常見新的上層視圖,指向tl表,使得應(yīng)用服務(wù)器能夠通過上層視圖訪問tl表中的數(shù)據(jù)。步驟S206:對t2表執(zhí)行清空操作。特別的,對t2表執(zhí)行清空操作時,優(yōu)選使用上述的truncatetable命令快速刪除舊數(shù)據(jù),清空t2表。然后執(zhí)行步驟S207。步驟S207:結(jié)束數(shù)據(jù)同步流程。步驟S213:從后臺數(shù)據(jù)倉庫向t2表中同步數(shù)據(jù)。從后臺數(shù)據(jù)倉庫的數(shù)據(jù)表向t2表中同步數(shù)據(jù)的具體過程參見后續(xù)步驟的詳細描述G特別的,進行數(shù)據(jù)同步時,可以采用現(xiàn)有的數(shù)據(jù)同步方式,也可以根據(jù)ORACLEEXTENT的原理,采用分段提交的方式。步驟S214:判斷是否同步成功。若是則執(zhí)行步驟S215;若否,則執(zhí)行步驟S233。步驟S215:創(chuàng)建新的上層視圖。如果同步數(shù)據(jù)成功,則重新創(chuàng)建上層視圖,指向剛同步數(shù)據(jù)的表,即t2表,使得應(yīng)用服務(wù)器能夠通過上層視圖訪問t2表中的數(shù)據(jù)。步驟S216:對tl表執(zhí)行清空操作。特別的,對tl表執(zhí)行清空操作時,優(yōu)選使用上述的truncatetable命令快速刪除舊數(shù)據(jù),清空tl表。然后執(zhí)行步驟S207。步驟S223:從tl表和t2表中選擇一個數(shù)據(jù)表。若選擇了tl表,則執(zhí)行步驟S203-207;若選擇了t2表,則執(zhí)行步驟S213-216及步驟207。步驟S233:顯示異常,并結(jié)束數(shù)據(jù)同步流程。上述實施例一中對兩張目標(biāo)數(shù)據(jù)表中的記錄數(shù)逐一判斷,當(dāng)判斷得到第一目標(biāo)數(shù)據(jù)表中記錄數(shù)為零時,則不需再判斷另一個目標(biāo)數(shù)據(jù)表中的記錄數(shù)。實施例二中則是同時計算出兩個目標(biāo)數(shù)據(jù)表中的記錄數(shù),并選擇其中記錄數(shù)為零的一個目標(biāo)數(shù)據(jù)表。下面具體描述步驟S2中從源數(shù)據(jù)表向確定出的當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)的過程,如圖8所示,包括步驟S31:確定源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域。特別的,可以從ORACLE數(shù)據(jù)庫的數(shù)據(jù)字典視圖里查詢到待同步數(shù)據(jù)在源數(shù)據(jù)表中所占用的存儲區(qū)域。步驟S32:確定出上述存儲區(qū)域中的待同步數(shù)據(jù)的存儲地址信息。其中,存儲地址信息至少包括每一個存儲區(qū)域中存儲的待同步數(shù)據(jù)的地址范圍。根據(jù)ORACLE數(shù)據(jù)庫的數(shù)據(jù)字典視圖得到的待同步數(shù)據(jù)在源數(shù)據(jù)表中所占用的存儲區(qū)域,可以計算出每一個存儲區(qū)域內(nèi)的待同步數(shù)據(jù)存儲的最小地址(e—min一rowid)和最大地址(e—max一rowid)。特別的,可以將計算出的每個區(qū)域內(nèi)存儲數(shù)據(jù)的地址范圍保存到一張中間表里,例如一個tmpjowid表。該中間表的表結(jié)構(gòu)可以設(shè)計如下createtabletmp_rowid(idnumber;ROWID—MINVARCHAR2(100),ROWID一MAXVARCHAR2(100));當(dāng)需要時通過查詢該中間表,即可獲取源數(shù)據(jù)表中每個存儲區(qū)域存儲的待同步數(shù)據(jù)的地址信息。步驟S33:根據(jù)存儲地址信息,分別將各存儲區(qū)域中的待同步數(shù)據(jù)同步到當(dāng)前目標(biāo)數(shù)據(jù)表中。具體可以選擇下列兩種方式之一(1)根據(jù)存儲地址信息,由一個數(shù)據(jù)同步進程依次同步每一個存儲區(qū)域中的數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。(2)將確定出的存儲區(qū)域分為N組,并啟動對應(yīng)的N個數(shù)據(jù)同步進程,根據(jù)存儲地址信息,由每個數(shù)據(jù)同步進程依次同步一組中的各個存儲區(qū)域的數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。若同步某一個存儲區(qū)域中數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域內(nèi)數(shù)據(jù)的過程,當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域內(nèi)數(shù)據(jù)的過程。實施例一中步驟S103、步驟S113和實施例二中步驟S203、步驟S213執(zhí)行從后臺數(shù)據(jù)倉庫數(shù)據(jù)表向tl或t2表中同步數(shù)據(jù)時,就是采用上述數(shù)據(jù)同步過程。上述方式(1)是常用的方式,而方式(2)則是基于本發(fā)明實施例數(shù)據(jù)同步方法的特點和ORACLE數(shù)據(jù)庫中數(shù)據(jù)存儲的特點才能實現(xiàn)的。具體分析如下首先,本發(fā)明實施例的上述數(shù)據(jù)同步方法用一個上層視圖將應(yīng)用服務(wù)器與具體的數(shù)據(jù)隔離開來,當(dāng)從數(shù)據(jù)倉庫同步數(shù)據(jù)到前臺ORACLE數(shù)據(jù)庫的數(shù)據(jù)表時,與業(yè)務(wù)系統(tǒng)正在使用的表,即應(yīng)用服務(wù)器正在調(diào)用的數(shù)據(jù)所在的表沒有任何關(guān)系。因此,使得從數(shù)據(jù)倉庫同步數(shù)據(jù)到前臺ORACLE數(shù)據(jù)庫的數(shù)據(jù)表和上層應(yīng)用服務(wù)器調(diào)用數(shù)據(jù)的操作可以不在同一張數(shù)據(jù)表中進行,因此可以互不干擾。其次,ORACLE數(shù)據(jù)庫中數(shù)據(jù)存儲具有如下特點ORACLE數(shù)據(jù)庫的數(shù)據(jù)表由很多個存儲區(qū)域(EXTENTS)組成,每個EXTENT由多個大小一定的連續(xù)的塊(block)組成,數(shù)據(jù)存放在各個塊里。EXTENT是數(shù)據(jù)表空間的最小單位,EXTENT與EXTENT之間在物理位置上不一定是連續(xù)的。但在每個EXTENT內(nèi)部,由一串連續(xù)的block組成,每個EXTENT內(nèi)部各個塊的物理地址是連續(xù)的。其存儲格式如圖9所示。在數(shù)據(jù)同步進程與應(yīng)用服務(wù)器訪問進程互不干擾的情況下,結(jié)合ORACLE數(shù)據(jù)庫中數(shù)據(jù)存儲的上述特點,從而使得同步數(shù)據(jù)可以分段提交,即可以采用方式(2)來實現(xiàn)數(shù)據(jù)同步過程,這樣既可以不影響業(yè)務(wù)系統(tǒng)所訪問的數(shù)據(jù)的準(zhǔn)確性,又能提高數(shù)據(jù)同步的速度。下面以一個具體實例,詳細說明釆用方式(2)實現(xiàn)數(shù)據(jù)同步的過程,可以采用分段提交的方式從源數(shù)據(jù)表(例如后臺數(shù)據(jù)倉庫)向當(dāng)前目標(biāo)數(shù)據(jù)表(例如前臺的tl表或t2表)中同步數(shù)據(jù),如圖10所示,包括下列步驟步驟S331:查詢待同步數(shù)據(jù)所占用的存儲區(qū)域。查詢源數(shù)據(jù)表所在的后臺數(shù)據(jù)倉庫的數(shù)據(jù)字典視圖,可以獲取到待同步數(shù)據(jù)在源數(shù)據(jù)表中所占用的存儲區(qū)域。步驟S332:確定出每一個存儲區(qū)域中的待同步數(shù)據(jù)在源數(shù)據(jù)表中的地址范圍??梢酝ㄟ^查詢存儲的中間表,例如tmp—rowid表,確定每一個存儲區(qū)域中的待同步數(shù)據(jù)在源數(shù)據(jù)表中的地址范圍。步驟S333:將存儲有待同步數(shù)據(jù)的所有存儲區(qū)域劃分為N組。接下來,我們可以對tmpjowid表中的數(shù)據(jù)進行分組處理,分組的方式很多,比如可以按照標(biāo)識ID(Identify)^Mt,分成N組。步驟S334:啟動N個數(shù)據(jù)同步進程分別同步劃分出的N組存儲區(qū)域中的數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。由N個數(shù)據(jù)同步進程并行處理,其中,每個進程對應(yīng)一個組的存儲區(qū)域,執(zhí)行將對應(yīng)組內(nèi)的存儲區(qū)域中的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)表中過程,各組互不干擾,同時進行。在同步各存儲區(qū)域內(nèi)數(shù)據(jù)時采用并行處理,提高了數(shù)據(jù)同步的效率。步驟S335a:逐一處理本組(例如第一組)中的各個存儲區(qū)域中待同步數(shù)據(jù)。具體為處理本組中的一個存儲區(qū)域的待同步數(shù)據(jù),當(dāng)?shù)玫酵匠晒Φ拇_認消息后,啟動同步本組中下一個存儲區(qū)域中的數(shù)據(jù)的過程。步驟S336a:判斷是否同步成功;判斷當(dāng)前存儲區(qū)域的待同步數(shù)據(jù)是否被同步成功。若是,執(zhí)行對應(yīng)的步驟S338a;若否,則需要回滾以便重新執(zhí)行同步該存儲區(qū)域內(nèi)數(shù)據(jù)的過程,執(zhí)行對應(yīng)的步驟S337a。步驟S337a:判斷回滾次數(shù)是否超過設(shè)定閾值。具體為可以預(yù)先設(shè)置回滾(重試)次數(shù)的閾值,并統(tǒng)計重試的次數(shù),當(dāng)重試次數(shù)大于設(shè)定的閥值,則不再重試,并立即退出循環(huán),表示同步該存儲區(qū)域的數(shù)據(jù)失敗。在數(shù)據(jù)同步過程中,釆用重試策略,提高了數(shù)據(jù)同步的容錯能力。若否,則返回重新執(zhí)行步驟S335a,重新同步該存儲區(qū)域內(nèi)的數(shù)據(jù)到目標(biāo)數(shù)據(jù)表中;若是,則執(zhí)行步驟S339a。步驟S338a:提交同步過來的數(shù)據(jù)。若當(dāng)前存儲區(qū)域的數(shù)據(jù)同步成功,則向目標(biāo)數(shù)據(jù)表提交同步過來的數(shù)據(jù)。步驟S339a:判斷是否全部完成,即判斷是否處理完本組內(nèi)的所有存儲區(qū)域。若是,則說明已同步完該組所有存儲區(qū)域的對應(yīng)數(shù)據(jù),執(zhí)行步驟S340;若否則說明沒有同步完該組所有存儲區(qū)域的對應(yīng)數(shù)據(jù),返回步驟S335a,繼續(xù)同步該組中的下一個存儲區(qū)域的數(shù)據(jù)。在并行處理的過程中,可以為每組設(shè)置一個計數(shù)器變量v—done—num,用來對應(yīng)表示每組已經(jīng)同步完數(shù)據(jù)的存儲區(qū)域的個數(shù),這樣可以很方便的計算出每個進程同步數(shù)據(jù)的速度,以及計算出數(shù)據(jù)同步的總的速度?;谏鲜鼋y(tǒng)計還可以方便的實現(xiàn)對凝:據(jù)同步的效率進行監(jiān)控。步驟S335b-S339b為逐一同步第二組中的各個存儲區(qū)域中的數(shù)據(jù)的過程;步驟S335x-S339x為逐一同步第N組中的各個存儲區(qū)域中的數(shù)據(jù)的過程;步驟S335b-S339b........步驟S335x-S339x的處理過程與步驟S335a-S339a對應(yīng)相同,此處不再贅述。步驟S340:結(jié)束數(shù)據(jù)同步流程。上述從源數(shù)據(jù)表向目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)過程,如果采用了多個進程并行處理,一次處理多個存儲區(qū)域(EXTENT)的數(shù)據(jù),在提交的時候就可以同時提交這多個存儲區(qū)域的數(shù)據(jù)給目標(biāo)數(shù)據(jù)表,減少了提交的次數(shù),從而提高了同步數(shù)據(jù)的提交(commit)速度和效率。其中,具體可以同時處理多少個存儲區(qū)域根據(jù)實際情況調(diào)整。上述圖8、圖9、圖IO所給出的從源數(shù)據(jù)表向當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)中,而不限于本發(fā)明實施例所給出的數(shù)據(jù)同步過程中。根據(jù)本發(fā)明實施例的上述數(shù)據(jù)同步方法,可以構(gòu)建一種數(shù)據(jù)同步裝置,如圖ll所示,包括數(shù)據(jù)表建立模塊IO、確定模塊20、數(shù)據(jù)同步模塊30和訪問更新模塊40。數(shù)據(jù)表建立模塊10,用于預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表。確定模塊20,用于從兩張目標(biāo)數(shù)據(jù)表中確定出一張當(dāng)前目標(biāo)數(shù)據(jù)表。較佳的,確定模塊20進一步可以包括計算單元201和確定單元202。計算單元201,用于分別計算兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù)。確定單元202,用于確定計算單元201計算出的記錄數(shù)為零的一張目標(biāo)數(shù)據(jù)表為當(dāng)前目標(biāo)數(shù)據(jù)表。確定單元202,還用于當(dāng)計算單元201計算出的兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù)均不為零時,顯示異常,并結(jié)束數(shù)據(jù)同步流程。數(shù)據(jù)同步模塊30,用于從源數(shù)據(jù)表向確定模塊20確定出的當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)。較佳的,數(shù)據(jù)同步模塊進一步可以包括存儲區(qū)域確定單元301、地址信息確定單元302和數(shù)據(jù)同步單元303。存儲區(qū)域確定單元301,用于根確定源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域。地址信息確定單元302,用于確定出每一個存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息。數(shù)據(jù)同步單元303,用于根據(jù)地址信息確定單元302確定出的存儲地址信息,分別將存儲區(qū)域中的待同步數(shù)據(jù)同步到當(dāng)前目標(biāo)數(shù)據(jù)表中。較佳的,數(shù)據(jù)同步單元303進一步可以包括第一數(shù)據(jù)同步子單元3031和第二數(shù)據(jù)同步子單元3032。第一數(shù)據(jù)同步子單元3031,用于根據(jù)地址信息確定單元302確定出的存儲地址信息,由一個數(shù)據(jù)同步進程依次同步每一個存儲區(qū)域中的數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。第二數(shù)據(jù)同步子單元3032,用于將存儲區(qū)域分為N組,啟動對應(yīng)的N個數(shù)據(jù)同步進程;并根據(jù)地址信息確定單元302確定出的存儲地址信息,由每個數(shù)據(jù)同步進程依次同步對應(yīng)組中的各個存儲區(qū)域的數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。數(shù)據(jù)同步單元303,還包括重啟子單元3033,用于當(dāng)同步某一個存儲區(qū)域的數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的數(shù)據(jù)的過程;以及當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域中的數(shù)據(jù)的過程。訪問更新模塊40,用于當(dāng)數(shù)據(jù)同步模塊30同步數(shù)據(jù)成功后,應(yīng)用服務(wù)器轉(zhuǎn)向確定模塊20確定出的當(dāng)前目標(biāo)數(shù)據(jù)表。訪問更新模塊40,具體用于預(yù)先建立上層視圖,使應(yīng)用服務(wù)器能通過該上層視圖訪問其指向的一張目標(biāo)數(shù)據(jù)表;以及當(dāng)同步數(shù)據(jù)完成后,更新所述上層視圖,使其指向所述當(dāng)前目標(biāo)數(shù)據(jù)表。上述數(shù)據(jù)同步裝置,還包括數(shù)據(jù)表清空模塊50,用于當(dāng)數(shù)據(jù)同步模塊30同步數(shù)據(jù)成功后,清空兩張目標(biāo)數(shù)據(jù)表中未同步數(shù)據(jù)的另一張目標(biāo)數(shù)據(jù)表。上述數(shù)據(jù)同步裝置中的數(shù)據(jù)同步模塊30可以設(shè)置為一個單獨的、用于同步數(shù)據(jù)的裝置,并且可以單獨用于任何數(shù)據(jù)轉(zhuǎn)移的過程中。根據(jù)上述圖8和圖10所示的從源數(shù)據(jù)表向目標(biāo)數(shù)據(jù)表同步數(shù)據(jù)的流程,可以構(gòu)建一種多進程同步數(shù)據(jù)的裝置,如圖12所示,包括分組單元121和數(shù)據(jù)同步單元122。分組單元121,用于將源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的存儲區(qū)域劃分為若干組。數(shù)據(jù)同步單元122,用于并行啟動對應(yīng)的若干個數(shù)據(jù)同步進程,由每個數(shù)據(jù)同步進程同步對應(yīng)組中的各個1存儲區(qū)域中的待同步數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。較佳的,數(shù)據(jù)同步單元122進一步可以包括控制執(zhí)行子單元1221和判斷子單元1222??刂茍?zhí)行子單元1221,用于控制每個數(shù)據(jù)同步進程處理對應(yīng)組中的一個存儲區(qū)域中的待同步數(shù)據(jù);以及當(dāng)判斷子單元判斷出未處理完對應(yīng)組內(nèi)的所有存儲區(qū)域時,啟動處理對應(yīng)組中下一個存儲區(qū)域中的待同步數(shù)據(jù)的過程。判斷子單元1222,用于同步一個存儲區(qū)域中的待同步數(shù)據(jù)并成功提交后,判斷是否處理完對應(yīng)組內(nèi)的所有存儲區(qū)域。數(shù)據(jù)同步單元122,還包括重啟子單元1223,用于當(dāng)同步某一個存儲區(qū)域中的待同步數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的待同步數(shù)據(jù)的過程;以及當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域中的待同步數(shù)據(jù)的過程。上述同步數(shù)據(jù)的裝置,還包括存儲區(qū)域確定單元123,用于確定源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域。地址信息確定單元124,用于確定出每一個存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息。上述數(shù)據(jù)同步裝置在具體實現(xiàn)中可以有多種方式,例如可以通過軟件的實現(xiàn)方式,也可以通過軟件與硬件結(jié)合的方式實現(xiàn)。本發(fā)明實施例提供的數(shù)據(jù)同步方法及裝置,通過預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表,應(yīng)用服務(wù)器通過預(yù)先建立的上層視圖訪問所述上層視圖指向的一張目標(biāo)數(shù)據(jù)表,通過上層視圖,應(yīng)用層不需要去關(guān)心數(shù)據(jù)具體來自哪張表,減少了應(yīng)用實現(xiàn)的復(fù)雜度。當(dāng)從所述源數(shù)據(jù)表向所述目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)時,首先確定出兩張目標(biāo)數(shù)據(jù)表中空的一張為當(dāng)前目標(biāo)數(shù)據(jù)表;然后從源數(shù)據(jù)表向當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù);同步數(shù)據(jù)成功后,更新上層視圖,使其指向當(dāng)前目標(biāo)數(shù)據(jù)表。上述方法中,兩張目標(biāo)數(shù)據(jù)表交替使用,應(yīng)用服務(wù)器訪問的數(shù)據(jù)表和同步數(shù)據(jù)程序訪問的數(shù)據(jù)表互不干涉,避免了將大量數(shù)據(jù)轉(zhuǎn)移到撤銷/回滾表空間中,有效的避免了撤銷/回滾空間被占滿后造成排隊和擁堵現(xiàn)象,又提高了數(shù)據(jù)同步速度和效率。在同步數(shù)據(jù)的過程中,在充分結(jié)合ORACLE表的空間分配及存儲原理的基礎(chǔ)上,并利用ORACLE數(shù)據(jù)表的內(nèi)在存儲機制,同步各存儲區(qū)域中的數(shù)據(jù)到目標(biāo)數(shù)據(jù)表,在數(shù)據(jù)遷移時針對每個存儲區(qū)域執(zhí)行,實現(xiàn)按存儲區(qū)域并行同步數(shù)據(jù),分段提交,在數(shù)據(jù)同步的過程中,減少對前臺ORACLE數(shù)據(jù)庫撤銷/回滾表空間的長時間占用,使撤銷/回滾表空間的總體使用率大大減少,大大降低占滿撤銷/回滾表空間的可能,確保生產(chǎn)數(shù)據(jù)庫的安全。在同步數(shù)據(jù)時,也可以對存儲區(qū)域進行分組,采用并行方式遷移數(shù)據(jù)來進一步提高遷移數(shù)據(jù)的效率。當(dāng)同步某一個存儲區(qū)域中的數(shù)據(jù)失敗時,采用回滾機制,大大提高了系統(tǒng)的容錯能力,同時通過回滾次數(shù)控制機制,避免了無限次回滾等死循環(huán)的發(fā)生。且由于針對每個存儲區(qū)域進行4喿作,且不與應(yīng)用服務(wù)器所訪問的表空間發(fā)生干擾,所使用的當(dāng)前數(shù)據(jù)表的初始狀態(tài)為空沒有干擾數(shù)據(jù),因此,在數(shù)據(jù)同步中斷時,可以繼續(xù)同步未同步過來的部分?jǐn)?shù)據(jù),使得同步數(shù)據(jù)的斷點續(xù)傳成為可能。同時,由于設(shè)置了計數(shù)器變量統(tǒng)計已經(jīng)同步完數(shù)據(jù)的存儲區(qū)域的個數(shù),從而可以實現(xiàn)對數(shù)據(jù)同步的進度、速度和效率進4亍監(jiān)控。以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化、替換或應(yīng)用到其他類似的裝置,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求書的保護范圍為準(zhǔn)。權(quán)利要求1、一種數(shù)據(jù)同步方法,其特征在于,包括預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表,當(dāng)從所述源數(shù)據(jù)表向所述目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)時,執(zhí)行下列步驟從所述兩張目標(biāo)數(shù)據(jù)表中確定出一張當(dāng)前目標(biāo)數(shù)據(jù)表;從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù);同步數(shù)據(jù)完成后,應(yīng)用服務(wù)器轉(zhuǎn)向訪問所述當(dāng)前目標(biāo)數(shù)據(jù)表。2、如權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用服務(wù)器通過預(yù)先建立的上層視圖訪問所述上層視圖指向的一張目標(biāo)數(shù)據(jù)表;所述應(yīng)用服務(wù)器轉(zhuǎn)向訪問所述當(dāng)前目標(biāo)數(shù)據(jù)表,具體包括更新預(yù)先建立的上層視圖,使其指向所述當(dāng)前目標(biāo)數(shù)據(jù)表。3、如權(quán)利要求1所述的方法,其特征在于,所述從所述兩張目標(biāo)數(shù)據(jù)表中確定出一張為當(dāng)前目標(biāo)數(shù)據(jù)表,包括分別計算所述兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù);確定所述記錄數(shù)為零的一張目標(biāo)數(shù)據(jù)表為所述當(dāng)前目標(biāo)數(shù)據(jù)表。4、如權(quán)利要求1所述的方法,其特征在于,所述從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)時,包括直接向確定出的所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步凄t據(jù);或刪除確定出的所述當(dāng)前目標(biāo)數(shù)據(jù)表,并創(chuàng)建一張新的目標(biāo)數(shù)據(jù)表作為當(dāng)前目標(biāo)數(shù)據(jù)表,向新創(chuàng)建的當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)。5、如權(quán)利要求1所述的方法,其特征在于,所述從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù),具體包括確定所述源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域;確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息;根據(jù)所述存儲地址信息,分別將所述存儲區(qū)域中的待同步數(shù)據(jù)同步到所述當(dāng)前目標(biāo)數(shù)據(jù)表中。6、如權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述存儲地址信息,分別將所述存儲區(qū)域中的待同步數(shù)據(jù)同步到所述當(dāng)前目標(biāo)數(shù)據(jù)表中,具體包括根據(jù)所述存儲地址信息,由一個數(shù)據(jù)同步進程依次同步每一個所述存儲區(qū)域中的數(shù)據(jù)到所述當(dāng)前目標(biāo)數(shù)據(jù)表中;或?qū)⑺龃鎯^(qū)域分為N組,并啟動對應(yīng)的N個數(shù)據(jù)同步進程;并根據(jù)所述存儲地址信息,由每個數(shù)據(jù)同步進程依次同步對應(yīng)組中的各個所述存儲區(qū)域中的數(shù)據(jù)到所述當(dāng)前目標(biāo)數(shù)據(jù)表中。7、如權(quán)利要求5所述的方法,其特征在于,還包括當(dāng)同步某一個所述存儲區(qū)域中的數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的數(shù)據(jù)的過程;當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域內(nèi)的數(shù)據(jù)的過程。8、如權(quán)利要求1-7任一所述的方法,其特征在于,還包括同步數(shù)據(jù)成功后,清空所述兩張目標(biāo)數(shù)據(jù)表中未同步數(shù)據(jù)的另一張目標(biāo)數(shù)據(jù)表。9、一種數(shù)據(jù)同步裝置,其特征在于,包括數(shù)據(jù)表建立模塊,用于預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表;確定模塊,用于從所述兩張目標(biāo)數(shù)據(jù)表中確定出一張當(dāng)前目標(biāo)數(shù)據(jù)表;數(shù)據(jù)同步才莫塊,用于從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù);訪問更新模塊,用于當(dāng)同步數(shù)據(jù)完成后,應(yīng)用服務(wù)器轉(zhuǎn)向訪問所述當(dāng)前目標(biāo)數(shù)據(jù)表。10、如權(quán)利要求9所述的裝置,其特征在于,所述訪問更新模塊,具體用于預(yù)先建立上層一見圖,使應(yīng)用服務(wù)器能通過所述上層視圖訪問其指向的一張目標(biāo)數(shù)據(jù)表;當(dāng)同步數(shù)據(jù)完成后,更新所述上層視圖,使其指向所述當(dāng)前目標(biāo)數(shù)據(jù)表。11、如權(quán)利要求9所述的裝置,其特征在于,所述確定模塊包括計算單元,用于分別計算所述兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù);確定單元,用于確定所述計算單元計算出的記錄數(shù)為零的一張目標(biāo)數(shù)據(jù)表為所述當(dāng)前目標(biāo)數(shù)據(jù)表。12、如權(quán)利要求11所述的裝置,其特征在于,所述確定單元,還用于當(dāng)所述計算單元計算出的所述兩張目標(biāo)數(shù)據(jù)表中數(shù)據(jù)的記錄數(shù)均不為零時,顯示異常,并結(jié)束數(shù)據(jù)同步流程。13、如權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)同步模塊包括存儲區(qū)域確定單元,用于確定所述源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域;地址信息確定單元,用于確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息;數(shù)據(jù)同步單元,用于根據(jù)所述地址信息確定單元確定出的存儲地址信息,分別將所述存儲區(qū)域中的待同步數(shù)據(jù)同步到所述當(dāng)前目標(biāo)數(shù)據(jù)表中。14、如權(quán)利要求13所述的裝置,其特征在于,所述數(shù)據(jù)同步單元包括第一數(shù)據(jù)同步子單元,用于根據(jù)所述存儲地址信息,由一個數(shù)據(jù)同步進程依次同步每一個所述存儲區(qū)域中的數(shù)據(jù)到所述當(dāng)前目標(biāo)數(shù)據(jù)表中;第二數(shù)據(jù)同步子單元,用于將所述存儲區(qū)域分為N組,啟動對應(yīng)的N個數(shù)據(jù)同步進程;并根據(jù)所述存儲地址信息,由每個數(shù)據(jù)同步進程依次同步對應(yīng)組中的各個所述存儲區(qū)域中的數(shù)據(jù)到所述當(dāng)前目標(biāo)數(shù)據(jù)表中。15、如權(quán)利要求14所述的裝置,其特征在于,所述凄t據(jù)同步單元,還包括重啟子單元,用于當(dāng)同步某一個所述存儲區(qū)域中的數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的數(shù)據(jù)的過程;以及當(dāng)重新啟動的次數(shù)超過設(shè)定闊值時,結(jié)束同步該存儲區(qū)域中的數(shù)據(jù)的過程。16、如權(quán)利要求9-15任一所述的裝置,其特征在于,還包括數(shù)據(jù)表清空模塊,用于同步數(shù)據(jù)成功后,清空所述兩張目標(biāo)數(shù)據(jù)表中未同步數(shù)據(jù)的另一張目標(biāo)數(shù)據(jù)表。17、一種同步數(shù)據(jù)的方法,其特征在于,包括將源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的存儲區(qū)域劃分為若干組;并行啟動對應(yīng)的若干個數(shù)據(jù)同步進程,由每個數(shù)據(jù)同步進程同步對應(yīng)組中的各個所述存儲區(qū)域中的待同步數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。18、如權(quán)利要求17所述的方法,其特征在于,所述由每個數(shù)據(jù)同步進程同步對應(yīng)組中的各個所述存儲區(qū)域中的數(shù)據(jù)是依次進行的,具體包括每個數(shù)據(jù)同步進程處理所述對應(yīng)組中的一個存儲區(qū)域中的待同步數(shù)據(jù);同步所述一個存儲區(qū)域中的待同步數(shù)據(jù)并成功提交后,判斷是否處理完所述對應(yīng)組內(nèi)的所有存儲區(qū)域;當(dāng)未處理完所述對應(yīng)組內(nèi)的所有存儲區(qū)域時,啟動處理所述對應(yīng)組中下一個存儲區(qū)域中的待同步數(shù)據(jù)的過程。19、如權(quán)利要求18所述的方法,其特征在于,還包括當(dāng)同步某一個所述存儲區(qū)域中的待同步數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的待同步數(shù)據(jù)的過程;當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域內(nèi)的待同步數(shù)據(jù)的過程。20、如權(quán)利要求17-19任一所述的方法,其特征在于,將源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的存儲區(qū)域劃分為若干組之前,還包括確定源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域;以及確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息。21、如權(quán)利要求20所述的方法,其特征在于,所述確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息,具體包括確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲的最小地址和最大地址;將確定出的包含最小地址和最大地址的地址范風(fēng)存儲到一張中間表中。22、一種同步數(shù)據(jù)的裝置,其特征在于,包括分組單元,用于將源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的存儲區(qū)域劃分為若干組;數(shù)據(jù)同步單元,用于并行啟動對應(yīng)的若干個數(shù)據(jù)同步進程,由每個數(shù)據(jù)同步進程同步對應(yīng)組中的各個所述存儲區(qū)域中的待同步數(shù)據(jù)到當(dāng)前目標(biāo)數(shù)據(jù)表中。23、如權(quán)利要求22所述的裝置,其特征在于,所述數(shù)據(jù)同步單元,具體包括控制執(zhí)行子單元和判斷子單元;控制執(zhí)行子單元,用于控制每個數(shù)據(jù)同步進程處理所述對應(yīng)組中的一個存儲區(qū)域中的待同步數(shù)據(jù);以及當(dāng)判斷子單元判斷出未處理完所述對應(yīng)組內(nèi)的所有存儲區(qū)域時,啟動處理所述對應(yīng)組中下一個存儲區(qū)域中的待同步數(shù)據(jù)的過程;判斷子單元,用于同步所述一個存儲區(qū)域中的待同步數(shù)據(jù)并成功提交后,判斷是否處理完所述對應(yīng)組內(nèi)的所有存儲區(qū)域。24、如權(quán)利要求23所述的裝置,其特征在于,所述數(shù)據(jù)同步單元,還包括重啟子單元,用于當(dāng)同步某一個所述存儲區(qū)域中的待同步數(shù)據(jù)失敗時,重新啟動同步該存儲區(qū)域中的待同步數(shù)據(jù)的過程;以及當(dāng)重新啟動的次數(shù)超過設(shè)定閾值時,結(jié)束同步該存儲區(qū)域中的待同步數(shù)據(jù)的過程。25、如權(quán)利要求22-24任一所述的裝置,其特征在于,還包括存儲區(qū)域確定單元,用于確定源數(shù)據(jù)表中待同步數(shù)據(jù)所占用的若干存儲區(qū)域;地址信息確定單元,用于確定出每一個所述存儲區(qū)域中待同步數(shù)據(jù)的存儲地址信息。全文摘要本發(fā)明公開了一種數(shù)據(jù)同步方法及裝置,該方法包括預(yù)先建立與一張存儲有待同步數(shù)據(jù)的源數(shù)據(jù)表對應(yīng)的兩張目標(biāo)數(shù)據(jù)表,當(dāng)從所述源數(shù)據(jù)表向所述目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù)時,執(zhí)行下列步驟從所述兩張目標(biāo)數(shù)據(jù)表中確定出一張當(dāng)前目標(biāo)數(shù)據(jù)表;從所述源數(shù)據(jù)表向所述當(dāng)前目標(biāo)數(shù)據(jù)表中同步數(shù)據(jù);同步數(shù)據(jù)完成后,應(yīng)用服務(wù)器轉(zhuǎn)向訪問所述當(dāng)前目標(biāo)數(shù)據(jù)表。上述方法兩張目標(biāo)數(shù)據(jù)表交替使用,既有效的避免了撤銷/回滾空間被占滿的風(fēng)險,也大大提高了數(shù)據(jù)同步速度和效率。文檔編號G06F17/30GK101419616SQ20081017939公開日2009年4月29日申請日期2008年12月10日優(yōu)先權(quán)日2008年12月10日發(fā)明者清張,張依娜,海汪,林趙申請人:阿里巴巴集團控股有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
邹城市| 大丰市| 兴海县| 惠州市| 高邑县| 平山县| 噶尔县| 清镇市| 肇源县| 黄冈市| 抚顺市| 汝南县| 仙居县| 错那县| 阜阳市| 介休市| 湖北省| 区。| 衢州市| 龙山县| 鄂伦春自治旗| 厦门市| 孟州市| 鄂托克旗| 石楼县| 吐鲁番市| 镇赉县| 兴仁县| 松阳县| 嫩江县| 岚皋县| 双鸭山市| 五指山市| 庄河市| 灯塔市| 安宁市| 黄浦区| 长顺县| 腾冲县| 松原市| 海安县|