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

數(shù)據(jù)庫(kù)同步方法及系統(tǒng)、源數(shù)據(jù)和目標(biāo)數(shù)據(jù)同步裝置與流程

文檔序號(hào):11918543閱讀:333來源:國(guó)知局
數(shù)據(jù)庫(kù)同步方法及系統(tǒng)、源數(shù)據(jù)和目標(biāo)數(shù)據(jù)同步裝置與流程

本發(fā)明涉及數(shù)據(jù)庫(kù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫(kù)同步方法及系統(tǒng)、源數(shù)據(jù)和目標(biāo)數(shù)據(jù)同步裝置。



背景技術(shù):

目前有多種實(shí)現(xiàn)oracle數(shù)據(jù)庫(kù)同步的方法,包括dataguard、stream、goldengate等成熟技術(shù)實(shí)現(xiàn)。

在以上數(shù)據(jù)庫(kù)同步技術(shù)中,均屬于在oracle歸檔模式下完成,基于挖掘oracle歸檔日志或者redo日志完成數(shù)據(jù)同步。而oracle開啟歸檔模式對(duì)數(shù)據(jù)庫(kù)磁盤空間有一定要求,且需要配置定期的清理機(jī)制清理歸檔。而且,以上技術(shù)適用于大型的多數(shù)據(jù)量的同步,對(duì)于一些特定場(chǎng)景的數(shù)據(jù)庫(kù)同步,可能沒有條件采用上述技術(shù)實(shí)現(xiàn)數(shù)據(jù)同步,在歸檔開啟后,數(shù)據(jù)庫(kù)性能與磁盤空間會(huì)受到限制,尤其越是數(shù)據(jù)量大的數(shù)據(jù)庫(kù)這個(gè)問題越嚴(yán)重。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供了一種數(shù)據(jù)庫(kù)同步方法及系統(tǒng)、源數(shù)據(jù)和目標(biāo)數(shù)據(jù)同步裝置,解決了現(xiàn)有技術(shù)中因數(shù)據(jù)庫(kù)同步在歸檔模式下完成而導(dǎo)致的數(shù)據(jù)庫(kù)性能不佳,磁盤空間受限的問題。

為解決上述技術(shù)問題,本發(fā)明提供了一種數(shù)據(jù)庫(kù)同步方法,包括如下步驟:

對(duì)源數(shù)據(jù)庫(kù)中的源表進(jìn)行監(jiān)測(cè);

當(dāng)監(jiān)測(cè)到所述源表中的某一部分源數(shù)據(jù)發(fā)生基于數(shù)據(jù)操縱語言的操作時(shí), 將這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引添加到與所述源表對(duì)應(yīng)的中間表中;

在第一同步條件滿足后,根據(jù)所述中間表中的源唯一索引在所述源表中確定出待同步源數(shù)據(jù),并向目標(biāo)庫(kù)中對(duì)應(yīng)目標(biāo)表發(fā)送至少包含所述待同步源數(shù)據(jù)對(duì)應(yīng)的源唯一索引的同步消息。

進(jìn)一步的,一個(gè)所述源表唯一對(duì)應(yīng)一個(gè)所述中間表;所述第一同步條件包括:到達(dá)預(yù)設(shè)的時(shí)間和/或所述中間表累計(jì)的數(shù)量達(dá)到預(yù)設(shè)的閾值。

進(jìn)一步的,所述源唯一索引包括所述源表中的源數(shù)據(jù)對(duì)應(yīng)的主鍵值。

進(jìn)一步的,所述在源表中確定出待同步源數(shù)據(jù),并向目標(biāo)庫(kù)中對(duì)應(yīng)目標(biāo)表發(fā)送至少包含所述待同步源數(shù)據(jù)的源唯一索引的同步消息包括:

判斷所述源唯一索引在所述源表中是否存在;

若否,則在所述同步消息中僅包含所述源唯一索引;

若是,則提取所述源唯一索引對(duì)應(yīng)的源數(shù)據(jù)作為待同步數(shù)據(jù),并加入所述同步消息中。

進(jìn)一步的,在所述對(duì)源數(shù)據(jù)庫(kù)中的源表進(jìn)行監(jiān)測(cè)之前,還包括:

判斷所述源表的數(shù)據(jù)量級(jí)是否小于預(yù)設(shè)的數(shù)量級(jí)閾值;

若是,則在第二同步條件滿足后,將所述源表當(dāng)前的所有源數(shù)據(jù)和對(duì)應(yīng)的源唯一索引發(fā)送給所述目標(biāo)表進(jìn)行同步匹配。

進(jìn)一步的,所述同步匹配包括:基于merge語句進(jìn)行匹配同步。

為了解決上述技術(shù)問題,本發(fā)明還提供了一種數(shù)據(jù)庫(kù)同步方法,包括如下步驟:

接收來自源數(shù)據(jù)庫(kù)中的源表的同步消息,所述同步消息至少包括發(fā)生基于數(shù)據(jù)操縱語言的操作的待同步源數(shù)據(jù)對(duì)應(yīng)的源唯一索引;

從所述同步消息中提取出所述源唯一索引;

根據(jù)所述源唯一索引在目標(biāo)庫(kù)的對(duì)應(yīng)的目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引,并根據(jù)查找結(jié)果和所述同步消息進(jìn)行同步操作。

進(jìn)一步的,所述根據(jù)查找結(jié)果和同步消息進(jìn)行同步操作包括:

當(dāng)查找結(jié)果為所述目標(biāo)表中存在與所述源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,而所述同步消息中僅包含所述源唯一索引時(shí),刪除所述目標(biāo)表中的所述目標(biāo)唯一索引及對(duì)應(yīng)的目標(biāo)數(shù)據(jù);

當(dāng)查找結(jié)果為所述目標(biāo)表中存在與所述源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,且所述同步消息中包含所述源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)時(shí),則用所述待同步源數(shù)據(jù)更新所述目標(biāo)表中與目標(biāo)唯一索引對(duì)應(yīng)的目標(biāo)數(shù)據(jù);

當(dāng)查找結(jié)果為所述目標(biāo)表中不存在與所述源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,且所述同步消息中包含所述源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)時(shí),則將所述源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)插入所述目標(biāo)表中。

為了解決上述技術(shù)問題,本發(fā)明還提供了一種數(shù)據(jù)庫(kù)同步方法,包括如下步驟:

對(duì)源數(shù)據(jù)庫(kù)中的源表的數(shù)據(jù)進(jìn)行監(jiān)測(cè);

當(dāng)監(jiān)測(cè)到所述源表中的某一部分源數(shù)據(jù)發(fā)生基于數(shù)據(jù)操縱語言的操作時(shí),將這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引添加到與所述源表對(duì)應(yīng)的中間表中;

在第一同步條件滿足后,根據(jù)所述中間表中的源唯一索引在所述源表中確定出待同步源數(shù)據(jù),并向目標(biāo)庫(kù)中對(duì)應(yīng)目標(biāo)表發(fā)送至少包含所述待同步源數(shù)據(jù)對(duì)應(yīng)的源唯一索引的同步消息;

從所述同步消息中提取出所述源唯一索引;

根據(jù)所述源唯一索引在所述目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引,并根據(jù)查找結(jié)果和所述同步消息進(jìn)行同步操作。

為了解決上述技術(shù)問題,本發(fā)明還提供了一種源數(shù)據(jù)同步裝置,包括觸發(fā)模塊,消息模塊,第一發(fā)送模塊;

所述觸發(fā)模塊用于對(duì)所述源數(shù)據(jù)庫(kù)的源表進(jìn)行監(jiān)測(cè),當(dāng)監(jiān)測(cè)到所述源表中的某一部分源數(shù)據(jù)發(fā)生基于數(shù)據(jù)操縱語言的操作時(shí),將這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引添加到與所述源表對(duì)應(yīng)的中間表中;

所述消息模塊用于根據(jù)所述中間表中的源唯一索引在所述源表中確定出待同步源數(shù)據(jù),并生成同步消息;所述同步消息至少包括所述待同步源數(shù)據(jù)的源唯一索引;

所述第一發(fā)送模塊用于將所述同步消息發(fā)送給目標(biāo)庫(kù)中對(duì)應(yīng)的目標(biāo)表。

進(jìn)一步的,還包括判斷模塊,第二發(fā)送模塊;

所述判斷模塊用于判斷所述源表的數(shù)據(jù)量級(jí)是否小于預(yù)設(shè)的數(shù)量級(jí)閾值;

所述第二發(fā)送模塊用于當(dāng)所述判斷模塊判斷所述源表的數(shù)據(jù)量級(jí)小于預(yù)設(shè)的數(shù)量級(jí)閾值時(shí),在滿足第二同步條件后,將所述源表當(dāng)前的所有源數(shù)據(jù)對(duì)應(yīng)的源唯一索引發(fā)送給所述目標(biāo)表。

為了解決上述技術(shù)問題,本發(fā)明還提供了一種目標(biāo)數(shù)據(jù)同步裝置,包括接收模塊,提取模塊,同步模塊;

所述接收模塊用于接收來自源數(shù)據(jù)庫(kù)中的源表的同步消息;所述同步消息包括所述源表中發(fā)生基于數(shù)據(jù)操縱語言的操作的源數(shù)據(jù)對(duì)應(yīng)的源唯一索引;

所述提取模塊用于從所述同步消息中提取出所述源唯一索引;

所述同步模塊用于根據(jù)所述源唯一索引在所述目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引,并根據(jù)查找結(jié)果和所述同步消息進(jìn)行同步操作。

進(jìn)一步的,所述同步模塊包括查詢子模塊,刪除子模塊,插入子模塊,更新子模塊;

所述查詢子模塊用于查詢所述源唯一索引對(duì)應(yīng)的所述目標(biāo)表中的目標(biāo)唯一索引;

所述刪除子模塊用于當(dāng)查詢到所述目標(biāo)表中存在與所述源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,而所述同步消息中僅包含所述源唯一索引時(shí),刪除所述目標(biāo)表中的所述目標(biāo)唯一索引及對(duì)應(yīng)的目標(biāo)數(shù)據(jù);

所述更新子模塊用于當(dāng)查詢到所述目標(biāo)表中存在與所述源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,且所述同步消息中包含所述源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)時(shí),則用所述待同步源數(shù)據(jù)更新所述目標(biāo)表中與目標(biāo)唯一索引對(duì)應(yīng)的目標(biāo)數(shù)據(jù);

所述插入子模塊用于當(dāng)查詢到所述目標(biāo)表中不存在與所述源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,且所述同步消息中包含所述源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)時(shí),則將所述源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)插入所述目標(biāo)表中。

為了解決上述技術(shù)問題,本發(fā)明還提供了一種數(shù)據(jù)庫(kù)同步系統(tǒng),包括源數(shù)據(jù)同步裝置和目標(biāo)數(shù)據(jù)同步裝置;所述源數(shù)據(jù)同步裝置包括觸發(fā)模塊,消息模塊,第一發(fā)送模塊;所述目標(biāo)數(shù)據(jù)同步裝置包括接收模塊,提取模塊,同步模塊;

所述觸發(fā)模塊用于對(duì)所述源數(shù)據(jù)庫(kù)的源表進(jìn)行監(jiān)測(cè),當(dāng)監(jiān)測(cè)到所述源表中的某一部分源數(shù)據(jù)發(fā)生基于數(shù)據(jù)操縱語言的操作時(shí),將這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引添加到與所述源表對(duì)應(yīng)的中間表中;

所述消息模塊用于根據(jù)所述中間表中的源唯一索引在所述源表中確定出待同步源數(shù)據(jù),并生成同步消息;所述同步消息至少包括所述待同步源數(shù)據(jù)的源唯一索引;

所述第一發(fā)送模塊用于將所述同步消息發(fā)送給目標(biāo)庫(kù)中對(duì)應(yīng)的目標(biāo)表;

所述接收模塊用于接收來自所述源表的同步消息;

所述提取模塊用于從所述同步消息中提取出所述源唯一索引;

所述同步模塊用于根據(jù)所述源唯一索引在所述目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引,并根據(jù)查找結(jié)果進(jìn)行同步操作。

有益效果

本發(fā)明提供了源數(shù)據(jù)、目標(biāo)數(shù)據(jù)同步裝置和數(shù)據(jù)庫(kù)同步方法及系統(tǒng),通過對(duì)源數(shù)據(jù)庫(kù)中的源表的監(jiān)測(cè),將源表中發(fā)生基于數(shù)據(jù)操縱語言的操作的源數(shù)據(jù)的源唯一索引添加到與源表對(duì)應(yīng)的中間表中,在滿足同步條件后,在根據(jù)中間表中記錄的源唯一索引在源表中查找相關(guān)的待同步源數(shù)據(jù),并向與源表對(duì)應(yīng)的目標(biāo)庫(kù)中的目標(biāo)表發(fā)送帶有源唯一索引的同步消息,再根據(jù)該同步消息在目標(biāo)表中進(jìn)行查找并同步;本發(fā)明直接利用中間表記錄源表中發(fā)生基于數(shù)據(jù)操縱語言的操作的源數(shù)據(jù)的源唯一索引,無須采用日志記錄,不用在歸檔模式下完成,保證了數(shù)據(jù)庫(kù)的性能,節(jié)約了磁盤空間。

附圖說明

圖1為本發(fā)明實(shí)施例一中數(shù)據(jù)庫(kù)同步方法流程圖;

圖2為本發(fā)明實(shí)施例二中數(shù)據(jù)庫(kù)同步方法流程圖;

圖3為本發(fā)明實(shí)施例三中數(shù)據(jù)庫(kù)同步方法流程圖;

圖4為本發(fā)明實(shí)施例四中源數(shù)據(jù)同步裝置示意圖;

圖5為本發(fā)明實(shí)施例五中目標(biāo)數(shù)據(jù)同步裝置示意圖;

圖6為本發(fā)明實(shí)施例六中數(shù)據(jù)庫(kù)同步系統(tǒng)示意圖。

具體實(shí)施方式

本發(fā)明的構(gòu)思在于,檢測(cè)源數(shù)據(jù)庫(kù)中源表的動(dòng)作,將發(fā)生基于數(shù)據(jù)操縱語 言的操作的源數(shù)據(jù)的源唯一索引添加到與源表對(duì)應(yīng)的中間表中,再根據(jù)中間表中記錄的源唯一索引分別在源表和目標(biāo)庫(kù)中的目標(biāo)表中查找,無須開啟歸檔模式,有效減少了磁盤空間的浪費(fèi)。

實(shí)施例一

本實(shí)施例提供了一種數(shù)據(jù)庫(kù)同步方法,如圖1所示,請(qǐng)參考圖1:

S101、對(duì)源數(shù)據(jù)庫(kù)中的源表進(jìn)行監(jiān)測(cè);

S102、當(dāng)監(jiān)測(cè)到源表中的某一部分源數(shù)據(jù)發(fā)生基于DML(Data Manipulation Language,數(shù)據(jù)操縱語言)的操作時(shí),將這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引添加到與源表對(duì)應(yīng)的中間表中;

S103、在第一同步條件滿足后,根據(jù)中間表中的源唯一索引在源表中確定出待同步源數(shù)據(jù),并向目標(biāo)庫(kù)中對(duì)應(yīng)目標(biāo)表發(fā)送至少包含待同步源數(shù)據(jù)對(duì)應(yīng)的源唯一索引的同步消息。

其中,步驟S102中的檢測(cè)到源表中的某一部分源數(shù)據(jù)發(fā)生DML操作時(shí),這部分源數(shù)據(jù)在原來的數(shù)據(jù)的基礎(chǔ)上發(fā)生了變化,包括delete(刪除)這部分源數(shù)據(jù),insert(插入)這部分源數(shù)據(jù),或者update(更新)這部分源數(shù)據(jù);這三種DML操作被監(jiān)測(cè)到之后,這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引會(huì)被添加到與該源表對(duì)應(yīng)的中間表中。中間表是預(yù)先建立好的,一個(gè)中間表可以是唯一對(duì)應(yīng)一個(gè)源表,這時(shí)一個(gè)中間表中只記錄一個(gè)源表中的源數(shù)據(jù)的源唯一索引,源唯一索引優(yōu)選為源表的主鍵值,直接采用源表的主鍵值作為源唯一索引減少定義過程,降低成本和節(jié)約時(shí)間;也可以是一個(gè)中間表可以對(duì)應(yīng)記錄多個(gè)源表的源數(shù)據(jù)的源唯一索引,這種情況下就需要進(jìn)一步的在源唯一索引上添加各個(gè)源表的標(biāo)識(shí)。

在步驟S103中,根據(jù)步驟S102確定的源唯一索引,對(duì)源表的源唯一索引進(jìn)行查找,并根據(jù)查找的結(jié)果生成同步消息;這個(gè)查找過程包括將中間表中的源唯一索引一一與源表的源唯一索引進(jìn)行比對(duì),比對(duì)的結(jié)果有如下兩種:源表中不存在源唯一索引,則說明該源數(shù)據(jù)發(fā)生了delete操作,此時(shí)的同步消息僅僅包含源唯一索引而沒有與其對(duì)應(yīng)的源數(shù)據(jù);源表中存在源唯一索引,則說明該源唯一索引對(duì)應(yīng)的源數(shù)據(jù)在源表中存在,說明該源數(shù)據(jù)發(fā)生了insert操作或者update操作,此時(shí),將該源數(shù)據(jù)提取出來作為待同步數(shù)據(jù),并添加到同步消息中,即同步消息中包含了源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)。這樣的查找過程可以讓中間表僅僅添加源唯一索引即可,節(jié)約了磁盤空間。

上述的第一同步條件表示將同步消息發(fā)送給目標(biāo)庫(kù)中的目標(biāo)表需要滿足的時(shí)機(jī),這個(gè)時(shí)機(jī)可以是預(yù)設(shè)的間隔時(shí)間的定時(shí)機(jī)制,即到達(dá)預(yù)設(shè)的時(shí)間就執(zhí)行將同步消息發(fā)送給目標(biāo)表;也可以是在進(jìn)行多個(gè)表的同步的前提下,若在源表發(fā)生DML操作時(shí)生成與源表對(duì)應(yīng)的中間表,則中間表累計(jì)的數(shù)量達(dá)到預(yù)設(shè)的閾值也可以作為將同步消息發(fā)送給目標(biāo)表的時(shí)機(jī),該閾值根據(jù)源表的總量而定;還可以是上述兩種第一同步條件的組合,即滿足兩者中任意一種即執(zhí)行將同步消息發(fā)送給目標(biāo)表。這樣可以避免實(shí)時(shí)同步給數(shù)據(jù)庫(kù)造成的負(fù)擔(dān),也可以使數(shù)據(jù)庫(kù)的同步足夠及時(shí)。

進(jìn)一步的,在對(duì)源數(shù)據(jù)庫(kù)中的源表進(jìn)行監(jiān)測(cè)之前,還包括判斷源表的數(shù)據(jù)量級(jí)是否小于預(yù)設(shè)的數(shù)量級(jí)閾值。若此時(shí)源表的數(shù)據(jù)量級(jí)小于預(yù)設(shè)的數(shù)量級(jí)閾值,則可以在第二同步條件滿足后,將源表當(dāng)前所有源數(shù)據(jù)和對(duì)應(yīng)的源唯一索引發(fā)送給目標(biāo)表,進(jìn)行同步匹配。在源表數(shù)據(jù)量級(jí)小于閾值的前提下,采用這種方式消耗的時(shí)間更少,且對(duì)源表沒有影響;預(yù)設(shè)的數(shù)量級(jí)閾值根據(jù)數(shù)據(jù)庫(kù)的性能而定。該同步匹配過程優(yōu)選為基于merge語句的同步匹配過程,具體包括: 將源表當(dāng)前所有數(shù)據(jù)的源唯一索引發(fā)送給目標(biāo)表,將源唯一索引和目標(biāo)表的目標(biāo)唯一索引進(jìn)行匹配,若匹配成功,則使用源數(shù)據(jù)update目標(biāo)表中對(duì)應(yīng)的目標(biāo)數(shù)據(jù);若匹配不成功,則使用源表數(shù)據(jù)insert目標(biāo)表;最后,查找并delete目標(biāo)表中存在目標(biāo)唯一索引而源表中不存在與其對(duì)應(yīng)的源唯一索引的目標(biāo)數(shù)據(jù)。進(jìn)一步的,第二同步條件為到達(dá)預(yù)設(shè)的時(shí)間,即設(shè)定每間隔一段時(shí)間執(zhí)行將源表當(dāng)前所有源數(shù)據(jù)和對(duì)應(yīng)的源唯一索引發(fā)送給目標(biāo)表;此時(shí)的間隔時(shí)間可以根據(jù)源表中DML操作的頻率而定,不必設(shè)定為固定的值。

實(shí)施例二

本實(shí)施例提供了一種數(shù)據(jù)庫(kù)同步方法,如圖2所示,請(qǐng)參考圖2:

S201、接收來自源數(shù)據(jù)庫(kù)中的源表的同步消息,同步消息至少包括發(fā)生基于數(shù)據(jù)操縱語言的操作的待同步源數(shù)據(jù)對(duì)應(yīng)的源唯一索引;

其中,該同步消息與實(shí)施例一中的同步消息一致,這里不再贅述。

S202、從同步消息中提取出源唯一索引;

S203、根據(jù)源唯一索引在目標(biāo)庫(kù)的對(duì)應(yīng)的目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引,并根據(jù)查找結(jié)果和同步消息進(jìn)行同步操作。

在步驟S202中,從同步消息中提取出源唯一索引是指在接收到的同步消息中至少包含了與發(fā)生了DML操作的待同步源數(shù)據(jù)對(duì)應(yīng)的源唯一索引,將該源唯一索引提取出來與目標(biāo)表的目標(biāo)唯一索引進(jìn)行比對(duì),即步驟S203中的根據(jù)源唯一索引在目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引。查找的結(jié)果有以下兩種:目標(biāo)表中存在與源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引;目標(biāo)表中不存在與源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引。而同步消息有兩種:只含有源唯一索引;含有源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)。當(dāng)查找結(jié)果為目標(biāo)表中存在與源唯一索引對(duì)應(yīng)的目標(biāo)唯 一索引,而同步消息只含有唯一索引時(shí),可以得出源數(shù)據(jù)發(fā)生了delete操作,此時(shí)delete目標(biāo)表中的目標(biāo)唯一索引和對(duì)應(yīng)的目標(biāo)數(shù)據(jù);當(dāng)查找結(jié)果為目標(biāo)表中存在與源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,且同步消息含有源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)時(shí),可以得出源數(shù)據(jù)發(fā)生了update操作,此時(shí)用待同步源數(shù)據(jù)update目標(biāo)表中與目標(biāo)唯一索引對(duì)應(yīng)的目標(biāo)數(shù)據(jù);當(dāng)查找結(jié)果為目標(biāo)表中不存在與源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,而同步消息中含有源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)時(shí),可以得出源數(shù)據(jù)發(fā)生了insert操作,此時(shí)將源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)insert目標(biāo)表中。進(jìn)一步的,目標(biāo)唯一索引優(yōu)選為目標(biāo)表的主鍵值。

實(shí)施例三

本實(shí)施例提供了一種數(shù)據(jù)庫(kù)同步方法,如圖3所示,請(qǐng)參考圖3:

S301、對(duì)源數(shù)據(jù)庫(kù)中的源表的數(shù)據(jù)進(jìn)行監(jiān)測(cè);

S302、當(dāng)監(jiān)測(cè)到源表中的某一部分源數(shù)據(jù)發(fā)生基于數(shù)據(jù)操縱語言的操作時(shí),將這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引添加到與源表對(duì)應(yīng)的中間表中;

S303、在第一同步條件滿足后,根據(jù)中間表中的源唯一索引在源表中確定出待同步源數(shù)據(jù),并向目標(biāo)庫(kù)中對(duì)應(yīng)目標(biāo)表發(fā)送至少包含待同步源數(shù)據(jù)對(duì)應(yīng)的源唯一索引的同步消息;

S304、從同步消息中提取出源唯一索引;

S305、根據(jù)源唯一索引在目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引,并根據(jù)查找結(jié)果和同步消息進(jìn)行同步操作。

實(shí)施例四

本實(shí)施例提供了一種源數(shù)據(jù)同步裝置,如圖4所示,請(qǐng)參考圖4:

源數(shù)據(jù)同步裝置包括觸發(fā)模塊401,消息模塊402,第一發(fā)送模塊403;

觸發(fā)模塊401用于對(duì)源數(shù)據(jù)庫(kù)中的源表進(jìn)行監(jiān)測(cè);當(dāng)檢測(cè)到源表中的某一部分?jǐn)?shù)據(jù)發(fā)生DML操作時(shí),將這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引添加到與源表對(duì)應(yīng)的中間表中。觸發(fā)模塊401一般設(shè)置于源表內(nèi),實(shí)時(shí)監(jiān)測(cè)源表是否發(fā)生了DML操作,該觸發(fā)模塊401優(yōu)選為觸發(fā)器,一旦發(fā)生了DML操作就會(huì)觸發(fā)。

消息模塊402用于根據(jù)中間表的源唯一索引在源表中確定出待同步源數(shù)據(jù),并生成同步消息。其中,該同步消息與實(shí)施例一中的同步消息一致,這里不再贅述。

第一發(fā)送模塊403用于將同步消息發(fā)送給目標(biāo)庫(kù)中對(duì)應(yīng)的目標(biāo)表。

此外,還包括判斷模塊404和第二發(fā)送模塊405;判斷模塊404用于在觸發(fā)模塊對(duì)源數(shù)據(jù)庫(kù)的源表進(jìn)行監(jiān)測(cè)之前,判斷源表的數(shù)據(jù)量級(jí)是否小于預(yù)設(shè)的數(shù)量級(jí)閾值;第二發(fā)送模塊用于當(dāng)判斷模塊判斷源表的數(shù)據(jù)量級(jí)小于預(yù)設(shè)的數(shù)量級(jí)閾值時(shí),在滿足第二同步條件后,將源表當(dāng)前的所有源數(shù)據(jù)對(duì)應(yīng)的源唯一索引發(fā)送給目標(biāo)表。

實(shí)施例五

本實(shí)施例提供了一種目標(biāo)數(shù)據(jù)同步裝置,如圖5所示,請(qǐng)參考圖5:

目標(biāo)數(shù)據(jù)同步裝置包括接收模塊501,提取模塊502,同步模塊503;

接收模塊501用于接收來自源數(shù)據(jù)庫(kù)的源表的同步消息;該同步消息與實(shí)施例一中的同步消息一致,這里不再贅述。

提取模塊502用于從同步消息中提取出源唯一索引;

同步模塊503用于根據(jù)源唯一索引在目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引, 并根據(jù)查找結(jié)果和同步消息進(jìn)行同步操作。

進(jìn)一步的,同步模塊包括查詢子模塊5031,刪除子模塊5032,更新子模塊5033,插入子模塊5034;查詢子模塊用于查詢?cè)次ㄒ凰饕龑?duì)應(yīng)的目標(biāo)表中的目標(biāo)唯一索引,查找結(jié)果與實(shí)施例二中的查找結(jié)果一致,這里不再贅述;刪除子模塊5032用于當(dāng)查找結(jié)果為目標(biāo)表中存在與源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,而同步消息中僅包含源唯一索引時(shí),delete目標(biāo)表中的目標(biāo)唯一索引和對(duì)應(yīng)的目標(biāo)數(shù)據(jù);更新子模塊5033用于當(dāng)查找結(jié)果為目標(biāo)表中存在與源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,且同步消息中包含源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)時(shí),用待同步源數(shù)據(jù)update目標(biāo)表中與目標(biāo)唯一索引對(duì)應(yīng)的目標(biāo)數(shù)據(jù);插入子模塊5034用于當(dāng)查找結(jié)果為目標(biāo)表中不存在與源唯一索引對(duì)應(yīng)的目標(biāo)唯一索引,且同步消息中包含源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)時(shí),將源唯一索引和對(duì)應(yīng)的待同步源數(shù)據(jù)insert目標(biāo)表中。

實(shí)施例六

本實(shí)施例提供了一種數(shù)據(jù)庫(kù)同步系統(tǒng),如圖6所示,請(qǐng)參考圖6:

數(shù)據(jù)同步系統(tǒng)包括源數(shù)據(jù)同步裝置40和目標(biāo)數(shù)據(jù)同步裝置50;其中源數(shù)據(jù)同步裝置40包括觸發(fā)模塊401,消息模塊402,第一發(fā)送模塊403;目標(biāo)數(shù)據(jù)同步裝置50包括接收模塊501,提取模塊502,同步模塊503。

觸發(fā)模塊401用于對(duì)源數(shù)據(jù)庫(kù)中的源表進(jìn)行監(jiān)測(cè);當(dāng)檢測(cè)到源表中的某一部分?jǐn)?shù)據(jù)發(fā)生DML操作時(shí),將這部分源數(shù)據(jù)對(duì)應(yīng)的源唯一索引添加到與源表對(duì)應(yīng)的中間表中。觸發(fā)模塊401一般設(shè)置于源表內(nèi),實(shí)時(shí)監(jiān)測(cè)源表是否發(fā)生了DML操作,該觸發(fā)模塊401優(yōu)選為觸發(fā)器,一旦發(fā)生了DML操作就會(huì)觸發(fā)。

消息模塊402用于根據(jù)中間表的源唯一索引在源表中確定出待同步源數(shù)據(jù), 并生成同步消息。其中,該同步消息與實(shí)施例一中的同步消息一致,這里不再贅述。

第一發(fā)送模塊403用于將同步消息發(fā)送給目標(biāo)庫(kù)中對(duì)應(yīng)的目標(biāo)表。

接收模塊501用于接收來自源數(shù)據(jù)庫(kù)的源表的同步消息;

提取模塊502用于從同步消息中提取出源唯一索引;

同步模塊503用于根據(jù)源唯一索引在目標(biāo)表中查找對(duì)應(yīng)的目標(biāo)唯一索引,并根據(jù)查找結(jié)果和同步消息進(jìn)行同步操作。

以上內(nèi)容是結(jié)合具體的實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
封开县| 大荔县| 万盛区| 平遥县| 班玛县| 威远县| 宁河县| 河间市| 雷山县| 堆龙德庆县| 于田县| 从江县| 城口县| 信丰县| 大同县| 临泽县| 洞口县| 历史| 鲁山县| 大埔区| 乳山市| 萨迦县| 元谋县| 霍城县| 吐鲁番市| 临猗县| 海原县| 平南县| 禹城市| 武汉市| 厦门市| 肃宁县| 布尔津县| 巴南区| 淮阳县| 禹州市| 赤水市| 凤阳县| 石柱| 明光市| 嵩明县|