一種數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫(kù)同步技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法、裝置及 系統(tǒng)。
【背景技術(shù)】
[0002] 自從1970年E. F. Codd博±提出最初的理論模型W來(lái),關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)成為所 有信息系統(tǒng)中必不可少的基礎(chǔ)設(shè)施之一,其重要性僅次于操作系統(tǒng),如今已經(jīng)沒(méi)有哪個(gè)大 型的系統(tǒng)能夠脫離數(shù)據(jù)庫(kù)而存在。
[0003] 在實(shí)際應(yīng)用中,由于業(yè)務(wù)邏輯的復(fù)雜性和功能的模塊化設(shè)計(jì),往往一個(gè)信息系統(tǒng) 中會(huì)部署有多套數(shù)據(jù)庫(kù),而且送多套庫(kù)之間需要協(xié)同合作共享數(shù)據(jù),送就要求各數(shù)據(jù)庫(kù)之 間能夠?qū)崿F(xiàn)數(shù)據(jù)同步。
[0004] 傳統(tǒng)的數(shù)據(jù)庫(kù)同步方式一般是基于全量的同步,即主備服務(wù)器上的數(shù)據(jù)完全相 同。然而在W下幾種場(chǎng)景中,普通的全量同步無(wú)法滿足要求。
[0005] 場(chǎng)景一;在異構(gòu)數(shù)據(jù)庫(kù)同步的場(chǎng)景中,會(huì)出現(xiàn)目的庫(kù)的存儲(chǔ)容量與源庫(kù)不匹配的 情況。當(dāng)數(shù)據(jù)量很大時(shí),依然要求目的節(jié)點(diǎn)必須是與源庫(kù)容量相當(dāng)?shù)拇鎯?chǔ)設(shè)備。而多數(shù)情 況下目的庫(kù)只是作為數(shù)據(jù)備份使用,送樣的要求勢(shì)必會(huì)增加設(shè)備成本,而且異構(gòu)數(shù)據(jù)庫(kù)的 優(yōu)越性也無(wú)法得到很好體現(xiàn)。
[0006] 場(chǎng)景二:在一對(duì)多復(fù)制的場(chǎng)景中,源庫(kù)作為數(shù)據(jù)源,保存有全量的數(shù)據(jù),而每個(gè)目 的庫(kù)作為一個(gè)獨(dú)立的單元被訪問(wèn),只需要保存部分相關(guān)的數(shù)據(jù)即可。使用傳統(tǒng)的全量復(fù)制, 會(huì)造成傳輸?shù)呢S嗪涂臻g的浪費(fèi)。
[0007] 場(chǎng)景Η ;在復(fù)制場(chǎng)景中,在某個(gè)時(shí)間段可能會(huì)出現(xiàn)大量的語(yǔ)句不需要同步的情況, 比如對(duì)某個(gè)字段大量的update操作。傳統(tǒng)的全量復(fù)制,默認(rèn)同步所有語(yǔ)句,會(huì)造成資源的 浪費(fèi)。
[0008] W上幾種場(chǎng)景,反映了傳統(tǒng)的全量復(fù)制方式存在一定的局限性,數(shù)據(jù)庫(kù)系統(tǒng)不能 根據(jù)不同的數(shù)據(jù)同步需求進(jìn)行有選擇的數(shù)據(jù)復(fù)制同步,不能區(qū)分哪些數(shù)據(jù)是需要同步的, 將全量數(shù)據(jù)進(jìn)行同步造成了傳輸?shù)呢S郬及資源的浪費(fèi)問(wèn)題。
【發(fā)明內(nèi)容】
[0009] 為了解決傳統(tǒng)全量復(fù)制模式造成的傳輸兀余、資源浪費(fèi)問(wèn)題,本發(fā)明提供了一種 數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法、裝置及系統(tǒng),W至少解決上述問(wèn)題。
[0010] 根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法,包括;獲取源數(shù)據(jù)庫(kù) 的邏輯變化記錄LCR (Logical化ange Record,簡(jiǎn)稱為L(zhǎng)CR);獲取目的數(shù)據(jù)庫(kù)信息;根據(jù)所 述LCR和所述目的數(shù)據(jù)庫(kù)信息更新對(duì)應(yīng)的所述目的數(shù)據(jù)庫(kù)。
[0011] 優(yōu)選地,所述獲取目的數(shù)據(jù)庫(kù)信息,包括W下至少一種;獲取全部目的數(shù)據(jù)庫(kù)信 息;獲取指定的目的數(shù)據(jù)庫(kù)信息;根據(jù)所述LCR獲取對(duì)應(yīng)的目的數(shù)據(jù)庫(kù)信息。
[0012] 優(yōu)選地,所述根據(jù)所述LCR獲取對(duì)應(yīng)的目的數(shù)據(jù)庫(kù)信息,包括W下至少一種;根據(jù) 所述LCR中的字段名稱、字段取值和目的庫(kù)對(duì)應(yīng)關(guān)系獲取對(duì)應(yīng)的目的數(shù)據(jù)庫(kù)信息;根據(jù)所 述LCR中的字段名稱、語(yǔ)句類型獲取對(duì)應(yīng)的目的數(shù)據(jù)庫(kù)信息。
[0013] 優(yōu)選地,所述根據(jù)所述LCR和所述目的數(shù)據(jù)庫(kù)信息更新對(duì)應(yīng)的所述目的數(shù)據(jù)庫(kù), 包括;將所述LCR轉(zhuǎn)化為與所述目的數(shù)據(jù)庫(kù)相應(yīng)的S化語(yǔ)句;根據(jù)所述S化語(yǔ)句更新對(duì)應(yīng)的 所述目的數(shù)據(jù)庫(kù)。
[0014] 優(yōu)選地,所述獲取源數(shù)據(jù)庫(kù)的邏輯變化記錄LCR,還包括;將所述邏輯變化記錄 LCR的格式轉(zhuǎn)換為所述數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部標(biāo)準(zhǔn)的LCR格式。
[0015] 根據(jù)本發(fā)明的另一個(gè)方面,提供了一種數(shù)據(jù)庫(kù)的數(shù)據(jù)同步裝置,包括:采集模塊, 用于獲取源數(shù)據(jù)庫(kù)的邏輯變化記錄LCR ;選擇模塊,用于獲取目的數(shù)據(jù)庫(kù)信息;更新模塊, 用于根據(jù)所述LCR和所述目的數(shù)據(jù)庫(kù)信息更新對(duì)應(yīng)的所述目的數(shù)據(jù)庫(kù)。
[0016] 優(yōu)選地,所述選擇模塊還包括W下至少一種;全量單元,用于獲取全部目的數(shù)據(jù)庫(kù) 信息;指定單元,用于獲取指定的目的數(shù)據(jù)庫(kù)信息;過(guò)濾單元,用于根據(jù)所述LCR獲取對(duì)應(yīng) 的目的數(shù)據(jù)庫(kù)信息。
[0017] 優(yōu)選地,所述過(guò)濾單元還包括W下至少一種;字段值子單元,用于根據(jù)所述LCR中 的字段名稱、字段取值和目的庫(kù)對(duì)應(yīng)關(guān)系獲取對(duì)應(yīng)的目的數(shù)據(jù)庫(kù)信息。類型子單元,用于根 據(jù)所述LCR中的字段名稱、語(yǔ)句類型獲取對(duì)應(yīng)的目的數(shù)據(jù)庫(kù)信息。
[0018] 優(yōu)選地,所述更新模塊,包括;語(yǔ)句轉(zhuǎn)化單元,用于將所述LCR轉(zhuǎn)化為與所述目的 數(shù)據(jù)庫(kù)相應(yīng)的S化語(yǔ)句;執(zhí)行單元,用于根據(jù)所述S化語(yǔ)句對(duì)相應(yīng)的所述目的數(shù)據(jù)庫(kù)進(jìn)行更 新。
[0019] 優(yōu)選地,所述采集模塊,包括;格式轉(zhuǎn)換單元,用于將所述邏輯
[0020] 變化記錄LCR的格式轉(zhuǎn)換為所述數(shù)據(jù)庫(kù)內(nèi)部標(biāo)準(zhǔn)的LCR格式。
[0021] 根據(jù)本發(fā)明再一個(gè)方面,提供了一種數(shù)據(jù)庫(kù)的數(shù)據(jù)同步系統(tǒng),包括:
[0022] 源數(shù)據(jù)庫(kù),用于生成邏輯變化記錄LCR ;
[0023] 數(shù)據(jù)同步裝置,包括:采集模塊,用于獲取源數(shù)據(jù)庫(kù)的邏輯變化記錄LCR ;選擇模 塊,用于獲取目的數(shù)據(jù)庫(kù)信息;更新模塊,用于根據(jù)所述LCR和所述目的數(shù)據(jù)庫(kù)信息更新對(duì) 應(yīng)的所述目的數(shù)據(jù)庫(kù);
[0024] 目的數(shù)據(jù)庫(kù),用于執(zhí)行所述更新操作;
[0025] 其中,所述采集模塊與所述源數(shù)據(jù)庫(kù)相連;所述更新模塊與所述目的數(shù)據(jù)庫(kù)相連。
[0026] 優(yōu)選地,所述更新模塊為至少兩個(gè),每一個(gè)所述更新模塊與對(duì)應(yīng)的至少一個(gè)目的 數(shù)據(jù)庫(kù)相連。
[0027] 優(yōu)選地,所述獲取源數(shù)據(jù)庫(kù)的邏輯變化記錄LCR,包括主動(dòng)獲取方式和被動(dòng)獲取方 式。
[0028] 通過(guò)本發(fā)明,獲取源數(shù)據(jù)庫(kù)的邏輯變化記錄LCR,獲取目的數(shù)據(jù)庫(kù)信息,根據(jù)所述 LCR和所述目的數(shù)據(jù)庫(kù)信息更新對(duì)應(yīng)的所述目的數(shù)據(jù)庫(kù)。使得在對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)同步時(shí), 可W根據(jù)不同的數(shù)據(jù)同步需要進(jìn)行有選擇的數(shù)據(jù)復(fù)制并同步,避免了大量復(fù)制同步不必要 的數(shù)據(jù),節(jié)省了數(shù)據(jù)庫(kù)系統(tǒng)的傳輸空間和資源。
【附圖說(shuō)明】
[0029] 此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā) 明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0030] 圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法流程圖一;
[0031] 圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法流程圖二;
[0032] 圖3是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)的數(shù)據(jù)同步裝置結(jié)構(gòu)框圖一;
[0033] 圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)的數(shù)據(jù)同步裝置結(jié)構(gòu)框圖二;
[0034] 圖5是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)的數(shù)據(jù)同步系統(tǒng)結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0035] 下文中將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。需要說(shuō)明的是,在不沖突的 情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可W相互組合。
[0036] 本發(fā)明實(shí)施例提供了一種數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法,圖1是根據(jù)本發(fā)明實(shí)施例的數(shù) 據(jù)庫(kù)的數(shù)據(jù)同步方法流程圖一,如圖1所示,該方法包括W下步驟:
[0037] S202,獲取源數(shù)據(jù)庫(kù)的邏輯變化記錄LCR ;
[0038] S204,獲取目的數(shù)據(jù)庫(kù)信息;
[0039] S206,根據(jù)上述獲取的目的數(shù)據(jù)庫(kù)信息,定位到需要更新的目的數(shù)據(jù)庫(kù),將上述獲 取的邏輯變化記錄LCR更新到上述目的數(shù)據(jù)庫(kù)。
[0040] 其中,上述LCR為L(zhǎng)ogical化ange Record的簡(jiǎn)稱,在本實(shí)施方式中即為源數(shù)據(jù)庫(kù) 的邏輯變化記錄,是用來(lái)記錄DML/孤L變化內(nèi)容的消息格式,記錄操作類型、變化前后的數(shù) 據(jù)等內(nèi)容。上述獲取目的數(shù)據(jù)信息,包括數(shù)據(jù)庫(kù)的服務(wù)器別名、執(zhí)行語(yǔ)句所用的用戶名和密 碼。
[0041] 通過(guò)本發(fā)明實(shí)施例,獲取源數(shù)據(jù)庫(kù)的邏輯變化記錄LCR,獲取目的數(shù)據(jù)庫(kù)信息,根 據(jù)上述獲取的目的數(shù)據(jù)庫(kù)信息,定位到需要更新的目的數(shù)據(jù)庫(kù),將上述獲取的邏輯變化記 錄LCR更新到上述目的數(shù)據(jù)庫(kù)。使得在對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)同步時(shí),可W根據(jù)不同的數(shù)據(jù)同 步需要進(jìn)行有選擇的數(shù)據(jù)復(fù)制并同步,避免了大量復(fù)制同步不必要的數(shù)據(jù),節(jié)省了數(shù)據(jù)庫(kù) 系統(tǒng)的傳輸空間和資源。
[0042] 在本發(fā)明的一個(gè)實(shí)施方式中,上述獲取目的數(shù)據(jù)庫(kù)信息,包括:獲取全部目的數(shù)據(jù) 庫(kù)信息。圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法流程圖二,其中,源數(shù)據(jù)庫(kù)提供 解析好的源庫(kù)自有格式的LCR,本實(shí)施方式中會(huì)主動(dòng)獲取送樣的LCR,并進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn) 換為同步系統(tǒng)內(nèi)部標(biāo)準(zhǔn)LCR消息格式。如圖2所示,本發(fā)明實(shí)施方式即為圖2中所示的全 量復(fù)制模式,該方法包括:
[0043] S302,獲取源數(shù)據(jù)庫(kù)的邏輯變化記錄LCR,并將格式轉(zhuǎn)換為所述數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部標(biāo) 準(zhǔn)的LCR格式;
[0044] S304,獲取全部目的數(shù)據(jù)庫(kù)信息;
[0045] S306,根據(jù)上述獲取的全部目的數(shù)據(jù)庫(kù)信息,定位到所有的目的數(shù)據(jù)庫(kù);
[0046] S308,讀取數(shù)據(jù)庫(kù)類型,將上述獲取的邏輯變化記錄LCR拼成與數(shù)據(jù)庫(kù)類型相應(yīng) 的S化語(yǔ)句;
[0047] S310,在所有的目的數(shù)據(jù)庫(kù)上執(zhí)行上述S化語(yǔ)句,對(duì)所有的目的數(shù)據(jù)庫(kù)進(jìn)行更新。 [004引在本發(fā)明的一個(gè)實(shí)施方式中,上述獲取目的數(shù)據(jù)庫(kù)信息,包括:獲取指定的目的數(shù) 據(jù)庫(kù)信息。如圖2所示,本發(fā)明實(shí)施方式即為圖2中所示的指定復(fù)制模式,該方法包括:
[0049] S402,獲取