一較小時(shí)間則進(jìn)行一次同步,因此目標(biāo)端服務(wù)器所需同步的數(shù)據(jù)變更事件均位于源端中繼服務(wù)器,進(jìn)而目標(biāo)端服務(wù)器直接從源端中繼服務(wù)器讀取數(shù)據(jù)變更事件數(shù)據(jù)流即可。
[0134]舉個(gè)例子,假設(shè)源端歷史服務(wù)器中事件隊(duì)列一中存儲(chǔ)的數(shù)據(jù)變更事件的全局標(biāo)識(shí)號(hào)為從0001、0005、0010、0018、0200,而由于源端中繼服務(wù)器的存儲(chǔ)速度較快,因此源端中繼服務(wù)器中事件隊(duì)列一中所存儲(chǔ)的數(shù)據(jù)變更事件的全局標(biāo)識(shí)號(hào)可為從0200、0210、0220、0250。進(jìn)一步,目標(biāo)端服務(wù)器進(jìn)行同步初始化,或在第一時(shí)長(zhǎng)內(nèi)未向源端中繼服務(wù)器發(fā)送第一請(qǐng)求消息時(shí),或中斷一段時(shí)間后需要恢復(fù)同步過(guò)程時(shí),目標(biāo)端服務(wù)器向源端歷史服務(wù)器發(fā)送第三請(qǐng)求消息,假設(shè)第三請(qǐng)求消息中攜帶的事件隊(duì)列標(biāo)識(shí)號(hào)為事件隊(duì)列一、第一全局標(biāo)識(shí)號(hào)0005。則目標(biāo)端服務(wù)器先從源端歷史服務(wù)器中的事件隊(duì)列一中獲取出第一全局標(biāo)識(shí)號(hào)0005至源端歷史服務(wù)器中最新的數(shù)據(jù)0200的數(shù)據(jù)變更事件,即0010、0018、0200。目標(biāo)端服務(wù)器對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行同步操作。若此時(shí)目標(biāo)數(shù)據(jù)庫(kù)中已同步的日期最新的數(shù)據(jù)變更事件的生成時(shí)間與當(dāng)前時(shí)間的時(shí)間差小于所述第一中斷時(shí)長(zhǎng),接著目標(biāo)端服務(wù)器器從源端中繼服務(wù)器中的事件隊(duì)列一中獲取0200至最新的數(shù)據(jù)0250的數(shù)據(jù)變更事件,即0200、0210、0220、0250。接著目標(biāo)端服務(wù)器繼續(xù)對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行同步操作。
[0135]具體來(lái)說(shuō),目標(biāo)端服務(wù)器獲取到一次數(shù)據(jù)變更事件后,即對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行一次同步操作。
[0136]可看出,源端中繼服務(wù)器和源端歷史服務(wù)器分別儲(chǔ)存有數(shù)據(jù)變更事件,一方面當(dāng)目標(biāo)端服務(wù)器為新增或因故中止一段時(shí)間之后,均可從源端歷史服務(wù)器中獲取所有歷史數(shù)據(jù)變更事件,從而實(shí)現(xiàn)了目標(biāo)數(shù)據(jù)庫(kù)與源數(shù)據(jù)庫(kù)之間數(shù)據(jù)同步的完整性,即避免了因源端中繼服務(wù)器存儲(chǔ)空間有限而造成的部分歷史數(shù)據(jù)變更事件丟失的問(wèn)題。另一方面,處于持續(xù)正常工作狀態(tài)的目標(biāo)端服務(wù)器從源端中繼服務(wù)器獲取數(shù)據(jù)變更事件,由于源端中繼服務(wù)器的存儲(chǔ)和讀取速度均較快,因此,提高了目標(biāo)數(shù)據(jù)庫(kù)與源數(shù)據(jù)庫(kù)之間數(shù)據(jù)同步的效率。
[0137]進(jìn)一步,本發(fā)明實(shí)施例中的源端中繼服務(wù)器僅對(duì)源數(shù)據(jù)庫(kù)中產(chǎn)生的原始數(shù)據(jù)變更事件進(jìn)行了一次讀取和解析操作,之后多個(gè)目標(biāo)端服務(wù)器均通過(guò)訪問(wèn)源端中繼服務(wù)器從而獲得解析后的數(shù)據(jù)變更事件,提高了數(shù)據(jù)同步操作的效率,另一方面避免了多個(gè)目標(biāo)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)同步時(shí)多次對(duì)源數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),從而減輕了源數(shù)據(jù)庫(kù)的負(fù)荷,避免了源數(shù)據(jù)庫(kù)性能急劇下降,提高了數(shù)據(jù)同步的效率。另一方面,本發(fā)明中,源端中繼服務(wù)器對(duì)數(shù)據(jù)變更事件進(jìn)行讀取和解析,目標(biāo)端服務(wù)器對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)同步操作,由于功能分離,從而降低了單臺(tái)服務(wù)器的負(fù)荷,提高了數(shù)據(jù)同步的效率。
[0138]進(jìn)一步,目標(biāo)端服務(wù)器從源端歷史服務(wù)器獲取第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件,具體有以下兩種方式:
[0139]方式一:較佳的,目標(biāo)端服務(wù)器向源端歷史服務(wù)器發(fā)送第三請(qǐng)求消息;其中,第三請(qǐng)求消息攜帶目標(biāo)端服務(wù)器對(duì)應(yīng)連接的目標(biāo)數(shù)據(jù)庫(kù)需同步的至少一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列標(biāo)識(shí)號(hào),以及源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的數(shù)據(jù)表已同步的日期最新的數(shù)據(jù)變更事件的第一全局標(biāo)識(shí)號(hào);其中,至少一個(gè)目標(biāo)數(shù)據(jù)庫(kù)儲(chǔ)存單個(gè)源數(shù)據(jù)庫(kù)儲(chǔ)存的全部數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表;
[0140]源端歷史服務(wù)器根據(jù)第三請(qǐng)求消息,從對(duì)應(yīng)的事件隊(duì)列中將第三請(qǐng)求消息中的第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件攜帶于第三響應(yīng)消息中,并將第三響應(yīng)消息發(fā)送給目標(biāo)端服務(wù)器,以使目標(biāo)端服務(wù)器對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行同步操作。
[0141]方式二:較佳的,目標(biāo)端服務(wù)器向源端歷史服務(wù)器發(fā)送第三請(qǐng)求消息;其中,第三請(qǐng)求消息攜帶目標(biāo)端服務(wù)器對(duì)應(yīng)連接的目標(biāo)數(shù)據(jù)庫(kù)需同步的至少一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列標(biāo)識(shí)號(hào),以及源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的數(shù)據(jù)表已同步的日期最新的數(shù)據(jù)變更事件的生成時(shí)間;其中,至少一個(gè)目標(biāo)數(shù)據(jù)庫(kù)儲(chǔ)存單個(gè)源數(shù)據(jù)庫(kù)儲(chǔ)存的全部數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表;
[0142]源端歷史服務(wù)器根據(jù)第三請(qǐng)求消息,從對(duì)應(yīng)的事件隊(duì)列中將第三請(qǐng)求消息中的已同步的日期最新的數(shù)據(jù)變更事件的生成時(shí)間之后的數(shù)據(jù)變更事件攜帶于第三響應(yīng)消息中,并將第三響應(yīng)消息發(fā)送給目標(biāo)端服務(wù)器,以使目標(biāo)端服務(wù)器對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行同步操作。
[0143]具體來(lái)說(shuō),目標(biāo)端服務(wù)器從源端歷史服務(wù)器獲取第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件,具體可通過(guò)目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)應(yīng)的時(shí)間點(diǎn),從源端歷史服務(wù)器中獲取某一個(gè)時(shí)間點(diǎn)處的數(shù)據(jù)變更事件,也根據(jù)全局標(biāo)識(shí)號(hào)可從源端歷史服務(wù)器中獲取第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件。
[0144]較佳的,目標(biāo)端服務(wù)器向源端歷史服務(wù)器發(fā)送第三請(qǐng)求消息,具體包括:
[0145]目標(biāo)端服務(wù)器通過(guò)M個(gè)數(shù)據(jù)傳輸通道向源端歷史服務(wù)器發(fā)送N條第三請(qǐng)求消息;其中,M為大于等于I的正整數(shù),M小于等于N;每條數(shù)據(jù)傳輸通道至少承載一條第三請(qǐng)求消息;
[0146]源端歷史服務(wù)器將第三響應(yīng)消息發(fā)送給目標(biāo)端服務(wù)器,具體包括:
[0147]源端歷史服務(wù)器將N條第三響應(yīng)消息通過(guò)M個(gè)數(shù)據(jù)傳輸通道發(fā)送給目標(biāo)端服務(wù)器。
[0148]在具體實(shí)施中,大部分情況下M等于N。較佳的,源端歷史服務(wù)器通過(guò)M個(gè)數(shù)據(jù)傳輸通道接收目標(biāo)端服務(wù)器發(fā)送的N條第三請(qǐng)求消息;其中,M為大于等于I的正整數(shù),M小于等于N。每條數(shù)據(jù)傳輸通道可承載一條或多條第三請(qǐng)求消息。每個(gè)第三請(qǐng)求消息至少包括一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)。即每個(gè)第三請(qǐng)求消息中可攜帶多個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)。較佳的,源端歷史服務(wù)器與目標(biāo)端服務(wù)器可建立多個(gè)并發(fā)傳輸通道。每個(gè)傳輸通道可承載一個(gè)或多個(gè)事件隊(duì)列中的數(shù)據(jù),各個(gè)事件隊(duì)列對(duì)應(yīng)的數(shù)據(jù)按事件隊(duì)列的順序,一個(gè)事件隊(duì)列一個(gè)事件隊(duì)列的按順序發(fā)送,每個(gè)事件隊(duì)列中的各個(gè)數(shù)據(jù)按全局標(biāo)識(shí)號(hào)或者數(shù)據(jù)變更事件發(fā)生的順序,按順序傳送。
[0149]具體來(lái)說(shuō),目標(biāo)端服務(wù)器連接多個(gè)目標(biāo)數(shù)據(jù)庫(kù)時(shí),則目標(biāo)端服務(wù)器需要同步所有與該目標(biāo)端服務(wù)器連接的目標(biāo)數(shù)據(jù)庫(kù),目標(biāo)端服務(wù)器也需分別為每個(gè)目標(biāo)數(shù)據(jù)庫(kù)構(gòu)造一條第三請(qǐng)求消息,用于獲取該目標(biāo)數(shù)據(jù)庫(kù)需同步的數(shù)據(jù)變更事件。假設(shè)該目標(biāo)端服務(wù)器連接的N個(gè)目標(biāo)數(shù)據(jù)庫(kù),目標(biāo)端服務(wù)器構(gòu)造了 N條第三請(qǐng)求消息。
[0150]較佳的,目標(biāo)端服務(wù)器從源端中繼服務(wù)器獲取第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件之前,還包括:
[0151]源端中繼服務(wù)器實(shí)時(shí)捕獲源數(shù)據(jù)庫(kù)產(chǎn)生的數(shù)據(jù)變更事件;其中,每條數(shù)據(jù)變更事件至少包括該數(shù)據(jù)變更事件對(duì)應(yīng)的全局標(biāo)識(shí)號(hào),該數(shù)據(jù)變更事件對(duì)應(yīng)的源數(shù)據(jù)庫(kù)中的源數(shù)據(jù)表標(biāo)識(shí)號(hào);
[0152]源端中繼服務(wù)器根據(jù)數(shù)據(jù)變更事件的源數(shù)據(jù)表標(biāo)識(shí)號(hào),將數(shù)據(jù)變更事件保存至源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列中;其中,每個(gè)源數(shù)據(jù)庫(kù)的每個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)一個(gè)事件隊(duì)列,每個(gè)事件隊(duì)列至少對(duì)應(yīng)一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào),每個(gè)事件隊(duì)列對(duì)應(yīng)一個(gè)事件隊(duì)列標(biāo)識(shí)號(hào);
[0153]目標(biāo)端服務(wù)器從源端中繼服務(wù)器獲取第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件,具體包括:
[0154]源端中繼服務(wù)器接收目標(biāo)端服務(wù)器發(fā)送的第一請(qǐng)求消息;其中,第一請(qǐng)求消息中攜帶目標(biāo)端服務(wù)器對(duì)應(yīng)連接的目標(biāo)數(shù)據(jù)庫(kù)需同步的至少一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列標(biāo)識(shí)號(hào)、源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的數(shù)據(jù)表已同步的日期最新的數(shù)據(jù)變更事件的第一全局標(biāo)識(shí)號(hào);其中,至少一個(gè)目標(biāo)數(shù)據(jù)庫(kù)儲(chǔ)存單個(gè)源數(shù)據(jù)庫(kù)儲(chǔ)存的全部數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表;目標(biāo)端服務(wù)器配置有與目標(biāo)端服務(wù)器連接的目標(biāo)數(shù)據(jù)庫(kù)的配置參數(shù);
[0155]源端中繼服務(wù)器根據(jù)第一請(qǐng)求消息,從事件隊(duì)列標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列中將第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件攜帶于第一響應(yīng)消息中,并將第一響應(yīng)消息發(fā)送給目標(biāo)端服務(wù)器,以使目標(biāo)端服務(wù)器對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行同步操作。
[0156]較佳的,源端中繼服務(wù)器實(shí)時(shí)捕獲源數(shù)據(jù)庫(kù)產(chǎn)生的數(shù)據(jù)變更事件,具體包括:
[0157]源端中繼服務(wù)器實(shí)時(shí)捕獲源數(shù)據(jù)庫(kù)產(chǎn)生的數(shù)據(jù)變更事件,對(duì)數(shù)據(jù)變更事件進(jìn)行預(yù)處理;其中,預(yù)處理為以下內(nèi)容中的任一項(xiàng)或兩項(xiàng):
[0158]根據(jù)數(shù)據(jù)變更事件的發(fā)生時(shí)間和全局標(biāo)識(shí)號(hào)刪除重復(fù)的數(shù)據(jù)變更事件、根據(jù)數(shù)據(jù)變更事件中的操作指令和操作內(nèi)容對(duì)數(shù)據(jù)變更事件進(jìn)行合并。
[0159]從上述內(nèi)容可看出,由于源端歷史服務(wù)器儲(chǔ)存的數(shù)據(jù)變更事件的最遠(yuǎn)日期遠(yuǎn)于所述源端中繼服務(wù)器儲(chǔ)存的數(shù)據(jù)變更事件的最遠(yuǎn)日期,因此當(dāng)?shù)谝蝗謽?biāo)識(shí)號(hào)對(duì)應(yīng)的數(shù)據(jù)變更事件的生成時(shí)間與當(dāng)前時(shí)間的時(shí)間差不小于第一中斷時(shí)長(zhǎng),從源端歷史服務(wù)器獲取所述第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件,否則,從源端中繼服務(wù)器獲取所述第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件??梢?jiàn),源端歷史服務(wù)器存儲(chǔ)空間較大,可存儲(chǔ)時(shí)間較長(zhǎng)的數(shù)據(jù)變更事件,而源端中繼服務(wù)器中僅存儲(chǔ)較新的數(shù)據(jù)變更事件,因此,目標(biāo)端服務(wù)器若發(fā)生較長(zhǎng)時(shí)間的中斷,源端中繼服務(wù)器中可能已經(jīng)沒(méi)有中斷點(diǎn)處的數(shù)據(jù)變更事件,則目標(biāo)端服務(wù)器可從源端歷史服務(wù)器中獲取中斷點(diǎn)處的數(shù)據(jù)變更事件,進(jìn)一步,由于源端歷史服務(wù)器和源端中繼服務(wù)器的功能分離,發(fā)生中斷的目標(biāo)端服務(wù)器可從源端歷史服務(wù)器中獲取歷史數(shù)據(jù)變更事件,處于正常工作狀態(tài)的目標(biāo)端服務(wù)器可繼續(xù)從源端中繼服務(wù)器獲取數(shù)據(jù)變更事件,如此,源端中繼服務(wù)器中的負(fù)荷量不會(huì)因發(fā)生中斷的目標(biāo)端服務(wù)器恢復(fù)正常工作而加重,因此保證了未發(fā)生中斷的目標(biāo)端服務(wù)器執(zhí)行數(shù)據(jù)同步效率不變的同時(shí),提高發(fā)生中斷的目標(biāo)端服務(wù)器自動(dòng)恢復(fù)正常工作狀態(tài)的效率。
[0160]基于前述內(nèi)容,下面詳細(xì)介紹本發(fā)明實(shí)施例中目標(biāo)服務(wù)器從源端中繼服務(wù)器中獲取數(shù)據(jù)變更事件的過(guò)程。
[0161]源端中繼服務(wù)器實(shí)時(shí)捕獲源數(shù)據(jù)庫(kù)產(chǎn)生的數(shù)據(jù)變更事件;其中,每條數(shù)據(jù)變更事件至少包括該數(shù)據(jù)變更事件對(duì)應(yīng)的全局標(biāo)識(shí)號(hào)、該數(shù)據(jù)變更事件對(duì)應(yīng)的源數(shù)據(jù)庫(kù)中的源數(shù)據(jù)表標(biāo)識(shí)號(hào)。
[0162]具體來(lái)說(shuō),源端中繼服務(wù)器實(shí)時(shí)捕獲源數(shù)據(jù)庫(kù)產(chǎn)生的數(shù)據(jù)變更事件具體有以下兩種方式:
[0163]方式一:源端中繼服務(wù)器無(wú)需連接源數(shù)據(jù)庫(kù),實(shí)時(shí)獲取的源數(shù)據(jù)庫(kù)保存的歸檔日志文件,解析該歸檔日志文件,從而間接獲取源數(shù)據(jù)庫(kù)產(chǎn)生的數(shù)據(jù)變更事件。如老版本的DB2和Oracle數(shù)據(jù)庫(kù)。
[0164]方式二:源端中繼服務(wù)器直接連接源數(shù)據(jù)庫(kù),實(shí)時(shí)獲取源數(shù)據(jù)庫(kù)產(chǎn)生的數(shù)據(jù)變更事件。如新數(shù)據(jù)庫(kù)MySqlUl.2以上版本的Oracle數(shù)據(jù)庫(kù)。
[0165]源端中繼服務(wù)器根據(jù)數(shù)據(jù)變更事件的源數(shù)據(jù)表標(biāo)識(shí)號(hào),將數(shù)據(jù)變更事件保存至源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列中;其中,每個(gè)源數(shù)據(jù)庫(kù)的每個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)一個(gè)事件隊(duì)列,每個(gè)事件隊(duì)列至少對(duì)應(yīng)一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào),每個(gè)事件隊(duì)列對(duì)應(yīng)一個(gè)事件隊(duì)列標(biāo)識(shí)號(hào);
[0166]源端中繼服務(wù)器接收目標(biāo)端服務(wù)器發(fā)送的第一請(qǐng)求消息;其中,第一請(qǐng)求消息中攜帶目標(biāo)端服務(wù)器對(duì)應(yīng)連接的目標(biāo)數(shù)據(jù)庫(kù)需同步的至少一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列標(biāo)識(shí)號(hào)、源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的數(shù)據(jù)表已同步的日期最新的數(shù)據(jù)變更事件的第一全局標(biāo)識(shí)號(hào)。
[0167]其中,至少一個(gè)目標(biāo)數(shù)據(jù)庫(kù)儲(chǔ)存單個(gè)源數(shù)據(jù)庫(kù)儲(chǔ)存的全部數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表;目標(biāo)端服務(wù)器配置有與目標(biāo)端服務(wù)器連接的目標(biāo)數(shù)據(jù)庫(kù)的配置參數(shù)。較佳的,至少一個(gè)目標(biāo)數(shù)據(jù)庫(kù)中儲(chǔ)存有多個(gè)源數(shù)據(jù)庫(kù)中每個(gè)源數(shù)據(jù)庫(kù)中儲(chǔ)存的全部數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表。
[0168]源端中繼服務(wù)器根據(jù)第一請(qǐng)求消息,從事件隊(duì)列標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列中將第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件攜帶于第一響應(yīng)消息中,并將第一響應(yīng)消息發(fā)送給目標(biāo)端服務(wù)器,以使目標(biāo)端服務(wù)器對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行同步操作。
[0169]由于源端中繼服務(wù)器根據(jù)該數(shù)據(jù)變更事件的源數(shù)據(jù)表標(biāo)識(shí)號(hào),將數(shù)據(jù)變更事件保存至源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的事件隊(duì)列中,如此,當(dāng)目標(biāo)數(shù)據(jù)庫(kù)儲(chǔ)存的數(shù)據(jù)表僅為部分源數(shù)據(jù)庫(kù)儲(chǔ)存的數(shù)據(jù)表時(shí),即目標(biāo)數(shù)據(jù)庫(kù)僅需同步部分源數(shù)據(jù)庫(kù)中的數(shù)據(jù)表時(shí),源端中繼服務(wù)器則可快速?gòu)臄?shù)據(jù)表對(duì)應(yīng)的事件隊(duì)列中確定出第一全局標(biāo)識(shí)號(hào)之后的數(shù)據(jù)變更事件,并發(fā)送給目標(biāo)端服務(wù)器,以使目標(biāo)端服務(wù)器對(duì)目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行同步操作,可見(jiàn),由于源端中繼服務(wù)器對(duì)數(shù)據(jù)變更事件進(jìn)行了歸類,因此提高了源端中繼服務(wù)器篩選數(shù)據(jù)變更事件的效率,從而提高了目標(biāo)數(shù)據(jù)庫(kù)儲(chǔ)存的數(shù)據(jù)表僅為單個(gè)源數(shù)據(jù)庫(kù)儲(chǔ)存的所有數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表時(shí)的數(shù)據(jù)同步效率。
[0170]進(jìn)一步由于源端中繼服務(wù)器連接目標(biāo)端服務(wù)器,目標(biāo)端服務(wù)器連接目標(biāo)數(shù)據(jù)庫(kù),且目標(biāo)端服務(wù)器配置有目標(biāo)數(shù)據(jù)庫(kù)的配置參數(shù),因此,當(dāng)某個(gè)目標(biāo)數(shù)據(jù)庫(kù)發(fā)生變動(dòng),如新增一個(gè)目標(biāo)數(shù)據(jù)庫(kù)時(shí),僅需要修改該新增的目標(biāo)數(shù)據(jù)庫(kù)對(duì)應(yīng)連接的目標(biāo)端服務(wù)器中的配置參數(shù),并重啟該目標(biāo)端服務(wù)器即可,而不需要重啟源端中繼服務(wù)器,因此,其它未進(jìn)行參數(shù)配置修改的目標(biāo)端服務(wù)器不需重啟,進(jìn)而與該未進(jìn)行參數(shù)配置修改的目標(biāo)端服務(wù)器連接的目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步過(guò)程也不會(huì)中斷,從而實(shí)現(xiàn)多個(gè)目標(biāo)數(shù)據(jù)庫(kù)與源數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步,且當(dāng)某個(gè)目標(biāo)數(shù)據(jù)庫(kù)發(fā)生變化時(shí),其它目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步過(guò)程不受影響。
[0171]進(jìn)一步,每個(gè)數(shù)據(jù)庫(kù)中保存的數(shù)據(jù)表均有源數(shù)據(jù)表標(biāo)識(shí)號(hào),源數(shù)據(jù)庫(kù)中產(chǎn)生的某個(gè)數(shù)據(jù)表的數(shù)據(jù)變更記錄,即數(shù)據(jù)變更事件,均包括有該數(shù)據(jù)變更事件對(duì)應(yīng)的數(shù)據(jù)表的源數(shù)據(jù)表標(biāo)識(shí)號(hào)。源端中繼服務(wù)器中多個(gè)源數(shù)據(jù)庫(kù)中的同一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)可對(duì)應(yīng)一個(gè)事件隊(duì)列標(biāo)識(shí)號(hào),源端中繼服務(wù)器中每個(gè)源數(shù)據(jù)庫(kù)中的每個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)可對(duì)應(yīng)一個(gè)事件隊(duì)列標(biāo)識(shí)號(hào),多個(gè)源數(shù)據(jù)庫(kù)中的多個(gè)不同的源數(shù)據(jù)表標(biāo)識(shí)號(hào)也可對(duì)應(yīng)同一個(gè)事件隊(duì)列標(biāo)識(shí)號(hào),同一個(gè)事件隊(duì)列標(biāo)識(shí)號(hào)對(duì)應(yīng)的多個(gè)數(shù)據(jù)表標(biāo)識(shí)號(hào)可相關(guān),也可不相關(guān)。
[0172]較佳的,事件隊(duì)列標(biāo)識(shí)號(hào)對(duì)應(yīng)X個(gè)數(shù)據(jù)表,其中,X個(gè)數(shù)據(jù)表相互關(guān)聯(lián);X為大于I的正整數(shù)。
[0173]較佳的,事件隊(duì)列標(biāo)識(shí)號(hào)對(duì)應(yīng)X個(gè)數(shù)據(jù)表,其中,X個(gè)數(shù)據(jù)表相互關(guān)聯(lián);X為大于I的正整數(shù)。本發(fā)明實(shí)施例所提供的方法中,每個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)一個(gè)事件隊(duì)列標(biāo)識(shí)號(hào),較佳的,每個(gè)事件隊(duì)列標(biāo)識(shí)號(hào)可對(duì)應(yīng)多個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào),但該多個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)的數(shù)據(jù)表相互關(guān)聯(lián)。列舉以下兩個(gè)例子進(jìn)行介紹:
[0174]示例一,數(shù)據(jù)表“第三季度表”為基于數(shù)據(jù)表“八月份統(tǒng)計(jì)表”的變化得到的數(shù)據(jù)表,因此數(shù)據(jù)表“第三季度表”與數(shù)據(jù)表“八月份統(tǒng)計(jì)表”關(guān)聯(lián),在實(shí)際應(yīng)用中,若某個(gè)目標(biāo)數(shù)據(jù)庫(kù)儲(chǔ)存有數(shù)據(jù)表“八月份統(tǒng)計(jì)表”時(shí),通常也會(huì)儲(chǔ)存于數(shù)據(jù)表“八月份統(tǒng)計(jì)表”相關(guān)的數(shù)據(jù)表“第三季度表”,因此,目標(biāo)數(shù)據(jù)庫(kù)需同步有關(guān)聯(lián)關(guān)系的數(shù)據(jù)表“八月份統(tǒng)計(jì)表”和數(shù)據(jù)表“第三季度表”,而本發(fā)明實(shí)施例將數(shù)據(jù)表“八月份統(tǒng)計(jì)表”和數(shù)據(jù)表“第三季度表”對(duì)應(yīng)的數(shù)據(jù)變更事件均放置于同一個(gè)事件隊(duì)列中,即可迅速將該目標(biāo)數(shù)據(jù)庫(kù)需同步的數(shù)據(jù)表“八月份統(tǒng)計(jì)表”和數(shù)據(jù)表“第三季度表”的數(shù)據(jù)全部發(fā)送給與該目標(biāo)數(shù)據(jù)庫(kù)連接的目標(biāo)端服務(wù)器,以便于提高同步效率。
[0175]示例二:定義對(duì)數(shù)據(jù)表“操作表”中進(jìn)行插入修改時(shí),對(duì)數(shù)據(jù)表“操作表”中插入的字段必須為數(shù)據(jù)表“后臺(tái)服務(wù)表”中的相同內(nèi)容的字段。某些情況下,需對(duì)數(shù)據(jù)表“操作表”中插入一當(dāng)前數(shù)據(jù)表“后臺(tái)服務(wù)表”中不存在的字段時(shí),則需先對(duì)數(shù)據(jù)表“后臺(tái)服務(wù)表”插入該字段,之后再對(duì)數(shù)據(jù)表“操作表”插入該字段。此時(shí),數(shù)據(jù)表“后臺(tái)服務(wù)表”和數(shù)據(jù)表“操作表”相關(guān),實(shí)際應(yīng)用中,也應(yīng)將數(shù)據(jù)表“后臺(tái)服務(wù)表”和數(shù)據(jù)表“操作表”放入一個(gè)事件隊(duì)列中,以便于目標(biāo)數(shù)據(jù)庫(kù)同步記錄時(shí)保持先對(duì)數(shù)據(jù)表“后臺(tái)服務(wù)表”進(jìn)行操作再對(duì)數(shù)據(jù)表“操作表”進(jìn)行操作的順序。若將數(shù)據(jù)表“后臺(tái)服務(wù)表”和數(shù)據(jù)表“操作表”的數(shù)據(jù)變更事件分別放在兩個(gè)事件隊(duì)列中,則目標(biāo)數(shù)據(jù)庫(kù)可能需要先從一個(gè)事件隊(duì)列中獲取數(shù)據(jù)表“操作表”的數(shù)據(jù)變更事件進(jìn)行數(shù)據(jù)同步,后續(xù)從另一個(gè)事件隊(duì)列中獲取數(shù)據(jù)表“后臺(tái)服務(wù)表”的數(shù)據(jù)變更事件進(jìn)行數(shù)據(jù)同步,可見(jiàn)此時(shí)目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)會(huì)發(fā)生紊亂。因此,在這種情況下,應(yīng)務(wù)必將具有關(guān)聯(lián)關(guān)系的數(shù)據(jù)表的數(shù)據(jù)變更事件放置在一個(gè)事件隊(duì)列中。
[0176]較佳的,源端中繼服務(wù)器至少連接兩個(gè)源數(shù)據(jù)庫(kù),一個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)所對(duì)應(yīng)的數(shù)據(jù)表分別儲(chǔ)存在至少兩個(gè)源數(shù)據(jù)庫(kù)中;不同源數(shù)據(jù)庫(kù)對(duì)應(yīng)的相同源數(shù)據(jù)表標(biāo)識(shí)號(hào)的數(shù)據(jù)變更事件對(duì)應(yīng)一個(gè)事件隊(duì)列。
[0177]舉個(gè)例子,假設(shè)一個(gè)源數(shù)據(jù)庫(kù)中儲(chǔ)存“訂單表”中商戶一的信息,另一個(gè)源數(shù)據(jù)庫(kù)中儲(chǔ)存“訂單表”中商戶二的信息,此時(shí),由于該兩個(gè)源數(shù)據(jù)庫(kù)中儲(chǔ)存的均為“訂單表”,因此,可在源端中繼服務(wù)器中,將來(lái)源于兩個(gè)源數(shù)據(jù)庫(kù)中的,但源數(shù)據(jù)表標(biāo)識(shí)號(hào)均為“訂單表”的數(shù)據(jù)變更事件保存在一個(gè)事件隊(duì)列中。設(shè)置某個(gè)目標(biāo)端服務(wù)器需要同步該“訂單表”的所有數(shù)據(jù)內(nèi)容,即可通過(guò)本發(fā)明實(shí)施例所提供的方法,將所有源數(shù)據(jù)庫(kù)中儲(chǔ)存的所有商戶的“訂單表”信息,從一個(gè)事件隊(duì)列中確定出,并發(fā)送給對(duì)應(yīng)的目標(biāo)端服務(wù)器??梢?jiàn),當(dāng)將多個(gè)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)表整合至一個(gè)目標(biāo)數(shù)據(jù)庫(kù)時(shí),本發(fā)明實(shí)施例所提供的方法效率較高。
[0178]源端中繼服務(wù)器根據(jù)數(shù)據(jù)變更事件的源數(shù)據(jù)表標(biāo)識(shí)號(hào),將數(shù)據(jù)變更事件按源數(shù)據(jù)表標(biāo)識(shí)號(hào)進(jìn)行歸類。較佳的,源端中繼服務(wù)器可預(yù)先為每個(gè)源數(shù)據(jù)表標(biāo)識(shí)號(hào)對(duì)應(yīng)設(shè)置一個(gè)事件隊(duì)列,設(shè)置完成后,源端中繼服務(wù)器可將