亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

數(shù)據(jù)同步方法、裝置及系統(tǒng)的制作方法

文檔序號:8258563閱讀:446來源:國知局
數(shù)據(jù)同步方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種關(guān)系數(shù)據(jù)庫與緩存數(shù)據(jù)同步方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]關(guān)系數(shù)據(jù)庫(以下簡稱數(shù)據(jù)庫)是建立在關(guān)系數(shù)據(jù)庫模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。一個數(shù)據(jù)庫通常包含預先定義的一組表,每個表代表一類數(shù)據(jù)。數(shù)據(jù)庫的優(yōu)點是功能強大,接口豐富,缺點是隨著數(shù)據(jù)量的增加和用戶數(shù)的增多,會導致數(shù)據(jù)庫的性能變得很低,從而使得數(shù)據(jù)庫成為整個應用系統(tǒng)的瓶頸。
[0003]為解決上述問題,一般使用高速緩存(以下簡稱緩存)保存數(shù)據(jù)庫中的結(jié)果。緩存是指基于key-value的分布式存儲方案,其優(yōu)點是查詢速度快、存放數(shù)據(jù)量大、支持高并發(fā)。應用系統(tǒng)通過訪問緩存,減輕直接訪問數(shù)據(jù)庫而對數(shù)據(jù)庫造成的讀寫壓力和計算壓力,改善數(shù)據(jù)訪問性能,提高應用系統(tǒng)的處理能力。
[0004]在具體應用中,緩存中的數(shù)據(jù)需要與數(shù)據(jù)庫中的數(shù)據(jù)保持一致,也即數(shù)據(jù)庫中的數(shù)據(jù)更新時,更新的數(shù)據(jù)需要同步到緩存中。在具體實現(xiàn)中,數(shù)據(jù)庫與緩存之間的數(shù)據(jù)同步主要有以下幾點關(guān)鍵要素:
[0005]實時性要求:數(shù)據(jù)庫數(shù)據(jù)更新后,需要盡量保證用戶最短時間內(nèi)在緩存中看到最新數(shù)據(jù);
[0006]一致性要求:保證數(shù)據(jù)庫與緩存之間的數(shù)據(jù)一致,數(shù)據(jù)同步處理應當盡量避免同步數(shù)據(jù)的丟失;
[0007]同步處理計算量:數(shù)據(jù)庫與緩存同步時,對數(shù)據(jù)庫帶來的計算壓力應當盡量小。
[0008]通常,在數(shù)據(jù)庫中使用數(shù)據(jù)庫日志記錄數(shù)據(jù)的更新操作。數(shù)據(jù)庫中的數(shù)據(jù)更新后,會新增包含更新數(shù)據(jù)信息的日志數(shù)據(jù)。外部系統(tǒng)可以按照一定的數(shù)據(jù)庫外部接口規(guī)范,進行數(shù)據(jù)庫日志數(shù)據(jù)的拉取操作。
[0009]目前,數(shù)據(jù)庫與緩存之間的數(shù)據(jù)同步通常采用以下幾種方案:
[0010]1、基于外部同步程序的數(shù)據(jù)同步。通過外部同步程序周期性檢查數(shù)據(jù)庫內(nèi)的數(shù)據(jù)更新,如果檢測到數(shù)據(jù)更新,外部同步程序把相應的更新數(shù)據(jù)同步更新到緩存中。
[0011]但是,現(xiàn)有的這種數(shù)據(jù)同步方案存在以下缺點:
[0012]如果檢查周期太短,會存在大量的數(shù)據(jù)庫讀取操作,對數(shù)據(jù)庫帶來大量附加壓力;如果檢查周期太長,數(shù)據(jù)庫數(shù)據(jù)更新后,會經(jīng)過比較長的時間才能同步到緩存,更新數(shù)據(jù)無法被用戶實時看到,影響同步的實時性;如果數(shù)據(jù)庫包含大量數(shù)據(jù),完成一次數(shù)據(jù)庫數(shù)據(jù)檢查對外部同步程序帶來的計算開銷也是不可接受的。
[0013]2、在進行數(shù)據(jù)查詢時完成數(shù)據(jù)同步。在查詢數(shù)據(jù)時,首先查詢緩存,如果緩存中不存在目標數(shù)據(jù),則查詢數(shù)據(jù)庫,并將數(shù)據(jù)庫中得到的查詢數(shù)據(jù)同步到緩存,同時設置緩存中數(shù)據(jù)的過期時間;如果緩存中存在目標數(shù)據(jù),則檢查數(shù)據(jù)的過期時間,如果發(fā)現(xiàn)緩存中該數(shù)據(jù)已經(jīng)過期,則查詢數(shù)據(jù)庫,并將數(shù)據(jù)庫中得到的查詢數(shù)據(jù)重新同步到緩存,同時重新設置緩存中數(shù)據(jù)的過期時間。
[0014]現(xiàn)有的這種實現(xiàn)方式存在以下缺陷:
[0015]緩存服務重新啟動后,緩存中不存在任何數(shù)據(jù),因此會發(fā)生大量數(shù)據(jù)需要從數(shù)據(jù)庫重新同步的情況,這樣會產(chǎn)生在短時間內(nèi)對數(shù)據(jù)庫帶來大量壓力和影響性能問題;此外,采用數(shù)據(jù)查詢時完成數(shù)據(jù)同步,增加了數(shù)據(jù)查詢操作的復雜度和出錯概率;而且在緩存數(shù)據(jù)的過期時間內(nèi),如果數(shù)據(jù)庫數(shù)據(jù)發(fā)生更新,則無法實時同步到緩存,用戶無法看到最新數(shù)據(jù)。
[0016]3、基于觸發(fā)器的同步,當數(shù)據(jù)庫的數(shù)據(jù)更新時,更新數(shù)據(jù)通過觸發(fā)器主動同步到緩存中。這種方案的缺陷在于:數(shù)據(jù)庫觸發(fā)器會對數(shù)據(jù)庫帶來額外的性能開銷,經(jīng)測試,包含觸發(fā)器時MYSQL數(shù)據(jù)庫數(shù)據(jù)更新性能僅為不包含觸發(fā)器時數(shù)據(jù)更新性能的50%左右;此夕卜,數(shù)據(jù)更新通過數(shù)據(jù)庫觸發(fā)器主動推送到外部同步系統(tǒng),外部同步系統(tǒng)只能被動接受同步數(shù)據(jù),并無法感知觸發(fā)器推送失效,導致數(shù)據(jù)不一致的錯誤概率增加;而且觸發(fā)器到外部同步系統(tǒng)的更新數(shù)據(jù)的發(fā)送不能保證時序,因此更新數(shù)據(jù)寫入緩存的時序可能會與數(shù)據(jù)庫中更新的時序不同,從而導致數(shù)據(jù)更新亂序。

【發(fā)明內(nèi)容】

[0017]本發(fā)明實施例提供一種數(shù)據(jù)同步方法、裝置及系統(tǒng),旨在保證數(shù)據(jù)庫與緩存之間數(shù)據(jù)同步的一致性和實時性,減輕數(shù)據(jù)庫與緩存之間數(shù)據(jù)同步時對數(shù)據(jù)庫的壓力。
[0018]本發(fā)明實施例提出一種數(shù)據(jù)同步方法,包括:
[0019]異步拉取數(shù)據(jù)庫更新數(shù)據(jù)時生成的包含更新數(shù)據(jù)信息的日志數(shù)據(jù);
[0020]將所述日志數(shù)據(jù)按照數(shù)據(jù)庫中的表名進行分類,添加相應的日志數(shù)據(jù)到預先創(chuàng)建的對應的日志隊列中;
[0021]并行解析所述日志隊列中的日志數(shù)據(jù),得到數(shù)據(jù)庫對應的更新數(shù)據(jù);
[0022]根據(jù)得到的所述對應的更新數(shù)據(jù)對緩存中的數(shù)據(jù)進行并行同步更新。
[0023]本發(fā)明實施例還提出一種數(shù)據(jù)同步裝置,包括:
[0024]拉取模塊,用于異步拉取數(shù)據(jù)庫更新數(shù)據(jù)時生成的包含更新數(shù)據(jù)信息的日志數(shù)據(jù);
[0025]分類添加模塊,用于將所述日志數(shù)據(jù)按照數(shù)據(jù)庫中的表名進行分類,添加相應的日志數(shù)據(jù)到預先創(chuàng)建的對應的日志隊列中;
[0026]解析模塊,用于并行解析所述日志隊列中的日志數(shù)據(jù),得到數(shù)據(jù)庫對應的更新數(shù)據(jù);
[0027]同步更新模塊,用于根據(jù)得到的所述對應的更新數(shù)據(jù)對緩存中的數(shù)據(jù)進行并行同步更新。
[0028]本發(fā)明實施例還提出一種數(shù)據(jù)同步應用系統(tǒng),包括:數(shù)據(jù)庫服務器和與所述數(shù)據(jù)庫服務器通信連接的緩存服務器;其中:
[0029]所述數(shù)據(jù)庫服務器,用于當數(shù)據(jù)庫的數(shù)據(jù)發(fā)生更新時,生成包含更新數(shù)據(jù)信息的日志數(shù)據(jù);
[0030]所述緩存服務器,用于異步拉取數(shù)據(jù)庫更新數(shù)據(jù)時數(shù)據(jù)庫服務器生成的包含更新數(shù)據(jù)信息的日志數(shù)據(jù);將所述日志數(shù)據(jù)按照數(shù)據(jù)庫中的表名進行分類,添加相應的日志數(shù)據(jù)到預先創(chuàng)建的對應的日志隊列中;并行解析所述日志隊列中的日志數(shù)據(jù),得到數(shù)據(jù)庫對應的更新數(shù)據(jù);根據(jù)得到的所述對應的更新數(shù)據(jù)對緩存中的數(shù)據(jù)進行并行同步更新。
[0031]本發(fā)明實施例提出的一種數(shù)據(jù)同步方法、裝置及系統(tǒng),采用異步基于日志的數(shù)據(jù)庫與緩存并行化數(shù)據(jù)同步方式,當數(shù)據(jù)庫發(fā)生數(shù)據(jù)更新時,更新的數(shù)據(jù)基于日志并行同步到緩存內(nèi),滿足了數(shù)據(jù)庫與緩存之間數(shù)據(jù)同步的一致性和實時性要求,很好的解決數(shù)據(jù)庫數(shù)據(jù)更新時數(shù)據(jù)庫與緩存之間同步的延遲問題,并減輕了數(shù)據(jù)庫與緩存之間數(shù)據(jù)同步時對數(shù)據(jù)庫的壓力。
【附圖說明】
[0032]圖1是本發(fā)明數(shù)據(jù)同步方法第一實施例的流程示意圖;
[0033]圖2是本發(fā)明數(shù)據(jù)同步方法第二實施例的流程示意圖;
[0034]圖3是本發(fā)明實施例中數(shù)據(jù)庫與緩存數(shù)據(jù)同步的系統(tǒng)架構(gòu)示意圖;
[0035]圖4是本發(fā)明數(shù)據(jù)同步裝置第一實施例的功能模塊示意圖;
[0036]圖5是本發(fā)明數(shù)據(jù)同步裝置第二實施例的功能模塊示意圖;
[0037]圖6是本發(fā)明數(shù)據(jù)同步系統(tǒng)較佳實施例的系統(tǒng)結(jié)構(gòu)示意圖。
[0038]為了使本發(fā)明的技術(shù)方案更加清楚、明了,下面將結(jié)合附圖作進一步詳述。
【具體實施方式】
[0039]如圖1所示,本發(fā)明第一實施例提出一種數(shù)據(jù)同步方法,包括:
[0040]步驟S101,異步拉取數(shù)據(jù)庫更新數(shù)據(jù)時生成的包含更新數(shù)據(jù)信息的日志數(shù)據(jù);
[0041]其中數(shù)據(jù)庫是建立在關(guān)系數(shù)據(jù)庫模型基礎(chǔ)上的數(shù)據(jù)庫,即關(guān)系數(shù)據(jù)庫。目前主流的數(shù)據(jù)庫有甲骨文公司的oracle和mysql、國際商業(yè)機器公司的db2、微軟公司的sqlserver、賽貝斯公司的sybase等。一個數(shù)據(jù)庫通常包含預先定義的一組表,每個表代表一類數(shù)據(jù),每個表具有對應的表名。
[0042]如前所述,在數(shù)據(jù)庫應用系統(tǒng)中,隨著數(shù)據(jù)量的增加和用戶數(shù)的增多,會導致數(shù)據(jù)庫的性能變得很低,由此會使用緩存保存數(shù)據(jù)庫中的結(jié)果,應用系統(tǒng)通過訪問緩存,減輕直接訪問數(shù)據(jù)庫而對數(shù)據(jù)庫造成的讀寫壓力和計算壓力,改善數(shù)據(jù)訪問性能,提高應用系統(tǒng)的處理能力。
[0043]在實現(xiàn)數(shù)據(jù)庫與緩存數(shù)據(jù)同步時,本實施例采用異步基于日志的數(shù)據(jù)庫與緩存并行化數(shù)據(jù)同步方
當前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1