專利名稱:基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)集成技術(shù)領(lǐng)域,具體而言,涉及基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步裝置和方法。
背景技術(shù):
隨著以計(jì)算機(jī)軟/硬件為代表的科學(xué)技術(shù)的突飛猛進(jìn),以商業(yè)智能為代表的信息化技術(shù)也得到了迅猛發(fā)展。目前,管理和運(yùn)營(yíng)信息化已經(jīng)是實(shí)現(xiàn)一個(gè)企業(yè)跨越式發(fā)展的關(guān)鍵戰(zhàn)略之一,現(xiàn)代化的企業(yè)對(duì)自己的業(yè)務(wù)數(shù)據(jù)進(jìn)行商業(yè)智能分析的要求越來越高;企業(yè)的高層管理者們也越來越清醒的認(rèn)識(shí)到那些蘊(yùn)藏在海量數(shù)據(jù)里的有價(jià)值信息對(duì)提高企業(yè)的科學(xué)決策和管理水平是多么重要,拍下腦袋就制定政策的時(shí)代將一去不復(fù)返!而在這個(gè)市場(chǎng)競(jìng)爭(zhēng)越來越激烈的時(shí)代里,要想領(lǐng)先其他的企業(yè)一步制定出科學(xué)、精確的戰(zhàn)略決策,這就要依賴具有完整商業(yè)智能(Business intelligence,簡(jiǎn)稱為Bi)解決方案的分布式系統(tǒng)。從系統(tǒng)架構(gòu)的角度來看一個(gè)完整的BI系統(tǒng)一般主要分為兩部分位于底層的數(shù)據(jù)集成(Data htegration,簡(jiǎn)稱DI)子系統(tǒng)和基于集成起來的數(shù)據(jù)進(jìn)行智能的數(shù)據(jù)挖掘、 分析和展示的子系統(tǒng)。其中,對(duì)分析至關(guān)重要的數(shù)據(jù)質(zhì)量(包括準(zhǔn)確性,一致性,實(shí)時(shí)性等) 則由DI子系統(tǒng)來保證。為了保證整個(gè)企業(yè)業(yè)務(wù)系統(tǒng)運(yùn)行的高效和穩(wěn)定,在系統(tǒng)架構(gòu)時(shí)都會(huì)設(shè)計(jì)多個(gè)數(shù)據(jù)源分別承擔(dān)不同的職責(zé),例如設(shè)置獨(dú)立的OLTP數(shù)據(jù)源以應(yīng)對(duì)交易型業(yè)務(wù)處理請(qǐng)求,同時(shí)部署一個(gè)或者多個(gè)OLAP數(shù)據(jù)源以應(yīng)對(duì)智能的數(shù)據(jù)分析型請(qǐng)求;同時(shí)部署DI子系統(tǒng)來保證從OLTP數(shù)據(jù)源到OLAP數(shù)據(jù)源之間數(shù)據(jù)同步更新。要實(shí)現(xiàn)多數(shù)據(jù)源之間的同步更新,目前主要有以下幾種做法1.采用定時(shí)(如每天,每周或者每月)完全復(fù)制的技術(shù)在指定的時(shí)間點(diǎn)把用戶定義的數(shù)據(jù)庫表里的數(shù)據(jù)從OLTP端復(fù)制到OLAP端。這種技術(shù)的缺點(diǎn)是首先,它不能反應(yīng)實(shí)時(shí)的數(shù)據(jù),不符合新型商業(yè)智能的需求;其次,隨著企業(yè)數(shù)據(jù)量越來越大,每次復(fù)制需要的時(shí)間也越來越長(zhǎng),最終會(huì)使得企業(yè)不堪重負(fù)。2.采用特定數(shù)據(jù)庫的特定技術(shù),比如Oracle的物化視圖/物化日志技術(shù)。這種復(fù)制技術(shù)只能限制在同種類型的數(shù)據(jù)庫之間,對(duì)于目前商業(yè)智能在OLAP數(shù)據(jù)源造型傾向于開源數(shù)據(jù)源或者性能比傳統(tǒng)的行式數(shù)據(jù)存儲(chǔ)更優(yōu)秀的列式數(shù)據(jù)存儲(chǔ)來說無能為力。3.使用數(shù)據(jù)庫的觸發(fā)器機(jī)制這種技術(shù)對(duì)原系統(tǒng)侵入性比較高,會(huì)對(duì)業(yè)務(wù)系統(tǒng)的性能造成很大影響。4.采用實(shí)時(shí)數(shù)據(jù)同步技術(shù)以O(shè)racle的Goldenfeite為代表;采用直接對(duì)Oracle 數(shù)據(jù)庫管理系統(tǒng)在運(yùn)行時(shí)產(chǎn)生的日志進(jìn)行分析而獲得最新的數(shù)據(jù)更新并同步到遠(yuǎn)端的同構(gòu)或者異構(gòu)數(shù)據(jù)源。這種方法要求對(duì)數(shù)據(jù)庫日志的存儲(chǔ)結(jié)構(gòu)有深入的了解(日志里存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)并未公開),實(shí)現(xiàn)難度極大;而且不具有通用性一旦日志里的存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)發(fā)生變化,則需要重新實(shí)現(xiàn)日志分析模塊
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于,提供一種基于日志管理包的增量數(shù)據(jù)同步技術(shù),可以在短時(shí)間內(nèi)將發(fā)生在一端數(shù)據(jù)源上的事務(wù)(已經(jīng)提交完成的事務(wù))應(yīng)用到目標(biāo)端數(shù)據(jù)源上。根據(jù)本發(fā)明的一個(gè)方面,提供了一種基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步裝置, 包括第一同步單元,將第一數(shù)據(jù)源中的初始數(shù)據(jù)復(fù)制到第二數(shù)據(jù)源中;第二同步單元,使用所述第一數(shù)據(jù)源的日志管理包獲取在所述第一數(shù)據(jù)源執(zhí)行的數(shù)據(jù)操作語句,將所述數(shù)據(jù)操作語句應(yīng)用于所述第二數(shù)據(jù)源,以實(shí)現(xiàn)所述第一數(shù)據(jù)源和所述第二數(shù)據(jù)源之間的增量數(shù)據(jù)的實(shí)時(shí)同步,其中,所述日志管理包包含對(duì)日志進(jìn)行分析所需的存儲(chǔ)過程,從所述日志中獲取數(shù)據(jù)操作信息,所述數(shù)據(jù)操作信息包括數(shù)據(jù)操作語句的標(biāo)識(shí)、數(shù)據(jù)操作語句的操作對(duì)象和數(shù)據(jù)操作語句的所屬事務(wù),所述日志記錄了對(duì)所述第一數(shù)據(jù)源進(jìn)行的所有操作。利用日志管理包的存儲(chǔ)過程可以對(duì)日志進(jìn)行分析,并通過該日志管理包可以查看日志的分析結(jié)果,存儲(chǔ)過程類似于一個(gè)函數(shù)或一個(gè)批處理文件,調(diào)用存儲(chǔ)過程后可以返回結(jié)果。在進(jìn)行增量數(shù)據(jù)同步之前,需進(jìn)行基準(zhǔn)同步,即第一同步單元做的工作,這是為了保證第一數(shù)據(jù)源和第二數(shù)據(jù)源之間數(shù)據(jù)的完全同步。在上述技術(shù)方案,優(yōu)選地,所述第二同步單元可以包括提取模塊,使用所述日志管理包從所述第一數(shù)據(jù)源提取出相應(yīng)的數(shù)據(jù)操作語句并對(duì)所述數(shù)據(jù)操作語句進(jìn)行處理后打包成多個(gè)事務(wù),根據(jù)所述數(shù)據(jù)操作語句的標(biāo)識(shí)對(duì)每個(gè)所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行排序以及對(duì)多個(gè)所述事務(wù)進(jìn)行排序;處理模塊,將所述提取模塊提取的所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行過濾和轉(zhuǎn)換處理后發(fā)送至應(yīng)用模塊;所述應(yīng)用模塊,將多個(gè)所述事務(wù)按順序應(yīng)用于所述第二數(shù)據(jù)源。根據(jù)日志管理包記錄的日志分析結(jié)果可以還原出所有曾經(jīng)應(yīng)用于第一數(shù)據(jù)源中的數(shù)據(jù)操作語句,將屬于同一事務(wù)的數(shù)據(jù)操作語句打包成一個(gè)事務(wù)(數(shù)據(jù)操作語句的集合),可以根據(jù)數(shù)據(jù)操作語句的標(biāo)識(shí)確定每個(gè)數(shù)據(jù)操作語句的順序,將每個(gè)事務(wù)中的數(shù)據(jù)操作語句按照順序進(jìn)行排列,各事務(wù)之間也要進(jìn)行排序,最后將各事務(wù)按照順序應(yīng)用于第二數(shù)據(jù)源中。在上述技術(shù)方案,優(yōu)選地,還可以包括更新單元,在所述應(yīng)用模塊將所述事務(wù)應(yīng)用于所述第二數(shù)據(jù)源時(shí),更新所述第二數(shù)據(jù)源的同步點(diǎn)記錄表,所述同步點(diǎn)記錄表為將所述第一數(shù)據(jù)源的增量數(shù)據(jù)同步至所述第二數(shù)據(jù)源的操作記錄,一個(gè)操作記錄作為一個(gè)同步點(diǎn)。同步點(diǎn)是為了下一輪的增量數(shù)據(jù)同步做一個(gè)記號(hào),防止下一輪增量數(shù)據(jù)的重復(fù)或遺漏。在上述技術(shù)方案,優(yōu)選地,所述提取模塊將所述分析結(jié)果中的最新數(shù)據(jù)操作語句的標(biāo)識(shí)作為上限和將所述同步點(diǎn)記錄表中的最新同步點(diǎn)作為下限,調(diào)用所述第一數(shù)據(jù)源的日志管理包提取出所述上限和所述下限之間的所有數(shù)據(jù)操作語句。由于應(yīng)用于第一數(shù)據(jù)源的每個(gè)操作對(duì)應(yīng)有順序,因此,可以將同步點(diǎn)和最新的操作之間的所有操作挖掘出來,這樣就可以得到在同步點(diǎn)之后應(yīng)用于第一數(shù)據(jù)源的所有數(shù)據(jù)操作語句(每個(gè)操作對(duì)應(yīng)的數(shù)據(jù)操作語句),然后把這些數(shù)據(jù)操作語句同樣應(yīng)用于第二數(shù)據(jù)源上,這樣就實(shí)現(xiàn)了增量數(shù)據(jù)的同步。在上述技術(shù)方案,優(yōu)選地,所述第一數(shù)據(jù)源為OLTP數(shù)據(jù)源,所述第二數(shù)據(jù)源為 OLAP數(shù)據(jù)源。第一數(shù)據(jù)源與第二數(shù)據(jù)源之間可以是異構(gòu)的,第一數(shù)據(jù)源可以是行存數(shù)據(jù)庫, 第二數(shù)據(jù)源可以是列存數(shù)據(jù)庫。通過上述技術(shù)方案,可以實(shí)現(xiàn)一種增量數(shù)據(jù)實(shí)時(shí)同步裝置,根據(jù)數(shù)據(jù)庫系統(tǒng)的日志實(shí)現(xiàn)增量數(shù)據(jù)的實(shí)時(shí)同步,具有實(shí)時(shí)、高效、簡(jiǎn)單易于實(shí)現(xiàn)的優(yōu)點(diǎn)。提出的基于事務(wù)來保存同步點(diǎn)的做法保證了運(yùn)行時(shí)實(shí)時(shí)增量數(shù)據(jù)同步的高可靠性。根據(jù)本發(fā)明的又一方面,還提供了一種基于日志管理包的增量數(shù)據(jù)同步方法,包括步驟802,將第一數(shù)據(jù)源中的初始數(shù)據(jù)復(fù)制到第二數(shù)據(jù)源中;步驟804,使用所述第一數(shù)據(jù)源的日志管理包獲取在所述第一數(shù)據(jù)源執(zhí)行的數(shù)據(jù)操作語句,將所述數(shù)據(jù)操作語句應(yīng)用于所述第二數(shù)據(jù)源,以實(shí)現(xiàn)所述第一數(shù)據(jù)源和所述第二數(shù)據(jù)源之間的增量數(shù)據(jù)的實(shí)時(shí)同步,其中,所述日志管理包包含對(duì)日志進(jìn)行分析和統(tǒng)計(jì)所需的存儲(chǔ)過程,從所述日志的中獲取數(shù)據(jù)操作信息,所述數(shù)據(jù)操作信息包括數(shù)據(jù)操作語句的標(biāo)識(shí)、數(shù)據(jù)操作語句的操作對(duì)象和數(shù)據(jù)操作語句的所屬事務(wù),所述日志記錄了對(duì)所述第一數(shù)據(jù)源進(jìn)行的所有操作。利用日志管理包的存儲(chǔ)過程可以對(duì)日志進(jìn)行分析,并通過一個(gè)視圖可以查看日志的分析結(jié)果,存儲(chǔ)過程類似于一個(gè)函數(shù)或一個(gè)批處理文件,調(diào)用存儲(chǔ)過程后可以返回結(jié)果或者將分析結(jié)果保存在特定的地方以供查詢。在進(jìn)行增量數(shù)據(jù)同步之前,需進(jìn)行基準(zhǔn)同步,即第一同步單元做的工作,這是為了保證第一數(shù)據(jù)源和第二數(shù)據(jù)源之間數(shù)據(jù)的完全同步。在上述技術(shù)方案,優(yōu)選地,所述步驟804還可以包括步驟8042,使用所述日志管理包從所述第一數(shù)據(jù)源提取出相應(yīng)的數(shù)據(jù)操作語句并對(duì)所述數(shù)據(jù)操作語句進(jìn)行處理后打包成多個(gè)事務(wù),根據(jù)所述數(shù)據(jù)操作語句的標(biāo)識(shí)對(duì)每個(gè)所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行排序以及對(duì)多個(gè)所述事務(wù)進(jìn)行排序;步驟8044,將所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行過濾和轉(zhuǎn)換處理后發(fā)送至應(yīng)用模塊;步驟8046,將多個(gè)所述事務(wù)按順序應(yīng)用于所述第二數(shù)據(jù)源。根據(jù)日志管理包記錄的日志分析結(jié)果可以還原出所有曾經(jīng)應(yīng)用于第一數(shù)據(jù)源中的數(shù)據(jù)操作語句,將屬于同一事務(wù)的數(shù)據(jù)操作語句打包成一個(gè)事務(wù)(數(shù)據(jù)操作語句的集合),可以根據(jù)數(shù)據(jù)操作語句的標(biāo)識(shí)確定每個(gè)數(shù)據(jù)操作語句的順序,將每個(gè)事務(wù)中的數(shù)據(jù)操作語句按照順序進(jìn)行排列,各事務(wù)之間也要進(jìn)行排序,最后將各事務(wù)按照順序應(yīng)用于第二數(shù)據(jù)源中。在上述技術(shù)方案,優(yōu)選地,在將所述事務(wù)應(yīng)用于所述第二數(shù)據(jù)源時(shí),更新所述第二數(shù)據(jù)源的同步點(diǎn)記錄表,所述同步點(diǎn)記錄表為將所述第一數(shù)據(jù)源的增量數(shù)據(jù)同步至所述第二數(shù)據(jù)源的操作記錄,一個(gè)操作記錄作為一個(gè)同步點(diǎn)。同步點(diǎn)是為了下一輪的增量數(shù)據(jù)同步做一個(gè)記號(hào),防止下一輪增量數(shù)據(jù)的重復(fù)或遺漏。在上述技術(shù)方案,優(yōu)選地,在所述步驟8042中,將所述分析結(jié)果中的最新數(shù)據(jù)操作語句的標(biāo)識(shí)作為上限和將所述同步點(diǎn)記錄表中的最新同步點(diǎn)作為下限,調(diào)用所述第一數(shù)據(jù)源的日志管理包里的存儲(chǔ)過程提取出所述上限和所述下限之間的所有數(shù)據(jù)操作語句。由于應(yīng)用于第一數(shù)據(jù)源的每個(gè)操作對(duì)應(yīng)有順序,因此,可以將同步點(diǎn)和最新的操作之間的所有操作挖掘出來,這樣就可以得到在同步點(diǎn)之后應(yīng)用于第一數(shù)據(jù)源的所有數(shù)據(jù)操作語句 (每個(gè)操作對(duì)應(yīng)的數(shù)據(jù)操作語句),然后把這些數(shù)據(jù)操作語句同樣應(yīng)用于第二數(shù)據(jù)源上,這樣就實(shí)現(xiàn)了增量數(shù)據(jù)的實(shí)時(shí)同步。在上述技術(shù)方案,優(yōu)選地,所述第一數(shù)據(jù)源為OLTP數(shù)據(jù)源,所述第二數(shù)據(jù)源為 OLAP數(shù)據(jù)源。第一數(shù)據(jù)源與第二數(shù)據(jù)源之間可以是異構(gòu)的,第一數(shù)據(jù)源可以是行存數(shù)據(jù)庫, 第二數(shù)據(jù)源可以是列存數(shù)據(jù)庫。通過上述技術(shù)方案,可以實(shí)現(xiàn)一種增量數(shù)據(jù)實(shí)時(shí)同步方法,根據(jù)數(shù)據(jù)庫系統(tǒng)的日志實(shí)現(xiàn)實(shí)時(shí)地增量同步的機(jī)制,具有實(shí)時(shí)、高效、簡(jiǎn)單易于實(shí)現(xiàn)的優(yōu)點(diǎn)。提出的基于事務(wù)來保存同步點(diǎn)的做法保證了運(yùn)行時(shí)實(shí)時(shí)增量同步的高可靠性。
圖1示出了根據(jù)本發(fā)明的實(shí)施例的增量數(shù)據(jù)同步裝置的框圖;圖2示出了根據(jù)本發(fā)明的實(shí)施例的運(yùn)用增量數(shù)據(jù)同步裝置的示意圖;圖3示出了根據(jù)本發(fā)明的實(shí)施例的增量數(shù)據(jù)同步方法的流程圖;圖4示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)操作語句的轉(zhuǎn)換流程圖;圖5示出了根據(jù)本發(fā)明的實(shí)施例的過濾無意義數(shù)據(jù)操作語句的流程圖;圖6示出了根據(jù)本發(fā)明的實(shí)施例的在應(yīng)用數(shù)據(jù)操作語句之前對(duì)數(shù)據(jù)操作語句進(jìn)行轉(zhuǎn)換處理的流程圖;圖7示出了根據(jù)本發(fā)明的實(shí)施例的應(yīng)用數(shù)據(jù)操作語句的流程圖;以及圖8示出了根據(jù)本發(fā)明的實(shí)施例的增量數(shù)據(jù)同步方法的流程圖。
具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明并不限于下面公開的具體實(shí)施例的限制。下面是在說明書中出現(xiàn)的英文縮寫所代表的含義BI =Business Intelligence,是商業(yè)智能的簡(jiǎn)稱。DI =Data htegration,是數(shù)據(jù)集成的簡(jiǎn)稱。OLTP數(shù)據(jù)源企業(yè)級(jí)系統(tǒng)里用來處理交易型業(yè)務(wù)的數(shù)據(jù)庫管理系統(tǒng),代表性的有 Oracle,SQL krver和DB2等行式存儲(chǔ)數(shù)據(jù)庫管理系統(tǒng)。OLTP業(yè)務(wù)的要求是快速的增、刪、 改響應(yīng)速度,同時(shí)還需要完成的事務(wù)管理機(jī)制來保證多操作的絕對(duì)一致性;對(duì)查詢類響應(yīng)的要求相對(duì)較低。OLAP數(shù)據(jù)源企業(yè)級(jí)系統(tǒng)里用來處理查詢/分析型業(yè)務(wù)的數(shù)據(jù)庫管理系統(tǒng),代表性的數(shù)據(jù)庫管理系統(tǒng)有IQ、GBASE等列式存儲(chǔ)系統(tǒng)。OLAP業(yè)務(wù)對(duì)存儲(chǔ)系統(tǒng)的要求是必須有很快的數(shù)據(jù)查詢分析功能而對(duì)數(shù)據(jù)修改和事務(wù)控制的要求相對(duì)要弱。為了性能的考慮,大型的企業(yè)在架構(gòu)自己的分布式業(yè)務(wù)運(yùn)營(yíng)系統(tǒng)時(shí),一般都會(huì)將這兩類業(yè)務(wù)分開處理;相應(yīng)地?cái)?shù)據(jù)源也會(huì)分開使用,跨數(shù)據(jù)源的數(shù)據(jù)同步則會(huì)使用工具或者手工定時(shí)來完成。Sync-up Task 同步任務(wù),在根據(jù)本發(fā)明的技術(shù)方案中,一個(gè)從OLTP數(shù)據(jù)源到 OLAP數(shù)據(jù)源的實(shí)現(xiàn)數(shù)據(jù)同步服務(wù)的完整過程。它有以下的核心子模塊組成0LTP數(shù)據(jù)源基本的數(shù)據(jù)操作語句提取,基本的數(shù)據(jù)操作語句整理,數(shù)據(jù)操作語句應(yīng)用。Full Table Sync-up Module 表數(shù)據(jù)同步模塊,簡(jiǎn)稱FTSM。它的功能是根據(jù)同步任務(wù)的定義,把定義的表里的原有的數(shù)據(jù)從OLTP數(shù)據(jù)源完全復(fù)制到OLAP數(shù)據(jù)源。為了保證數(shù)據(jù)的一致性,在啟動(dòng)同步任務(wù)之前需要保證任務(wù)所定義的表里的數(shù)據(jù)不能有增加、刪除和修改操作。SQL Redo Info Extractor Module :0LTP數(shù)據(jù)源的基本數(shù)據(jù)操作語句提取模塊, 簡(jiǎn)稱SEM。
SQL Redo Info Processing Module 對(duì)挖掘出來的基本數(shù)據(jù)操作語句進(jìn)行處理的處理模塊,簡(jiǎn)稱SPM。SQL Statement Applying Module 將處理好的基本數(shù)據(jù)操作語句進(jìn)行應(yīng)用的應(yīng)用模塊,簡(jiǎn)稱SAM。Oracle SCN =System Change Number,用來標(biāo)識(shí)對(duì)數(shù)據(jù)庫系統(tǒng)中對(duì)象或者數(shù)據(jù)的每一次修改以及其先后順序,其最大值為Oxffff. ffffffff。XID 是數(shù)據(jù)庫里一個(gè)事務(wù)的標(biāo)識(shí),詳見Χ/0ΡΕΝ組織發(fā)布的XA規(guī)范。圖1示出了根據(jù)本發(fā)明的實(shí)施例的增量數(shù)據(jù)同步裝置的框圖。如圖1所示,根據(jù)本發(fā)明的實(shí)施例的基于日志管理包的增量數(shù)據(jù)同步裝置100包括第一同步單元102,將第一數(shù)據(jù)源中的初始數(shù)據(jù)復(fù)制到第二數(shù)據(jù)源中;第二同步單元 104,使用所述第一數(shù)據(jù)源的日志管理包獲取在所述第一數(shù)據(jù)源執(zhí)行的數(shù)據(jù)操作語句,將所述數(shù)據(jù)操作語句應(yīng)用于所述第二數(shù)據(jù)源,以實(shí)現(xiàn)所述第一數(shù)據(jù)源和所述第二數(shù)據(jù)源之間的增量數(shù)據(jù)的實(shí)時(shí)同步,其中,所述日志管理包包含對(duì)日志進(jìn)行分析所需的存儲(chǔ)過程,從所述日志的中獲取數(shù)據(jù)操作信息,所述數(shù)據(jù)操作信息包括數(shù)據(jù)操作語句的標(biāo)識(shí)、數(shù)據(jù)操作語句的操作對(duì)象和數(shù)據(jù)操作語句的所屬事務(wù),所述日志記錄了對(duì)所述第一數(shù)據(jù)源進(jìn)行的所有操作。利用日志管理包的存儲(chǔ)過程可以對(duì)日志進(jìn)行分析,并通過一個(gè)視圖可以查看日志的分析結(jié)果,存儲(chǔ)過程類似于一個(gè)函數(shù)或一個(gè)批處理文件,調(diào)用存儲(chǔ)過程后可以返回結(jié)果或者將分析結(jié)果保存在特定的地方以供查看。在進(jìn)行增量數(shù)據(jù)同步之前,需進(jìn)行基準(zhǔn)同步,即第一同步單元做的工作,這是為了保證第一數(shù)據(jù)源和第二數(shù)據(jù)源之間數(shù)據(jù)的完全同步。在上述技術(shù)方案,優(yōu)選地,所述第二同步單元104可以包括提取模塊1042,使用所述日志管理包從所述第一數(shù)據(jù)源提取出相應(yīng)的數(shù)據(jù)操作語句并對(duì)所述數(shù)據(jù)操作語句進(jìn)行處理后打包成多個(gè)事務(wù),根據(jù)所述數(shù)據(jù)操作語句的標(biāo)識(shí)對(duì)每個(gè)所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行排序以及對(duì)多個(gè)所述事務(wù)進(jìn)行排序;處理模塊1044,將所述提取模塊提取的所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行過濾和轉(zhuǎn)換處理后發(fā)送至應(yīng)用模塊;所述應(yīng)用模塊1046,將多個(gè)所述事務(wù)按順序應(yīng)用于所述第二數(shù)據(jù)源。根據(jù)日志管理包記錄的日志分析結(jié)果可以還原出所有曾經(jīng)應(yīng)用于第一數(shù)據(jù)源中的數(shù)據(jù)操作語句,將屬于同一事務(wù)的數(shù)據(jù)操作語句打包成一個(gè)事務(wù)(數(shù)據(jù)操作語句的集合),可以根據(jù)數(shù)據(jù)操作語句的標(biāo)識(shí)確定每個(gè)數(shù)據(jù)操作語句的順序,將每個(gè)事務(wù)中的數(shù)據(jù)操作語句按照順序進(jìn)行排列,各事務(wù)之間也要進(jìn)行排序,最后將各事務(wù)按照順序應(yīng)用于第二數(shù)據(jù)源中。在上述技術(shù)方案,優(yōu)選地,還可以包括更新單元106,在所述應(yīng)用模塊將所述事務(wù)應(yīng)用于所述第二數(shù)據(jù)源時(shí),更新所述第二數(shù)據(jù)源的同步點(diǎn)記錄表,所述同步點(diǎn)記錄表為將所述第一數(shù)據(jù)源的增量數(shù)據(jù)同步至所述第二數(shù)據(jù)源的操作記錄,一個(gè)操作記錄作為一個(gè)同步點(diǎn)。同步點(diǎn)是為了下一輪的增量數(shù)據(jù)同步做一個(gè)記號(hào),防止下一輪增量數(shù)據(jù)的重復(fù)或遺漏。在上述技術(shù)方案,優(yōu)選地,所述提取模塊將所述分析結(jié)果中的最新數(shù)據(jù)操作語句的標(biāo)識(shí)作為上限和將所述同步點(diǎn)記錄表中的最新同步點(diǎn)作為下限,調(diào)用所述第一數(shù)據(jù)源的日志管理包提取出所述上限和所述下限之間的所有數(shù)據(jù)操作語句。由于應(yīng)用于第一數(shù)據(jù)源的每個(gè)操作對(duì)應(yīng)有順序,因此,可以將同步點(diǎn)和最新的操作之間的所有操作挖掘出來,這樣就可以得到在同步點(diǎn)之后應(yīng)用于第一數(shù)據(jù)源的所有數(shù)據(jù)操作語句(每個(gè)操作對(duì)應(yīng)的數(shù)據(jù)操作語句),然后把這些數(shù)據(jù)操作語句同樣應(yīng)用于第二數(shù)據(jù)源上,這樣就實(shí)現(xiàn)了增量數(shù)據(jù)的同步。在上述技術(shù)方案,優(yōu)選地,所述第一數(shù)據(jù)源為OLTP數(shù)據(jù)源,所述第二數(shù)據(jù)源為 OLAP數(shù)據(jù)源。第一數(shù)據(jù)源與第二數(shù)據(jù)源之間可以是異構(gòu)的,第一數(shù)據(jù)源可以是行存數(shù)據(jù)庫, 第二數(shù)據(jù)源可以是列存數(shù)據(jù)庫。通過上述技術(shù)方案,可以實(shí)現(xiàn)一種增量數(shù)據(jù)實(shí)時(shí)同步裝置,根據(jù)數(shù)據(jù)庫系統(tǒng)的日志實(shí)現(xiàn)實(shí)時(shí)地增量數(shù)據(jù)的實(shí)時(shí)同步,具有實(shí)時(shí)、高效、簡(jiǎn)單易于實(shí)現(xiàn)的優(yōu)點(diǎn)。提出的基于事務(wù)來保存同步點(diǎn)的做法保證了運(yùn)行時(shí)實(shí)時(shí)增量同步的高可靠性。下面各實(shí)施例中以O(shè)LTP數(shù)據(jù)源作為第一數(shù)據(jù)源并且以O(shè)racle數(shù)據(jù)庫作為OLTP 數(shù)據(jù)源的示例,以O(shè)LAP數(shù)據(jù)源作為第二數(shù)據(jù)源說明本發(fā)明的技術(shù)方案。在此,應(yīng)該理解,第一數(shù)據(jù)源和第二數(shù)據(jù)源可以是異構(gòu)的,例如 第一數(shù)據(jù)源是 Oracle,DB2 或者 SQL Server,第二數(shù)據(jù)源是 Oracle,DB2, SQL Server, MySQL 或者 PostgreSQL 等。 第一數(shù)據(jù)源是行存數(shù)據(jù)庫(如Oracle),第二數(shù)據(jù)源是列存數(shù)據(jù)庫(如GBase, IQ 等)。圖2示出了根據(jù)本發(fā)明的實(shí)施例的運(yùn)用增量數(shù)據(jù)實(shí)時(shí)同步裝置的示意圖。如圖2所示,需要將OLTP數(shù)據(jù)源202的增量數(shù)據(jù)同步至OLAP數(shù)據(jù)源204中,首先, 第一同步單元102(即表數(shù)據(jù)同步模塊)在進(jìn)行增量數(shù)據(jù)同步之前先進(jìn)行基準(zhǔn)同步,將OLTP 數(shù)據(jù)源202中已有的數(shù)據(jù)完全復(fù)制到OLAP數(shù)據(jù)源204中;然后,在基準(zhǔn)同步完成后即可啟動(dòng)增量同步任務(wù)。一輪增量同步的過程具體如下首先,提取模塊1042根據(jù)同步任務(wù)定義的日志分析起始位置和挖掘深度,從OLTP 數(shù)據(jù)源202(例如Oracle數(shù)據(jù)庫)中挖掘出增量數(shù)據(jù)然后發(fā)送給處理模塊1044。處理模塊1044對(duì)所收到的事務(wù)中的SQL操作做初步的過濾后,按事務(wù)打包并(根據(jù)OLAP數(shù)據(jù)源的要求)進(jìn)行轉(zhuǎn)換處理后傳送給應(yīng)用模塊1046。應(yīng)用模塊1046按事務(wù)順序?qū)⑹盏降氖聞?wù)里的SQL操作(數(shù)據(jù)操作語句)應(yīng)用到 OLAP數(shù)據(jù)源。下面結(jié)合圖3、圖4、圖5和圖6進(jìn)一步詳細(xì)說明圖2中所示的示例。進(jìn)行數(shù)據(jù)同步的前提條件1.開啟OLTP數(shù)據(jù)源的日志系統(tǒng)為了實(shí)現(xiàn)對(duì)OLTP數(shù)據(jù)源的數(shù)據(jù)操作語句的實(shí)時(shí)提取,首先要求OLTP數(shù)據(jù)源(這里以O(shè)racle數(shù)據(jù)庫管理系統(tǒng)為例介紹,以下簡(jiǎn)稱Oracle)在運(yùn)行時(shí)打開歸檔日志功能。實(shí)際上企業(yè)為了生產(chǎn)環(huán)境運(yùn)營(yíng)數(shù)據(jù)的可靠存儲(chǔ),都默認(rèn)會(huì)打開數(shù)據(jù)庫的歸檔日志功能。歸檔日志功能打開后,數(shù)據(jù)庫系統(tǒng)將在日志中記錄對(duì)數(shù)據(jù)庫對(duì)象進(jìn)行的所有操作。2.可以操作任何用戶,任何表的高權(quán)限(主要是OLAP端)為了保證數(shù)據(jù)的實(shí)時(shí)同步,在Oracle數(shù)據(jù)庫(0LTP數(shù)據(jù)源端)上的用戶要具有根據(jù)日志挖掘日志管理包的權(quán)限和創(chuàng)建一些臨時(shí)表的權(quán)限(為了加快分析速度考慮)。在 OLAP數(shù)據(jù)源端的用戶則需要更高的權(quán)限(最好是系統(tǒng)管理員權(quán)限)一從Oracle分析出來的操作都要應(yīng)用到目的端,這些操作可能針對(duì)的是不同用戶的不同對(duì)象。而Oracle的日志管理包(sys. dbms_logmnr)是一個(gè)日志管理工具包,由對(duì)日志進(jìn)行分析和統(tǒng)計(jì)所需要的一系列存儲(chǔ)過程組成。日志管理包的主要功能包括設(shè)置增加(ADD_ L0GFILE)日志文件、刪除(REM0VE_L0GFILE)日志文件、開始(START_0GMNR)日志挖掘、停止 (END_L0GMNR)日志挖掘等存儲(chǔ)過程組成。 日志的分析結(jié)果會(huì)被統(tǒng)一存放,通過一個(gè)名字為V$L0GMNR_C0NTENTS的視圖可以查看。該視圖中的一些關(guān)鍵字段如下表1所示(更詳細(xì)的信息請(qǐng)參照官方文檔)
權(quán)利要求
1.一種基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步裝置,其特征在于,包括第一同步單元,將第一數(shù)據(jù)源中的初始數(shù)據(jù)復(fù)制到第二數(shù)據(jù)源中;第二同步單元,使用所述第一數(shù)據(jù)源的日志管理包獲取在所述第一數(shù)據(jù)源執(zhí)行的數(shù)據(jù)操作語句,將所述數(shù)據(jù)操作語句應(yīng)用于所述第二數(shù)據(jù)源,以實(shí)現(xiàn)所述第一數(shù)據(jù)源和所述第二數(shù)據(jù)源之間的增量數(shù)據(jù)的實(shí)時(shí)同步,其中,所述日志管理包包含對(duì)日志進(jìn)行分析所需的存儲(chǔ)過程,從所述日志中獲取數(shù)據(jù)操作信息,所述數(shù)據(jù)操作信息包括數(shù)據(jù)操作語句的標(biāo)識(shí)、 數(shù)據(jù)操作語句的操作對(duì)象和數(shù)據(jù)操作語句的所屬事務(wù),所述日志記錄了對(duì)所述第一數(shù)據(jù)源進(jìn)行的所有操作。
2.根據(jù)權(quán)利要求1所述的基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步裝置,其特征在于,所述第二同步單元包括提取模塊,使用所述日志管理包從所述第一數(shù)據(jù)源提取出相應(yīng)的數(shù)據(jù)操作語句并對(duì)所述數(shù)據(jù)操作語句進(jìn)行處理后打包成多個(gè)事務(wù),根據(jù)所述數(shù)據(jù)操作語句的標(biāo)識(shí)對(duì)每個(gè)所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行排序以及對(duì)多個(gè)所述事務(wù)進(jìn)行排序;處理模塊,將所述提取模塊提取的所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行過濾和轉(zhuǎn)換處理后發(fā)送至應(yīng)用模塊;所述應(yīng)用模塊,將多個(gè)所述事務(wù)按順序應(yīng)用于所述第二數(shù)據(jù)源。
3.根據(jù)權(quán)利要求2所述的基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步裝置,其特征在于,還包括更新單元,在所述應(yīng)用模塊將所述事務(wù)應(yīng)用于所述第二數(shù)據(jù)源時(shí),更新所述第二數(shù)據(jù)源的同步點(diǎn)記錄表,所述同步點(diǎn)記錄表為將所述第一數(shù)據(jù)源的增量數(shù)據(jù)同步至所述第二數(shù)據(jù)源的操作記錄,一個(gè)操作記錄作為一個(gè)同步點(diǎn)。
4.根據(jù)權(quán)利要求3所述的基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步裝置,其特征在于,所述提取模塊將所述分析結(jié)果中的最新數(shù)據(jù)操作語句的標(biāo)識(shí)作為上限和將所述同步點(diǎn)記錄表中的最新同步點(diǎn)作為下限,調(diào)用所述第一數(shù)據(jù)源的日志管理包提取出所述上限和所述下限之間的所有數(shù)據(jù)操作語句。
5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步裝置,其特征在于,所述第一數(shù)據(jù)源為OLTP數(shù)據(jù)源,所述第二數(shù)據(jù)源為OLAP數(shù)據(jù)源。
6.一種基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步方法,其特征在于,包括步驟802,將第一數(shù)據(jù)源中的初始數(shù)據(jù)復(fù)制到第二數(shù)據(jù)源中;步驟804,使用所述第一數(shù)據(jù)源的日志管理包獲取在所述第一數(shù)據(jù)源執(zhí)行的數(shù)據(jù)操作語句,將所述數(shù)據(jù)操作語句應(yīng)用于所述第二數(shù)據(jù)源,以實(shí)現(xiàn)所述第一數(shù)據(jù)源和所述第二數(shù)據(jù)源之間的增量數(shù)據(jù)的實(shí)時(shí)同步,其中,所述日志管理包包含對(duì)日志進(jìn)行分析所需的存儲(chǔ)過程,從所述日志中獲取數(shù)據(jù)操作信息,所述數(shù)據(jù)操作信息包括數(shù)據(jù)操作語句的標(biāo)識(shí)、數(shù)據(jù)操作語句的操作對(duì)象和數(shù)據(jù)操作語句的所屬事務(wù),所述日志記錄了對(duì)所述第一數(shù)據(jù)源進(jìn)行的所有操作。
7.根據(jù)權(quán)利要求6所述的基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步方法,其特征在于,所述步驟804還包括步驟8042,使用所述日志管理包從所述第一數(shù)據(jù)源提取出相應(yīng)的數(shù)據(jù)操作語句并對(duì)所述數(shù)據(jù)操作語句進(jìn)行處理后打包成多個(gè)事務(wù),根據(jù)所述數(shù)據(jù)操作語句的標(biāo)識(shí)對(duì)每個(gè)所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行排序以及對(duì)多個(gè)所述事務(wù)進(jìn)行排序;步驟8044,將所述事務(wù)中的數(shù)據(jù)操作語句進(jìn)行過濾和轉(zhuǎn)換處理后發(fā)送至應(yīng)用模塊;步驟8046,將多個(gè)所述事務(wù)按順序應(yīng)用于所述第二數(shù)據(jù)源。
8.根據(jù)權(quán)利要求7所述的基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步方法,其特征在于,在將所述事務(wù)應(yīng)用于所述第二數(shù)據(jù)源時(shí),更新所述第二數(shù)據(jù)源的同步點(diǎn)記錄表,所述同步點(diǎn)記錄表為將所述第一數(shù)據(jù)源的增量數(shù)據(jù)同步至所述第二數(shù)據(jù)源的操作記錄,一個(gè)操作記錄作為一個(gè)同步點(diǎn)。
9.根據(jù)權(quán)利要求8所述的基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步方法,其特征在于,在所述步驟8042中,將所述分析結(jié)果中的最新數(shù)據(jù)操作語句的標(biāo)識(shí)作為上限和將所述同步點(diǎn)記錄表中的最新同步點(diǎn)作為下限,調(diào)用所述第一數(shù)據(jù)源的日志管理包提取出所述上限和所述下限之間的所有數(shù)據(jù)操作語句。
10.根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步方法,其特征在于,所述第一數(shù)據(jù)源為OLTP數(shù)據(jù)源,所述第二數(shù)據(jù)源為OLAP數(shù)據(jù)源。
全文摘要
本發(fā)明提供了一種基于日志管理包的實(shí)時(shí)增量數(shù)據(jù)同步裝置,包括第一同步單元,將第一數(shù)據(jù)源中的初始數(shù)據(jù)復(fù)制到第二數(shù)據(jù)源中;第二同步單元,使用第一數(shù)據(jù)源的日志管理包獲取在第一數(shù)據(jù)源執(zhí)行的數(shù)據(jù)操作語句,將數(shù)據(jù)操作語句應(yīng)用于第二數(shù)據(jù)源,以實(shí)現(xiàn)第一數(shù)據(jù)源和第二數(shù)據(jù)源之間的增量數(shù)據(jù)的實(shí)時(shí)同步,其中,日志管理包包含了對(duì)第一數(shù)據(jù)源的日志進(jìn)行分析所需要的存儲(chǔ)過程,從日志中獲取數(shù)據(jù)操作信息,數(shù)據(jù)操作信息包括數(shù)據(jù)操作語句的標(biāo)識(shí)、數(shù)據(jù)操作語句的操作對(duì)象和數(shù)據(jù)操作語句的所屬事務(wù),日志記錄了對(duì)第一數(shù)據(jù)源進(jìn)行的所有操作。本發(fā)明還提供了一種基于日志管理包的增量數(shù)據(jù)實(shí)時(shí)同步方法。實(shí)現(xiàn)不同數(shù)據(jù)源之間的實(shí)時(shí)增量數(shù)據(jù)同步。
文檔編號(hào)G06F17/30GK102508835SQ20111028458
公開日2012年6月20日 申請(qǐng)日期2011年9月22日 優(yōu)先權(quán)日2011年9月22日
發(fā)明者曾小青, 栗竹冉 申請(qǐng)人:用友軟件股份有限公司