數(shù)據(jù)同步方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及計算機(jī)數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)同步方法和系統(tǒng)。
【背景技術(shù)】
[0002]目前,互聯(lián)網(wǎng)系統(tǒng)數(shù)據(jù)一般存儲在關(guān)系型數(shù)據(jù)庫當(dāng)中,如Mysql、Oracle和Sqiserver等。但在數(shù)據(jù)的應(yīng)用上是有多種形式的,如報表系統(tǒng)中,需要對多張表進(jìn)行關(guān)聯(lián)查詢,這種查詢對數(shù)據(jù)庫的壓力很大,有時會使數(shù)據(jù)庫的服務(wù)器性能驟降,影響正常的業(yè)務(wù)系統(tǒng)功能,故一般都是將各個關(guān)聯(lián)表的數(shù)據(jù)查詢出來放入到檢索服務(wù)系統(tǒng)中,報表查詢都是查詢檢索服務(wù)系統(tǒng)。還有一些實時數(shù)據(jù)分析系統(tǒng),需要實時的數(shù)據(jù),進(jìn)行數(shù)據(jù)計算后產(chǎn)出計算結(jié)果供業(yè)務(wù)人員使用。所以,數(shù)據(jù)從業(yè)務(wù)系統(tǒng)中的關(guān)系型數(shù)據(jù)庫中怎樣查詢出來,怎樣做到最小的延遲并且對業(yè)務(wù)數(shù)據(jù)庫做到最小的影響,成為系統(tǒng)設(shè)計人員的重要任務(wù)。
[0003]圖1為現(xiàn)有技術(shù)中通常采用的一種數(shù)據(jù)獲取方式的示意圖。參見圖1,在現(xiàn)有技術(shù)中,一般的方案是采用定時查詢的方式實現(xiàn),即采用定時系統(tǒng),設(shè)定每次執(zhí)行的時間間隔,查詢業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫表,并將查詢到的業(yè)務(wù)數(shù)據(jù)同步給需要數(shù)據(jù)的系統(tǒng),如檢索系統(tǒng)、報表系統(tǒng)、時時計算系統(tǒng)等。
[0004]但是,現(xiàn)有技術(shù)存在以下缺點(diǎn):
[0005]首先,定時查詢業(yè)務(wù)數(shù)據(jù)庫的表,一般查詢結(jié)構(gòu)化查詢語言(SQL)都較為復(fù)雜,會造成數(shù)據(jù)庫服務(wù)器的服務(wù)壓力,影響業(yè)務(wù)系統(tǒng)的正常生產(chǎn);其次,定時查詢畢竟有時間間隔,數(shù)據(jù)的傳輸會有延遲,對于有些數(shù)據(jù)實時性要求較高的業(yè)務(wù),這種方式很難滿足;
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明的主要目的是提供一種數(shù)據(jù)同步方法和系統(tǒng),以降低數(shù)據(jù)庫的處理壓力,提高數(shù)據(jù)的時效性。
[0007]本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0008]一種數(shù)據(jù)同步方法,包括:
[0009]增設(shè)轉(zhuǎn)發(fā)系統(tǒng),該轉(zhuǎn)發(fā)系統(tǒng)監(jiān)聽源數(shù)據(jù)庫的增量數(shù)據(jù)操作日志;
[0010]源數(shù)據(jù)庫將增量數(shù)據(jù)操作日志發(fā)送給轉(zhuǎn)發(fā)系統(tǒng),轉(zhuǎn)發(fā)系統(tǒng)將所述增量數(shù)據(jù)操作日志轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)對象;
[0011 ] 轉(zhuǎn)發(fā)系統(tǒng)將所述數(shù)據(jù)對象轉(zhuǎn)發(fā)給目標(biāo)系統(tǒng)。
[0012]優(yōu)選的,所述轉(zhuǎn)發(fā)系統(tǒng)監(jiān)聽源數(shù)據(jù)庫的增量數(shù)據(jù)操作日志,具體包括:
[0013]轉(zhuǎn)發(fā)系統(tǒng)通過地址和端口監(jiān)聽源數(shù)據(jù)庫;
[0014]轉(zhuǎn)發(fā)系統(tǒng)獲取本地數(shù)據(jù)操作日志的起始標(biāo)記,將所述起始標(biāo)記發(fā)送給源數(shù)據(jù)庫;
[0015]源數(shù)據(jù)庫實時判斷本地數(shù)據(jù)操作日志的最新標(biāo)記,若最新標(biāo)記高于轉(zhuǎn)發(fā)系統(tǒng)發(fā)來的所述起始標(biāo)記,則所述起始標(biāo)記和最新標(biāo)記之間的數(shù)據(jù)操作日志作為增量數(shù)據(jù)操作日
V 1、1、O
[0016]優(yōu)選的,該方法在轉(zhuǎn)發(fā)系統(tǒng)將所述數(shù)據(jù)對象轉(zhuǎn)發(fā)給目標(biāo)系統(tǒng)之后,進(jìn)一步包括:轉(zhuǎn)發(fā)系統(tǒng)按照接收到的數(shù)據(jù)操作日志的最新標(biāo)記更新本地的本地數(shù)據(jù)操作日志的起始標(biāo)記,之后將更新后的起始標(biāo)記發(fā)送給源數(shù)據(jù)庫。
[0017]優(yōu)選的,所述轉(zhuǎn)發(fā)系統(tǒng)將所述增量數(shù)據(jù)操作日志轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)對象,具體包括:轉(zhuǎn)發(fā)系統(tǒng)解析所述增量數(shù)據(jù)操作日志中的操作指令、操作對象和具體數(shù)據(jù),轉(zhuǎn)換為目標(biāo)系統(tǒng)可識別的數(shù)據(jù)格式的數(shù)據(jù)對象。
[0018]優(yōu)選的,所述轉(zhuǎn)發(fā)系統(tǒng)將所述數(shù)據(jù)對象轉(zhuǎn)發(fā)給目標(biāo)系統(tǒng),具體包括:
[0019]對于實時性要求低于指定要求的目標(biāo)系統(tǒng),轉(zhuǎn)發(fā)系統(tǒng)判斷目標(biāo)系統(tǒng)是否可達(dá),如果可達(dá)則將所述數(shù)據(jù)對象發(fā)送給目標(biāo)系統(tǒng),如果不可達(dá)則將所述數(shù)據(jù)對象存儲在本地磁盤中,待目標(biāo)系統(tǒng)可達(dá)后將所述數(shù)據(jù)對象發(fā)送給目標(biāo)系統(tǒng);
[0020]對于實時性要求高于指定要求的目標(biāo)系統(tǒng),轉(zhuǎn)發(fā)系統(tǒng)判斷目標(biāo)系統(tǒng)是否可達(dá),如果可達(dá)則將所述數(shù)據(jù)對象發(fā)送給目標(biāo)系統(tǒng),如果不可達(dá)則將所述數(shù)據(jù)對象駐留在本地內(nèi)存,待目標(biāo)系統(tǒng)可達(dá)后將所述數(shù)據(jù)對象發(fā)送給目標(biāo)系統(tǒng)。
[0021]優(yōu)選的,一個轉(zhuǎn)發(fā)系統(tǒng)對應(yīng)一個目標(biāo)系統(tǒng),或者一個轉(zhuǎn)發(fā)系統(tǒng)對應(yīng)兩個或兩個以上目標(biāo)系統(tǒng);
[0022]對于一個轉(zhuǎn)發(fā)系統(tǒng)對應(yīng)一個目標(biāo)系統(tǒng)的場景,所述轉(zhuǎn)發(fā)系統(tǒng)在將所述增量數(shù)據(jù)操作日志轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)對象后,進(jìn)一步判斷目標(biāo)系統(tǒng)是否可達(dá),如果可達(dá)則將所述數(shù)據(jù)對象發(fā)送給目標(biāo)系統(tǒng),如果不可達(dá)則將所述數(shù)據(jù)對象駐留在本地內(nèi)存,待目標(biāo)系統(tǒng)可達(dá)后將所述數(shù)據(jù)對象發(fā)送給目標(biāo)系統(tǒng);
[0023]對于一個轉(zhuǎn)發(fā)系統(tǒng)對應(yīng)兩個或兩個以上目標(biāo)系統(tǒng)的場景,所述轉(zhuǎn)發(fā)系統(tǒng)在將所述增量數(shù)據(jù)操作日志轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)對象后,進(jìn)一步判斷目標(biāo)系統(tǒng)是否可達(dá),如果可達(dá)則將所述數(shù)據(jù)對象發(fā)送給目標(biāo)系統(tǒng),如果不可達(dá)則將所述數(shù)據(jù)對象存儲在本地磁盤中,待目標(biāo)系統(tǒng)可達(dá)后將所述數(shù)據(jù)對象發(fā)送給目標(biāo)系統(tǒng)。
[0024]—種數(shù)據(jù)同步系統(tǒng),包括:
[0025]轉(zhuǎn)發(fā)系統(tǒng),用于監(jiān)聽源數(shù)據(jù)庫的增量數(shù)據(jù)操作日志,接收源數(shù)據(jù)發(fā)送的增量數(shù)據(jù)操作日志,將所述增量數(shù)據(jù)操作日志轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)對象,將所述數(shù)據(jù)對象轉(zhuǎn)發(fā)給目標(biāo)系統(tǒng);
[0026]源數(shù)據(jù)庫,用于將增量數(shù)據(jù)操作日志發(fā)送給轉(zhuǎn)發(fā)系統(tǒng)。
[0027]優(yōu)選的,所述轉(zhuǎn)發(fā)系統(tǒng)具體包括:用于通過地址和端口監(jiān)聽源數(shù)據(jù)庫;獲取本地數(shù)據(jù)操作日志的起始標(biāo)記,將所述起始標(biāo)記發(fā)送給源數(shù)據(jù)庫的模塊;
[0028]所述源數(shù)據(jù)庫具體包括:用于實時判斷本地數(shù)據(jù)操作日志的最新標(biāo)記,若最新標(biāo)記高于轉(zhuǎn)發(fā)系統(tǒng)發(fā)來的所述起始標(biāo)記,則所述起始標(biāo)記和最新標(biāo)記之間的數(shù)據(jù)操作日志作為增量數(shù)據(jù)操作日志,將所述增量數(shù)據(jù)操作日志發(fā)送給轉(zhuǎn)發(fā)系統(tǒng)的模塊。
[0029]優(yōu)選的,所述轉(zhuǎn)發(fā)系統(tǒng)進(jìn)一步包括:用于在將所述數(shù)據(jù)對象轉(zhuǎn)發(fā)給目標(biāo)系統(tǒng)之后,進(jìn)一步按照接收到的數(shù)據(jù)操作日志的最新標(biāo)記更新本地的本地數(shù)據(jù)操作日志的起始標(biāo)記,之后將更新后的起始標(biāo)記發(fā)送給源數(shù)據(jù)庫的模塊。
[0030]優(yōu)選的,所述轉(zhuǎn)發(fā)系統(tǒng)具體包括:用于解析所述增量數(shù)據(jù)操作日志中的操作指令、操作對象和具體數(shù)據(jù),轉(zhuǎn)換為目標(biāo)系統(tǒng)可識別的數(shù)據(jù)格式的數(shù)據(jù)對象的模塊。
[0031]與現(xiàn)有技術(shù)相比,本發(fā)明采用監(jiān)聽的方式,對目標(biāo)數(shù)據(jù)的源數(shù)據(jù)庫進(jìn)行監(jiān)聽,當(dāng)源數(shù)據(jù)庫中有增量數(shù)據(jù)操作時,如增刪改等操作,源數(shù)據(jù)庫會將增量數(shù)據(jù)操作日志發(fā)送給監(jiān)聽系統(tǒng)即轉(zhuǎn)發(fā)系統(tǒng),之后轉(zhuǎn)發(fā)系統(tǒng)會將接收到的增量數(shù)據(jù)操作日志發(fā)送給需要數(shù)據(jù)的一個或多個目標(biāo)系統(tǒng)。這樣,就避免了現(xiàn)有技術(shù)方案中任務(wù)系統(tǒng)定時查詢源數(shù)據(jù)庫造成的數(shù)據(jù)庫壓力,降低了對數(shù)據(jù)庫的處理壓力;同時,又避免了定時查詢的時間間隔,從而又提高了數(shù)據(jù)的時效性。
【附圖說明】
[0032]圖1為現(xiàn)有技術(shù)中通常采用的一種數(shù)據(jù)獲取方式的示意圖;
[0033]圖2為本發(fā)明所述數(shù)據(jù)同步方法的一種流程圖;
[0034]圖3為本發(fā)明所述數(shù)據(jù)同步方法的一種實例圖;
[0035]圖4為本發(fā)明所述轉(zhuǎn)發(fā)系統(tǒng)進(jìn)行監(jiān)聽的流程示意圖;
[0036]圖5為本發(fā)明所述轉(zhuǎn)發(fā)系統(tǒng)進(jìn)行數(shù)據(jù)轉(zhuǎn)換和轉(zhuǎn)發(fā)的流程示意圖;
[0037]圖6是本發(fā)明所應(yīng)用場景的一種轉(zhuǎn)發(fā)系統(tǒng)與目標(biāo)系統(tǒng)之間的關(guān)系示意圖。
【具體實施方式】
[0038]下面結(jié)合附圖及具體實施例對本發(fā)明再作進(jìn)一步詳細(xì)的說明。
[0039]圖2為本發(fā)明所述數(shù)據(jù)同步方法的一種流程圖;圖3為本發(fā)明所述數(shù)據(jù)同步方法的一種實例圖。參見圖2和圖3,本發(fā)明所述的數(shù)據(jù)同步方法包括:
[0040]201、增設(shè)轉(zhuǎn)發(fā)系統(tǒng),該轉(zhuǎn)發(fā)系統(tǒng)監(jiān)聽源數(shù)據(jù)庫的增量數(shù)據(jù)操作日志。
[0041]202、源數(shù)據(jù)庫將增量數(shù)據(jù)操作日志發(fā)送給轉(zhuǎn)發(fā)系統(tǒng),轉(zhuǎn)發(fā)系統(tǒng)將所述增量數(shù)據(jù)操作日志轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)對象。所述源數(shù)據(jù)庫就是目標(biāo)數(shù)據(jù)所在的數(shù)據(jù)庫,如Mysql、ORACLE數(shù)據(jù)庫等。
[0042]203、轉(zhuǎn)發(fā)系統(tǒng)將所述數(shù)據(jù)對象轉(zhuǎn)發(fā)給目標(biāo)系統(tǒng)。
[0043]其中,所述轉(zhuǎn)發(fā)系統(tǒng)監(jiān)聽源數(shù)據(jù)庫的增量數(shù)據(jù)操作日志,具體包括:
[0044]轉(zhuǎn)發(fā)系統(tǒng)通過地址和端口監(jiān)聽源數(shù)據(jù)庫;
[0045]轉(zhuǎn)發(fā)系統(tǒng)獲取本地數(shù)據(jù)操作日志的起始標(biāo)記,將所述起始標(biāo)