異構數據庫的同步方法和應用系統的制作方法
【技術領域】
[0001] 本發明涉及數據庫技術,尤其涉及一種異構數據庫的同步方法和應用系統。
【背景技術】
[0002] 隨著計算機技術和網絡技術的不斷發展,數據庫也由集中式向分布式演變。
[0003] 在分布式環境下,數據庫同步技術作為維護各個數據庫節點之間數據一致性的 方法,成為保證系統性能和提高系統可靠性的關鍵技術。在現有技術中,針對同構數據庫 來說,源數據庫可以檢測其存儲的數據是否發生變化,例如是否有數據更新,是否有數據刪 除,或者是否有數據增加。一旦發生變化,則源數據庫可以將發生變化部分同步到目標數據 庫中。
[0004] 但是,在現有分布式環境下,還存在異構數據庫之間需要進行數據同步的需求。因 此,如何實現異構數據庫之間的數據同步,成為亟待解決的問題。
【發明內容】
[0005] 本發明提供一種異構數據庫的同步方法和應用系統,以實現異構數據庫之間的數 據同步。
[0006] 本發明提供一種異構數據庫的同步方法,包括:
[0007] 同步處理器在確定源數據庫的源數據表中發生數據變化時,將所述源數據表中發 生變化的數據的標識信息存儲在同步變化表中,所述標識信息至少包括所述源數據表的表 名、變化數據在所述源數據表中的主鍵值、變化類型值、變化時間;
[0008] 同步處理器在輪詢周期到達時,根據所述同步變化表中的變化時間從所述同步變 化表中獲取當前時間之前的標識信息,并根據獲取的標識信息中的表名、主鍵值和變化類 型值生成變化數據;
[0009] 傳輸器采用預設的封裝格式將所述變化數據封裝為數據流,并發送給同步解析 器;
[0010] 所述同步解析器接收所述同步處理器通過所述傳輸器發送的數據流,采用所述預 設的封裝格式對所述數據流解封裝得到所述變化數據,根據預設的映射文件將所述變化數 據映射為目標數據庫中的目標數據表的數據結構,并根據所述變化數據中的變化類型值進 行目標數據庫中目標數據表的數據同步。
[0011] 相應的,本發明提供一種應用系統,包括:
[0012] 依次連接的源數據庫、同步處理器、傳輸器、同步解析器以及目標數據庫;
[0013] 所述同步處理器,用于在確定源數據庫的源數據表中發生數據變化時,將所述源 數據表中發生變化的數據的標識信息存儲在同步變化表中,所述標識信息至少包括所述源 數據表的表名、變化數據在所述源數據表中的主鍵值、變化類型值、變化時間;在輪詢周期 到達時,根據所述同步變化表中的變化時間從所述同步變化表中獲取當前時間之前的標識 信息,并根據獲取的標識信息中的表名、主鍵值和變化類型值生成變化數據;
[0014] 所述傳輸器,用于采用預設的封裝格式將所述變化數據封裝為數據流,并發送給 同步解析器;
[0015] 所述同步解析器,用于接收所述同步處理器通過所述傳輸器發送的數據流,采用 所述預設的封裝格式對所述數據流解封裝得到所述變化數據,根據預設的映射文件將所述 變化數據映射為目標數據庫中的目標數據表的數據結構,并根據所述變化數據中的變化類 型值進行目標數據庫中目標數據表的數據同步。
[0016] 本發明異構數據庫的同步方法和應用系統,無需對異構的源數據庫和目標數據庫 進行任何改變,而只需要在源數據庫和目標數據庫之間部署同步處理器、傳輸器以及同步 解析器。部署在源數據庫側的同步處理器可以周期性地輪詢同步變化表中記錄的變化數 據,且該變化數據中包含有異構的目標數據庫在進行數據同步時所需的表名、主鍵值和變 化類型值,然后,同步處理器可以將變化數據封裝成數據流發送給部署在目標數據庫側的 同步解析器。同步解析器可以預存一映射文件,該映射文件可以描述源數據表和目標數據 表之間數據結構差異的對應關系,因此,該同步解析器在對該數據流進行解封裝之后,可以 根據預設的映射文件將源數據表中的變化數據映射為目標數據庫中的目標數據表的數據 結構,并根據變化數據中的變化類型值進行目標數據表的數據同步,進而可以完成異構數 據庫之間的數據同步。本發明無需對現有異構數據庫進行改變,只需要在同步解析器上部 署不同的映射文件即可實現異構數據庫之間的數據同步,實現簡單,且易于擴展。
【附圖說明】
[0017] 圖1為本發明異構數據庫的同步方法實施例一的流程圖;
[0018] 圖2為本發明異構數據庫的同步方法實施例二的流程圖;
[0019] 圖3為本發明應用系統實施例的結構示意圖。
【具體實施方式】
[0020] 圖1為本發明異構數據庫的同步方法實施例一的流程圖,如圖1所示,本實施例的 方法,可以包括:
[0021] 步驟101、同步處理器在確定源數據庫的源數據表中發生數據變化時,將所述源數 據表中發生變化的數據的標識信息存儲在同步變化表中,所述標識信息至少包括所述源數 據表的表名、變化數據在所述源數據表中的主鍵值、變化類型值、變化時間;
[0022] 步驟102、同步處理器在輪詢周期到達時,根據所述同步變化表中的變化時間從所 述同步變化表中獲取當前時間之前的標識信息,并根據獲取的標識信息中的表名、主鍵值 和變化類型值生成變化數據;
[0023] 步驟103、傳輸器采用預設的封裝格式將所述變化數據封裝為數據流,并發送給同 步解析器;
[0024] 步驟104、同步解析器接收所述同步處理器通過所述傳輸器發送的數據流,采用所 述預設的封裝格式對所述數據流解封裝得到所述變化數據,根據預設的映射文件將所述變 化數據映射為目標數據庫中的目標數據表的數據結構,并根據所述變化數據中的變化類型 值進行目標數據庫中目標數據表的數據同步。
[0025] 具體來說,本實施例在源數據庫和目標數據庫之間部署了同步處理器、傳輸器以 及同步解析器,其中,同步處理器部署在源數據庫一側,同步解析器部署在目標數據庫一 偵牝傳輸器則用于傳輸同步處理器和同步解析器之間的數據。
[0026]同步處理器可以實時或者定時檢測源數據庫的源數據表中是否發生數據變化,所 述的數據變化,例如可以是數據刪除、數據更新、數據增加等。本實施例并不限定具體的檢 測方法。
[0027] 舉例來說,本實施例可以采用數據變化觸發器,來捕獲源數據表中發生變化的數 據,該數據變化觸發器可以包括插入觸發器、刪除觸發器和更新觸發器。
[0028] 可以理解的,根據不同的需要,本領域技術人員還可以只部署其中的不同的觸發 器,或者擴展出其它類型的觸發器以捕獲其它類型的數據變化。
[0029] 該同步處理器既可以單獨部署,也可以與源數據庫一同部署。
[0030] 當同步處理器確定源數據表中發生數據變化時,則可以將源數據表中發生變化的 數據的標識信息存儲在同步變化表中。本實施例中,該同步變化表用于存儲源數據表中發 生變化的數據的標識信息。該標識信息至少可以包括源數據表的表名、變化數據在源數據 表中的主鍵值、變化類型值、變化時間。該標識信息可以用于后續的異構數據庫的同步。
[0031]同步處理器可以以一定的輪詢周期來定期地查看該同步變化表,該輪詢周期例如 可以采用一個定時器來實現。即,源數據庫在輪詢周期到達時,可以根據同步變化表中的變 化時間從同步變化表中獲取當前時間之前的標識信息,該當前時間即為系統時間。
[0032]同步處理器在獲取到變化時間在當前時間之前的標識信息之后,同步處理器即可 根據獲取的標識信息中的表名、主鍵值和變化類型值生成變化數據。
[0033] 可選的,在輪詢周期內,對于具有相同主鍵值的數據,可能發生多次數據變化,例 如先增加、再更新,或者先增加再刪除。
[0034]因此,為了更加準確地定位到該輪詢周期內最終的數據變化狀態,以便將數據的 準確狀態更新到目標數據庫中,在同步處理器根據獲取的標識信息中的表名、主鍵值和變 化類型值生成變化數據之前,可以按照變化時間的先后順序,對當前時間之前的具有相同 的主鍵值的標識信息進行排序;保留具有相同的主鍵值的標識彳目息中變化時間最晚的標識 信息,并刪除該具有相同的主鍵值的標