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