專利名稱:數(shù)據(jù)同步系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)通信技術(shù),尤其涉及一種集成環(huán)境下應(yīng)用系統(tǒng)之間的數(shù)據(jù)同步系統(tǒng)和方法。
背景技術(shù):
隨著信息化在政府、機(jī)關(guān)、企業(yè)、高校等單位的不斷深化,信息系統(tǒng)的集成逐漸成為一個關(guān)鍵點(diǎn)。數(shù)據(jù)的集成是軟件系統(tǒng)集成的基礎(chǔ),數(shù)據(jù)共享是數(shù)據(jù)集成的主要手段,而數(shù)據(jù)同步是數(shù)據(jù)在不同業(yè)務(wù)系統(tǒng)之間進(jìn)行共享的常用技術(shù)手段之一。一個進(jìn)行數(shù)據(jù)同步的數(shù)據(jù)同步系統(tǒng)包括數(shù)據(jù)維護(hù)服務(wù)器和數(shù)據(jù)使用客戶端。其中,數(shù)據(jù)維護(hù)服務(wù)器用以提供數(shù)據(jù)源;而需要這些數(shù)據(jù)的業(yè)務(wù)系統(tǒng)稱為數(shù)據(jù)使用客戶端。數(shù)據(jù)使用客戶端從數(shù)據(jù)維護(hù)服務(wù)器獲取這些數(shù)據(jù),并結(jié)合到自身業(yè)務(wù)中。通常,一個數(shù)據(jù)維護(hù)服務(wù)器需要為多個數(shù)據(jù)使用客戶端提供數(shù)據(jù)源(如圖1所示)。在現(xiàn)有技術(shù)中,對于數(shù)據(jù)的同步機(jī)制通常采用由數(shù)據(jù)維護(hù)服務(wù)器負(fù)責(zé)向數(shù)據(jù)使用客戶端同步數(shù)據(jù)的機(jī)制數(shù)據(jù)維護(hù)服務(wù)器存儲有數(shù)據(jù)源,并維護(hù)數(shù)據(jù)的變更、修改,當(dāng)數(shù)據(jù)變化時,數(shù)據(jù)維護(hù)服務(wù)器記錄數(shù)據(jù)變更情況;針對數(shù)據(jù)同步系統(tǒng)中的每個數(shù)據(jù)使用客戶端,數(shù)據(jù)維護(hù)服務(wù)器需保留上次數(shù)據(jù)同步操作時該數(shù)據(jù)使用客戶端所需要的數(shù)據(jù),并與當(dāng)前數(shù)據(jù)維護(hù)服務(wù)器變更后的數(shù)據(jù)進(jìn)行比較,過濾出該數(shù)據(jù)使用客戶端需要的變更后的數(shù)據(jù)。對于數(shù)據(jù)維護(hù)服務(wù)器還設(shè)置了一個同步周期,在每個同步周期內(nèi)數(shù)據(jù)維護(hù)服務(wù)器需要向所有的數(shù)據(jù)使用客戶端同步數(shù)據(jù),即將過濾出的數(shù)據(jù)使用客戶端需要的變更后的數(shù)據(jù)分別發(fā)送到各數(shù)據(jù)使用客戶端?,F(xiàn)有技術(shù)的數(shù)據(jù)同步方法雖然可以實(shí)現(xiàn)對多個數(shù)據(jù)使用客戶端的數(shù)據(jù)同步,但存在以下問題由于數(shù)據(jù)維護(hù)服務(wù)器需要針對數(shù)據(jù)同步系統(tǒng)中的每個數(shù)據(jù)使用客戶端,保留該數(shù)據(jù)使用客戶端上次數(shù)據(jù)同步操作時所需要的數(shù)據(jù),并過濾出該數(shù)據(jù)使用客戶端需要的數(shù)據(jù)。那么,當(dāng)數(shù)據(jù)同步系統(tǒng)擴(kuò)大,系統(tǒng)中數(shù)據(jù)使用客戶端增多時,需要修改數(shù)據(jù)維護(hù)服務(wù)器的進(jìn)行數(shù)據(jù)同步程序的代碼,使之可以向新增數(shù)據(jù)使用客戶端發(fā)送數(shù)據(jù)。而且,隨著數(shù)據(jù)同步系統(tǒng)擴(kuò)大,系統(tǒng)中數(shù)據(jù)使用客戶端增多,數(shù)據(jù)維護(hù)服務(wù)器的壓力將大大增加,需要更多的空間和處理資源。此外,由于數(shù)據(jù)的同步周期由數(shù)據(jù)維護(hù)服務(wù)器確定,所有的數(shù)據(jù)使用客戶端都被動接受這一周期。在同步周期內(nèi),數(shù)據(jù)維護(hù)服務(wù)器需要向所有的數(shù)據(jù)使用客戶端同步數(shù)據(jù)。 在這種集中同步的過程中,由于數(shù)據(jù)維護(hù)服務(wù)器與各數(shù)據(jù)使用客戶端交互頻繁、處理的情況不盡相同,容易出錯,從而容易導(dǎo)致系統(tǒng)出錯的概率大幅提高,降低系統(tǒng)可靠性低。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種數(shù)據(jù)同步系統(tǒng)及方法,用以達(dá)到當(dāng)系統(tǒng)擴(kuò)容時,簡化數(shù)據(jù)維護(hù)服務(wù)器的維護(hù)工作的目的。一種數(shù)據(jù)同步方法,包括數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送記錄號,所述記錄號為所述數(shù)據(jù)維護(hù)服務(wù)器之前發(fā)送給所述數(shù)據(jù)使用客戶端的變更記錄的記錄號;所述數(shù)據(jù)維護(hù)服務(wù)器根據(jù)接收的記錄號,以及變更記錄表中的變更記錄的記錄號,從所述變更記錄表中確定出新增的變更記錄后發(fā)送給所述數(shù)據(jù)使用客戶端,其中,變更記錄表中的每個變更記錄為數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,增加到所述變更記錄表中的該數(shù)據(jù)的變更情況, 且變更記錄的記錄號大小由數(shù)據(jù)的變更時間先后決定,所述數(shù)據(jù)表存于所述數(shù)據(jù)維護(hù)服務(wù)器;所述數(shù)據(jù)使用客戶端根據(jù)接收的變更記錄更新本地?cái)?shù)據(jù)。所述變更情況具體包括該數(shù)據(jù)所在數(shù)據(jù)表的標(biāo)識,該數(shù)據(jù)的標(biāo)識,該數(shù)據(jù)的變更類型,該數(shù)據(jù)的變更值。或者,所述變更情況具體包括該數(shù)據(jù)所在數(shù)據(jù)表的標(biāo)識,該數(shù)據(jù)的標(biāo)識,該數(shù)據(jù)的變更類型;以及所述數(shù)據(jù)維護(hù)服務(wù)器從所述變更記錄表中確定出新增的變更記錄后,還包括根據(jù)確定出的變更記錄查詢數(shù)據(jù)表,獲取相應(yīng)的變更數(shù)據(jù)的變更值,并將所述變更值也發(fā)送給所述數(shù)據(jù)使用客戶端。在數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送記錄號時,還包括所述數(shù)據(jù)使用客戶端還向所述數(shù)據(jù)維護(hù)服務(wù)器發(fā)送數(shù)據(jù)表標(biāo)識;以及所述數(shù)據(jù)維護(hù)服務(wù)器還根據(jù)接收的數(shù)據(jù)表標(biāo)識確定出新增的變更記錄。所述變更記錄表中的變更記錄的記錄號大小由數(shù)據(jù)的變更時間先后決定,具體為數(shù)據(jù)的變更時間越靠后,則該數(shù)據(jù)對應(yīng)的變更記錄的記錄號越大。在所述數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,以及在增加該數(shù)據(jù)的變更情況到所述變更記錄表中之前還包括所述數(shù)據(jù)維護(hù)服務(wù)器判斷該數(shù)據(jù)的變更類型;若所述變更類型為“刪除”,則將所述變更記錄表中該數(shù)據(jù)的變更記錄全部刪除。在所述數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,以及在增加該數(shù)據(jù)的變更情況到所述變更記錄表中之前還包括所述數(shù)據(jù)維護(hù)服務(wù)器判斷該數(shù)據(jù)的變更類型;若所述變更類型為“增加”,則將所述變更記錄表中該數(shù)據(jù)的變更記錄全部刪除。在所述數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,以及在增加該數(shù)據(jù)的變更情況到所述變更記錄表中之前還包括所述數(shù)據(jù)維護(hù)服務(wù)器判斷該數(shù)據(jù)的變更類型;若所述變更類型為“修改”,則將所述變更記錄表中該數(shù)據(jù)的變更類型為“修改”的變更記錄全部刪除。一種數(shù)據(jù)同步系統(tǒng),包括數(shù)據(jù)使用客戶端和數(shù)據(jù)維護(hù)服務(wù)器;所述數(shù)據(jù)使用客戶端,向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送記錄號,所述記錄號為所述數(shù)據(jù)維護(hù)服務(wù)器之前發(fā)送給所述數(shù)據(jù)使用客戶端的變更記錄的記錄號;所述數(shù)據(jù)維護(hù)服務(wù)器根據(jù)接收的記錄號,以及變更記錄表中的變更記錄的記錄號,從所述變更記錄表中確定出新增的變更記錄后發(fā)送給所述數(shù)據(jù)使用客戶端,其中,變更記錄表中的每個變更記錄為數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,增加到所述變更記錄表中的該數(shù)據(jù)的變更情況,且變更記錄的記錄號大小由數(shù)據(jù)的變更時間先后決定,所述數(shù)據(jù)表存于所述數(shù)據(jù)維護(hù)服務(wù)器;所述數(shù)據(jù)使用客戶端根據(jù)接收的變更記錄更新本地?cái)?shù)據(jù)。本發(fā)明實(shí)施例的數(shù)據(jù)維護(hù)服務(wù)器由于只需要維護(hù)變更記錄表,而該變更記錄表的存在獨(dú)立于各數(shù)據(jù)使用客戶端,也就是說,變更記錄表中的內(nèi)容與數(shù)據(jù)使用客戶端無關(guān),數(shù)據(jù)使用客戶端共享該變更記錄表,根據(jù)該變更記錄表進(jìn)行數(shù)據(jù)同步。所以,當(dāng)系統(tǒng)增加新的數(shù)據(jù)使用客戶端時,數(shù)據(jù)維護(hù)服務(wù)器不用對變更記錄表進(jìn)行改動,也不用進(jìn)行其它改造、修改代碼等工作。因此,當(dāng)系統(tǒng)擴(kuò)容時,簡化了數(shù)據(jù)維護(hù)服務(wù)器的工作。而且,數(shù)據(jù)維護(hù)服務(wù)器只需要維護(hù)變更記錄表,所需空間、處理資源少。因此,降低了數(shù)據(jù)維護(hù)服務(wù)器的壓力和工作量,節(jié)約了數(shù)據(jù)維護(hù)服務(wù)器的資源。此外,由于本發(fā)明實(shí)施例的數(shù)據(jù)同步系統(tǒng)中,是由數(shù)據(jù)使用客戶端主動同步數(shù)據(jù), 而系統(tǒng)中各數(shù)據(jù)使用客戶端的同步周期不相同,從而避免了眾多數(shù)據(jù)使用客戶端集中同步的情況,避免了數(shù)據(jù)維護(hù)服務(wù)器與各數(shù)據(jù)使用客戶端交互頻繁、容易出錯的情況,增強(qiáng)了系統(tǒng)的可靠性。進(jìn)一步,本發(fā)明實(shí)施例中的數(shù)據(jù)維護(hù)服務(wù)器在向變更記錄表中增加新的變更記錄之前,通過判斷該新的變更記錄的變更類型,相應(yīng)地刪除一些沒必要的變更記錄,從而減少了變更記錄表所占用的空間資源,節(jié)約了系統(tǒng)資源。
圖1為現(xiàn)有技術(shù)的數(shù)據(jù)同步系統(tǒng)示意圖;圖加為本發(fā)明實(shí)施例的數(shù)據(jù)同步系統(tǒng)示意圖;圖2b為本發(fā)明實(shí)施例一的數(shù)據(jù)表示意圖;圖2c為本發(fā)明實(shí)施例一的變更記錄表示意圖;圖3為本發(fā)明實(shí)施例一的數(shù)據(jù)同步方式流程圖;圖如為本發(fā)明實(shí)施例二的變更記錄表示意圖;圖4b為本發(fā)明實(shí)施例二的數(shù)據(jù)同步方式流程圖。
具體實(shí)施例方式基于以上考慮,本發(fā)明實(shí)施例提供一種以數(shù)據(jù)使用客戶端主動從數(shù)據(jù)維護(hù)服務(wù)器獲取數(shù)據(jù)的同步機(jī)制。如圖%所示數(shù)據(jù)同步系統(tǒng)中,各數(shù)據(jù)使用客戶端根據(jù)自身情況自行設(shè)定一個同步周期,在設(shè)定的周期到達(dá)時,數(shù)據(jù)使用客戶端主動到數(shù)據(jù)維護(hù)服務(wù)器獲取數(shù)據(jù)。數(shù)據(jù)使用客戶端的同步周期可以相同,也可以不同。在數(shù)據(jù)維護(hù)服務(wù)器維護(hù)一個獨(dú)立于各數(shù)據(jù)使用客戶端的變更記錄表,數(shù)據(jù)使用客戶端共享該變更記錄表,根據(jù)該變更記錄表進(jìn)行數(shù)據(jù)同步。從而使得當(dāng)系統(tǒng)增加新的數(shù)據(jù)使用客戶端時,數(shù)據(jù)維護(hù)服務(wù)器不用進(jìn)行改造、修改代碼等工作,不需進(jìn)行改動。因此,當(dāng)系統(tǒng)擴(kuò)容時,簡化了數(shù)據(jù)維護(hù)服務(wù)器的工作。本發(fā)明提供了兩個具體實(shí)施例詳細(xì)介紹本發(fā)明的技術(shù)方案。實(shí)施例一下面以圖加所示的數(shù)據(jù)同步系統(tǒng)中數(shù)據(jù)使用客戶端A到數(shù)據(jù)維護(hù)服務(wù)器主動進(jìn)行數(shù)據(jù)同步為例,講述本發(fā)明實(shí)施例的技術(shù)方案在數(shù)據(jù)維護(hù)服務(wù)器中數(shù)據(jù)源具體保存在數(shù)據(jù)庫的數(shù)據(jù)表中,數(shù)據(jù)表可以是一個, 也可以是多個(圖2b示出了一個具體的數(shù)據(jù)表DATA_S)。數(shù)據(jù)維護(hù)服務(wù)器還建立、維護(hù)了一個變更記錄表本發(fā)明實(shí)施例提供的一種變更記錄表(如圖2c所示),其中的變更記錄, 記錄了數(shù)據(jù)表中數(shù)據(jù)的變更情況當(dāng)某個數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更時(變更類型可以是修改、刪除、或者增加),則變更記錄表中記錄一個該數(shù)據(jù)的變更情況,具體地可以包括該數(shù)據(jù)所在數(shù)據(jù)表的標(biāo)識,該數(shù)據(jù)的標(biāo)識(用以唯一標(biāo)識出該數(shù)據(jù)在數(shù)據(jù)表中的位置,例如, 對于單維數(shù)據(jù)表可以是數(shù)據(jù)序號ID,對于雙維數(shù)據(jù)表既可以是單個數(shù)值的序號,也可以是 ID+字段名的組合,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際情況確定),該數(shù)據(jù)的變更類型,該數(shù)據(jù)的變更值——增加或修改的情況下有變更值。變更記錄表中的變更記錄的記錄序號(簡稱記錄號)大小由數(shù)據(jù)的變更時間先后決定,即變更記錄的記錄號大小依各變更記錄的數(shù)據(jù)變更時間的先后來決定。例如,若某個數(shù)據(jù)表中的某個數(shù)據(jù)變更時間越靠后,其該數(shù)據(jù)的變更記錄的記錄號就越大;或者,若某個數(shù)據(jù)表中的某個數(shù)據(jù)變更時間越靠后,其該數(shù)據(jù)的變更記錄的記錄號就越小。在實(shí)際中應(yīng)用中,比如,某個數(shù)據(jù)進(jìn)行變更時,添加的變更記錄的記錄號可以是該數(shù)據(jù)變更時的時間值;或者是,變更記錄表中每新增一個變更記錄,該變更記錄的記錄號為變更記錄表中最后一個變更記錄的記錄號加1。顯然,本領(lǐng)域有多種技術(shù)手段來實(shí)現(xiàn)變更記錄表中的變更記錄的記錄序號順序依各變更記錄的數(shù)據(jù)變更時間的先后順序來決定。下面以“數(shù)據(jù)的變更時間越晚,變更記錄表中的該數(shù)據(jù)的變更記錄的記錄號越大” 的記錄號順序?yàn)槔齺碇v述本發(fā)明實(shí)施例的具體方案,流程圖如圖3所示。對于“數(shù)據(jù)的變更時間越晚,變更記錄表中的該數(shù)據(jù)的變更記錄的記錄號越小”的排列方式的技術(shù)方案,本發(fā)明領(lǐng)域的技術(shù)人員可以根據(jù)本發(fā)明實(shí)施例公開的技術(shù)方案,輕而易舉地實(shí)現(xiàn),此處不再贅述。具體步驟如下S301 數(shù)據(jù)使用客戶端A向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送上次進(jìn)行數(shù)據(jù)同步時從數(shù)據(jù)維護(hù)服務(wù)器獲得的變更記錄的記錄號。如果是周期性同步,則可以在設(shè)定的同步周期A到達(dá)時, 數(shù)據(jù)使用客戶端A進(jìn)行數(shù)據(jù)同步將前次同步周期A到達(dá)后,從數(shù)據(jù)維護(hù)服務(wù)器進(jìn)行數(shù)據(jù)同步時獲得的變更記錄的記錄號發(fā)送給數(shù)據(jù)維護(hù)服務(wù)器。具體的,數(shù)據(jù)使用客戶端A可以是將前次同步周期A到達(dá)后,從數(shù)據(jù)維護(hù)服務(wù)器獲得的所有的變更記錄的記錄號都發(fā)送給數(shù)據(jù)維護(hù)服務(wù)器,也可以采用一種較優(yōu)方式對于“數(shù)據(jù)的變更時間越晚,變更記錄表中的該數(shù)據(jù)的變更記錄的記錄號越大”的情況,將上次進(jìn)行數(shù)據(jù)同步時(前次同步周期A到達(dá)后)獲得的變更記錄中最大的記錄號發(fā)送給數(shù)據(jù)維護(hù)服務(wù)器。當(dāng)然,如果數(shù)據(jù)使用客戶端 A是首次向數(shù)據(jù)維護(hù)服務(wù)器同步數(shù)據(jù),那么發(fā)送的記錄號可以是一個設(shè)定的初始值,例如是數(shù)據(jù)維護(hù)服務(wù)器的變更記錄表中的首個變更記錄的記錄號。較優(yōu)的,數(shù)據(jù)使用客戶端A向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送上次進(jìn)行數(shù)據(jù)同步時獲得的變更記錄的記錄號時,還可以向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送需要更新的數(shù)據(jù)表的標(biāo)識。例如,數(shù)據(jù)使用客戶端A需要同步數(shù)據(jù)維護(hù)服務(wù)器的DATA_S中的數(shù)據(jù),則數(shù)據(jù)使用客戶端A可以發(fā)送表名 “DATA_S”。S302 數(shù)據(jù)維護(hù)服務(wù)器根據(jù)數(shù)據(jù)使用客戶端A發(fā)送過來的記錄號,以及變更記錄表中的記錄號,從變更記錄表中選擇將相應(yīng)的變更記錄發(fā)送給數(shù)據(jù)使用客戶端A。由于,變更記錄表中的變更記錄的記錄號是根據(jù)時間順序排列的,那么,根據(jù)數(shù)據(jù)使用客戶端A發(fā)送過來的記錄號,以及變更記錄表中的記錄號,就可以判斷出數(shù)據(jù)使用客戶端A在上次同步數(shù)據(jù)后,變更記錄表中新增的變更記錄。例如,數(shù)據(jù)使用客戶端A發(fā)送過來的記錄號為45,而變更記錄表中的最大記錄號為130,那么,數(shù)據(jù)維護(hù)服務(wù)器從變更記錄表中選擇出記錄號大于45、小等于130的變更記錄作為新增的變更記錄發(fā)送給數(shù)據(jù)使用客戶端A。
較優(yōu)的,如果數(shù)據(jù)使用客戶端A還發(fā)送了數(shù)據(jù)表的標(biāo)識,那么,數(shù)據(jù)維護(hù)服務(wù)器可以根據(jù)數(shù)據(jù)表的標(biāo)識來確定新增的變更記錄數(shù)據(jù)維護(hù)服務(wù)器根據(jù)數(shù)據(jù)使用客戶端A發(fā)送過來的記錄號、變更變更記錄表中的記錄號,從變更記錄表中選擇出將相應(yīng)的變更記錄后, 還根據(jù)數(shù)據(jù)表的標(biāo)識,從選擇出的變更記錄中確定出與該數(shù)據(jù)表的標(biāo)識相應(yīng)的變更記錄發(fā)送給數(shù)據(jù)使用客戶端A。例如,數(shù)據(jù)使用客戶端A發(fā)送過來的記錄號為45、數(shù)據(jù)表的標(biāo)識為 DATA_S,而變更記錄表中的最大記錄號為130,則數(shù)據(jù)維護(hù)服務(wù)器從變更記錄表中選擇出記錄號大于45、小等于130的變更記錄后,再從中選取數(shù)據(jù)表標(biāo)識為DATA_S的變更記錄發(fā)送給數(shù)據(jù)使用客戶端A,從而提高系統(tǒng)的數(shù)據(jù)同步效率,減少帶寬占用。S303 數(shù)據(jù)使用客戶端A根據(jù)接收的變更記錄,更新本地?cái)?shù)據(jù)實(shí)現(xiàn)與數(shù)據(jù)維護(hù)服務(wù)器的數(shù)據(jù)同步。具體的,數(shù)據(jù)使用客戶端A根據(jù)接收的變更記錄更新本地的數(shù)據(jù)表中的數(shù)據(jù),實(shí)現(xiàn)與數(shù)據(jù)維護(hù)服務(wù)器的數(shù)據(jù)同步。數(shù)據(jù)使用客戶端A根據(jù)接收的每個變更記錄,對本地存儲的相應(yīng)的數(shù)據(jù)表中的相應(yīng)的數(shù)據(jù)進(jìn)行更新。具體的,數(shù)據(jù)使用客戶端A根據(jù)變更記錄中的數(shù)據(jù)表的標(biāo)識,確定出本地需要進(jìn)行同步的數(shù)據(jù)表;根據(jù)數(shù)據(jù)的標(biāo)識確定出該數(shù)據(jù)表中需要更新的數(shù)據(jù);根據(jù)數(shù)據(jù)的變更類型以及變更值對數(shù)據(jù)進(jìn)行更新對于變更類型為“增加”的變更記錄,數(shù)據(jù)使用客戶端A在相應(yīng)的數(shù)據(jù)表中添加相應(yīng)的數(shù)據(jù)記錄;對于變更類型為“修改”的變更記錄,數(shù)據(jù)使用客戶端A在相應(yīng)的數(shù)據(jù)表中對相應(yīng)的數(shù)據(jù)進(jìn)行修改,修改值與該變更記錄中的值相同;對于變更類型為“刪除”的變更記錄,數(shù)據(jù)使用客戶端A在相應(yīng)的數(shù)據(jù)表中刪除相應(yīng)的數(shù)據(jù)記錄。數(shù)據(jù)使用客戶端A當(dāng)下一個同步周期到達(dá)后,再重復(fù)上述S301-S303步驟。本發(fā)明實(shí)施例一中,變更記錄表中的變更記錄所記錄的變更情況,包括有數(shù)據(jù)的數(shù)值項(xiàng),因此,在步驟S302中數(shù)據(jù)維護(hù)服務(wù)器所確定出的變更記錄后,不必再根據(jù)該變更記錄去查詢數(shù)據(jù)表獲取數(shù)值,可以直接發(fā)送給數(shù)據(jù)使用客戶端A。由于本發(fā)明實(shí)施例一的數(shù)據(jù)維護(hù)服務(wù)器,只需要維護(hù)變更記錄表,而該變更記錄表的存在獨(dú)立于各數(shù)據(jù)使用客戶端,也就是說,變更記錄表中的內(nèi)容與數(shù)據(jù)使用客戶端無關(guān),所以,當(dāng)系統(tǒng)增加新的數(shù)據(jù)使用客戶端時,數(shù)據(jù)維護(hù)服務(wù)器不用對變更記錄表進(jìn)行改動,也不用進(jìn)行其它改造、修改代碼等工作。因此,當(dāng)系統(tǒng)擴(kuò)容時,簡化了數(shù)據(jù)維護(hù)服務(wù)器的工作。而且,數(shù)據(jù)維護(hù)服務(wù)器只需要維護(hù)變更記錄表,所需空間、處理資源少。因此,降低了數(shù)據(jù)維護(hù)服務(wù)器的壓力和工作量,節(jié)約了數(shù)據(jù)維護(hù)服務(wù)器的資源。此外,由于本發(fā)明實(shí)施例的數(shù)據(jù)同步系統(tǒng)中,是由數(shù)據(jù)使用客戶端主動同步數(shù)據(jù), 而系統(tǒng)中各數(shù)據(jù)使用客戶端的同步周期不相同,從而避免了眾多數(shù)據(jù)使用客戶端集中同步的情況,避免了數(shù)據(jù)維護(hù)服務(wù)器與各數(shù)據(jù)使用客戶端交互頻繁、容易出錯的情況,增強(qiáng)了系統(tǒng)的可靠性。實(shí)施例二本發(fā)明實(shí)施例還提供了另一種數(shù)據(jù)同步系統(tǒng)及其同步方法,在該系統(tǒng)中數(shù)據(jù)維護(hù)服務(wù)器所維護(hù)了另一種變更記錄表(如圖如所示),其中的變更記錄所記錄的數(shù)據(jù)表中數(shù)據(jù)的變更情況為當(dāng)某個數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更時,變更記錄表中記錄該數(shù)據(jù)的變更情況,具體地可以包括該數(shù)據(jù)所在數(shù)據(jù)表的標(biāo)識,該數(shù)據(jù)的標(biāo)識,該數(shù)據(jù)的變更類型。數(shù)據(jù)同步流程圖如圖4b所示,包括如下步驟S401 數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送上次進(jìn)行數(shù)據(jù)同步時從數(shù)據(jù)維護(hù)服務(wù)器獲得的變更記錄的記錄號。如果是周期性同步,則可以在設(shè)定的同步周期到達(dá)時,數(shù)據(jù)使用客戶端進(jìn)行數(shù)據(jù)同步將前次同步周期到達(dá)后,從數(shù)據(jù)維護(hù)服務(wù)器進(jìn)行數(shù)據(jù)同步時獲得的變更記錄的記錄號發(fā)送給數(shù)據(jù)維護(hù)服務(wù)器。具體方法與S301同,不再贅述。較優(yōu)的,數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送上次進(jìn)行數(shù)據(jù)同步時獲得的變更記錄的記錄號時,還可以向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送需要更新的數(shù)據(jù)表的標(biāo)識。S402 數(shù)據(jù)維護(hù)服務(wù)器根據(jù)數(shù)據(jù)使用客戶端發(fā)送過來的記錄號,以及變更記錄表中的記錄號,從變更記錄表中選擇將相應(yīng)的變更記錄。較優(yōu)的,如果數(shù)據(jù)使用客戶端還發(fā)送了數(shù)據(jù)表的標(biāo)識,那么,數(shù)據(jù)維護(hù)服務(wù)器可以根據(jù)數(shù)據(jù)表的標(biāo)識來確定新增的變更記錄數(shù)據(jù)維護(hù)服務(wù)器根據(jù)數(shù)據(jù)使用客戶端發(fā)送過來的記錄號、變更變更記錄表中的記錄號,從變更記錄表中選擇出將相應(yīng)的變更記錄后,還根據(jù)數(shù)據(jù)表的標(biāo)識,從選擇出的變更記錄中確定出與該數(shù)據(jù)表的標(biāo)識相應(yīng)的變更記錄。具體方法與S302同。S403:數(shù)據(jù)維護(hù)服務(wù)器根據(jù)確定出的變更記錄查詢相應(yīng)的數(shù)據(jù)表,得到更新數(shù)據(jù)的數(shù)值。S404 數(shù)據(jù)維護(hù)服務(wù)器將確定出的變更記錄,以及更新數(shù)據(jù)的數(shù)值發(fā)送給數(shù)據(jù)使用客戶端。S405 數(shù)據(jù)使用客戶端根據(jù)接收的變更記錄,以及更新數(shù)據(jù)的數(shù)值進(jìn)行本地?cái)?shù)據(jù)更新。具體的,數(shù)據(jù)使用客戶端根據(jù)變更記錄中的數(shù)據(jù)表的標(biāo)識,確定出本地需要進(jìn)行同步的數(shù)據(jù)表;根據(jù)數(shù)據(jù)的標(biāo)識確定出該數(shù)據(jù)表中需要更新的數(shù)據(jù);根據(jù)數(shù)據(jù)的變更類型以及從數(shù)據(jù)維護(hù)服務(wù)器接收的更新數(shù)據(jù)的數(shù)值對數(shù)據(jù)進(jìn)行更新。與實(shí)施例一不同的是,在本發(fā)明實(shí)施例二中,變更記錄表中的變更記錄所記錄的變更情況,不包括有數(shù)據(jù)的變更值項(xiàng),因此,在步驟S402中數(shù)據(jù)維護(hù)服務(wù)器所確定出的變更記錄后,數(shù)據(jù)維護(hù)服務(wù)器還要根據(jù)確定的變更記錄去查詢數(shù)據(jù)表獲取該數(shù)據(jù)變更后的數(shù)值,將確定的變更記錄和獲取的數(shù)值發(fā)送給數(shù)據(jù)使用客戶端。由于本發(fā)明實(shí)施例二的數(shù)據(jù)維護(hù)服務(wù)器,只需要維護(hù)變更記錄表,而該變更記錄表的存在獨(dú)立于各數(shù)據(jù)使用客戶端,也就是說,變更記錄表中的內(nèi)容與數(shù)據(jù)使用客戶端無關(guān),所以,當(dāng)系統(tǒng)增加新的數(shù)據(jù)使用客戶端時,數(shù)據(jù)維護(hù)服務(wù)器不用對變更記錄表進(jìn)行改動,也不用進(jìn)行其它改造、修改代碼等工作。因此,當(dāng)系統(tǒng)擴(kuò)容時,簡化了數(shù)據(jù)維護(hù)服務(wù)器的工作。而且,數(shù)據(jù)維護(hù)服務(wù)器只需要維護(hù)變更記錄表,所需空間、處理資源少。因此,降低了數(shù)據(jù)維護(hù)服務(wù)器的壓力和工作量,節(jié)約了數(shù)據(jù)維護(hù)服務(wù)器的資源。此外,由于本發(fā)明實(shí)施例的數(shù)據(jù)同步系統(tǒng)中,是由數(shù)據(jù)使用客戶端主動同步數(shù)據(jù), 而系統(tǒng)中各數(shù)據(jù)使用客戶端的同步周期不相同,從而避免了眾多數(shù)據(jù)使用客戶端集中同步的情況,避免了數(shù)據(jù)維護(hù)服務(wù)器與各數(shù)據(jù)使用客戶端交互頻繁、容易出錯的情況,增強(qiáng)了系統(tǒng)的可靠性。
為了更進(jìn)一步節(jié)約數(shù)據(jù)維護(hù)服務(wù)器的存儲空間、系統(tǒng)資源,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)維護(hù)服務(wù)器對變更記錄表進(jìn)行維護(hù)的方法(對于上述兩個實(shí)施例的方案均適用)。事實(shí)上,在實(shí)際應(yīng)用中,當(dāng)數(shù)據(jù)維護(hù)服務(wù)器的數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更時,就需要向變更記錄表中增加一個新的變更記錄。如果數(shù)據(jù)維護(hù)服務(wù)器的數(shù)據(jù)表非常多,數(shù)據(jù)表中的數(shù)據(jù)量非常大,那么,變更記錄表中的變更記錄會隨著時間的推移成指數(shù)級增長,將占用大量的系統(tǒng)資源。經(jīng)過分析,本發(fā)明的發(fā)明人發(fā)現(xiàn),如果當(dāng)數(shù)據(jù)表中的某個數(shù)據(jù)發(fā)生變更,其變更類型為“刪除”,即從數(shù)據(jù)表中刪除該數(shù)據(jù),那么,變更記錄表中需要增加一個變更類型為“刪除”類型的變更記錄。假如,之前變更記錄表中記錄了關(guān)于該數(shù)據(jù)的一些其它變更記錄,如變更類型為“增加”或“修改”的變更記錄,那么此時,這些變更記錄已無存在的意義——因?yàn)?,?dāng)數(shù)據(jù)使用客戶端進(jìn)行數(shù)據(jù)同步時,只需要知道該數(shù)據(jù)當(dāng)前已被“刪除”的情況,從而同步“刪除”本地的相應(yīng)數(shù)據(jù),而沒有必要在進(jìn)行“刪除”之前,還根據(jù)變更記錄表中的該數(shù)據(jù)的其它變更類型的變更記錄,進(jìn)行“增加”或“修改”操作。對于變更為“增加”的變更記錄同此分析。再如,當(dāng)數(shù)據(jù)表中的某個數(shù)據(jù)發(fā)生變更,其變更類型為“修改”,即從數(shù)據(jù)表中修改該數(shù)據(jù),那么,變更記錄表中需要增加一個變更類型為“修改”類型的變更記錄。假如,之前變更記錄表中記錄了關(guān)于該數(shù)據(jù)的“修改”類型的變更記錄,那么此時,這些變更記錄已無存在的意義——因?yàn)?,?dāng)數(shù)據(jù)使用客戶端進(jìn)行數(shù)據(jù)同步時,只需要知道該數(shù)據(jù)當(dāng)前被“修改”的數(shù)據(jù),不需一一了解該數(shù)據(jù)曾經(jīng)的修改情況?;谏鲜龇治觯瑸榱烁M(jìn)一步節(jié)約數(shù)據(jù)維護(hù)服務(wù)器的存儲空間、系統(tǒng)資源,本發(fā)明還提供的一種數(shù)據(jù)維護(hù)服務(wù)器對變更記錄表進(jìn)行維護(hù)的方法(對于上述兩個實(shí)施例的方案均適用),具體為當(dāng)數(shù)據(jù)維護(hù)服務(wù)器的數(shù)據(jù)表的數(shù)據(jù)發(fā)生變更后,數(shù)據(jù)維護(hù)服務(wù)器判斷該數(shù)據(jù)的變更類型。若所述變更類型為“刪除”,則將變更記錄表中該數(shù)據(jù)的變更記錄全部刪除;若所述變更類型為“增加”,則將變更記錄表中該數(shù)據(jù)的變更記錄全部刪除;若所述變更類型為“修改”,則將所述變更記錄表中該數(shù)據(jù)的變更類型為“修改”的變更記錄全部刪除。數(shù)據(jù)維護(hù)服務(wù)器在向變更記錄表中增加新的變更記錄之前,通過判斷該新的變更記錄的變更類型,相應(yīng)地刪除一些沒必要的變更記錄,減少了變更記錄表所占用的空間資源,節(jié)約了系統(tǒng)資源。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,如 ROM/RAM、磁碟、光盤等。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種數(shù)據(jù)同步方法,包括數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送記錄號,所述記錄號為所述數(shù)據(jù)維護(hù)服務(wù)器之前發(fā)送給所述數(shù)據(jù)使用客戶端的變更記錄的記錄號;所述數(shù)據(jù)維護(hù)服務(wù)器根據(jù)接收的記錄號,以及變更記錄表中的變更記錄的記錄號,從所述變更記錄表中確定出新增的變更記錄后發(fā)送給所述數(shù)據(jù)使用客戶端,其中,變更記錄表中的每個變更記錄為數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,增加到所述變更記錄表中的該數(shù)據(jù)的變更情況,且變更記錄的記錄號大小由數(shù)據(jù)的變更時間先后決定,所述數(shù)據(jù)表存于所述數(shù)據(jù)維護(hù)服務(wù)器;所述數(shù)據(jù)使用客戶端根據(jù)接收的變更記錄更新本地?cái)?shù)據(jù)。
2.如權(quán)利要求1所述的方法,其中,所述變更情況包括所述數(shù)據(jù)所在數(shù)據(jù)表的標(biāo)識,所述數(shù)據(jù)的標(biāo)識,所述數(shù)據(jù)的變更類型,所述數(shù)據(jù)的變更值。
3.如權(quán)利要求1所述的方法,所述變更情況包括所述數(shù)據(jù)所在數(shù)據(jù)表的標(biāo)識,所述數(shù)據(jù)的標(biāo)識,所述數(shù)據(jù)的變更類型;以及所述數(shù)據(jù)維護(hù)服務(wù)器從所述變更記錄表中確定出新增的變更記錄后,還包括根據(jù)確定出的變更記錄查詢數(shù)據(jù)表,獲取相應(yīng)的變更數(shù)據(jù)的變更值,并將所述變更值也發(fā)送給所述數(shù)據(jù)使用客戶端。
4.如權(quán)利要求2或3所述的方法,在數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送記錄號時, 還包括所述數(shù)據(jù)使用客戶端還向所述數(shù)據(jù)維護(hù)服務(wù)器發(fā)送數(shù)據(jù)表標(biāo)識;以及所述數(shù)據(jù)維護(hù)服務(wù)器還根據(jù)接收的數(shù)據(jù)表標(biāo)識確定出新增的變更記錄。
5.如權(quán)利要求4所述的方法,其中,所述變更記錄表中的變更記錄的記錄號大小由數(shù)據(jù)的變更時間先后決定具體為數(shù)據(jù)的變更時間越靠后,則該數(shù)據(jù)對應(yīng)的變更記錄的記錄號越大;所述數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送的記錄號為所述數(shù)據(jù)維護(hù)服務(wù)器之前發(fā)送給所述數(shù)據(jù)使用客戶端的變更記錄中最大的記錄號。
6.如權(quán)利要求5所述的方法,所述變更記錄表中的變更記錄的記錄號是變更記錄表中的變更記錄的最大記錄號。
7.如權(quán)利要求6所述的方法,在所述數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,以及在增加該數(shù)據(jù)的變更情況到所述變更記錄表中之前還包括所述數(shù)據(jù)維護(hù)服務(wù)器判斷該數(shù)據(jù)的變更類型;若所述變更類型為“刪除”,則將所述變更記錄表中該數(shù)據(jù)的變更記錄全部刪除;若所述變更類型為“增加”,則將所述變更記錄表中該數(shù)據(jù)的變更記錄全部刪除;若所述變更類型為“修改”,則將所述變更記錄表中該數(shù)據(jù)的變更類型為“修改”的變更記錄全部刪除。
8.一種數(shù)據(jù)同步系統(tǒng),包括數(shù)據(jù)使用客戶端和數(shù)據(jù)維護(hù)服務(wù)器;所述數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送記錄號,所述記錄號為所述數(shù)據(jù)維護(hù)服務(wù)器之前發(fā)送給所述數(shù)據(jù)使用客戶端的變更記錄的記錄號;所述數(shù)據(jù)維護(hù)服務(wù)器根據(jù)接收的記錄號,以及變更記錄表中的變更記錄的記錄號,從所述變更記錄表中確定出新增的變更記錄后發(fā)送給所述數(shù)據(jù)使用客戶端,其中,變更記錄表中的每個變更記錄為數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,增加到所述變更記錄表中的該數(shù)據(jù)的變更情況,且變更記錄的記錄號大小由數(shù)據(jù)的變更時間先后決定,所述數(shù)據(jù)表存于所述數(shù)據(jù)維護(hù)服務(wù)器;所述數(shù)據(jù)使用客戶端根據(jù)接收的變更記錄更新本地?cái)?shù)據(jù)。
9.如權(quán)利要求8所述的系統(tǒng),所述變更情況具體包括所述數(shù)據(jù)所在數(shù)據(jù)表的標(biāo)識,所述數(shù)據(jù)的標(biāo)識,所述數(shù)據(jù)的變更類型,所述數(shù)據(jù)的變更值。
10.如權(quán)利要求9所述的系統(tǒng),所述變更情況具體包括所述數(shù)據(jù)所在數(shù)據(jù)表的標(biāo)識, 該數(shù)據(jù)的標(biāo)識,該數(shù)據(jù)的變更類型;以及所述數(shù)據(jù)維護(hù)服務(wù)器從所述變更記錄表中確定出新增的變更記錄后,還用于根據(jù)確定出的變更記錄查詢數(shù)據(jù)表,獲取相應(yīng)的變更數(shù)據(jù)的變更值,并將所述變更值也發(fā)送給所述數(shù)據(jù)使用客戶端。
11.如權(quán)利要求9或10所述的系統(tǒng),其中,所述數(shù)據(jù)使用客戶端用于在向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送記錄號時,向所述數(shù)據(jù)維護(hù)服務(wù)器發(fā)送數(shù)據(jù)表標(biāo)識;以及所述數(shù)據(jù)維護(hù)服務(wù)器用于在確定出新增的變更記錄后,根據(jù)接收的數(shù)據(jù)表標(biāo)識,從所述新增的變更記錄中選出具有相應(yīng)數(shù)據(jù)表標(biāo)識的變更記錄發(fā)送給所述數(shù)據(jù)使用客戶端。
12.如權(quán)利要求11所述的系統(tǒng),其中,所述變更記錄表中的變更記錄的記錄號的大小具體為數(shù)據(jù)的變更時間越靠后,則該數(shù)據(jù)對應(yīng)的變更記錄的記錄號越大;所述數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送的記錄號是所述數(shù)據(jù)維護(hù)服務(wù)器之前發(fā)送給所述數(shù)據(jù)使用客戶端的變更記錄中最大的記錄號。
13.如權(quán)利要求12所述的系統(tǒng),其中,所述數(shù)據(jù)維護(hù)服務(wù)器用于在所述數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變更后,以及在增加該數(shù)據(jù)的變更情況到所述變更記錄表中之前,判斷該數(shù)據(jù)的變更類型;若所述變更類型為“刪除”,則將所述變更記錄表中該數(shù)據(jù)的變更記錄全部刪除; 若所述變更類型為“增加”,則將所述變更記錄表中該數(shù)據(jù)的變更記錄全部刪除;若所述變更類型為“修改”,則將所述變更記錄表中該數(shù)據(jù)的變更類型為“修改”的變更記錄全部刪除。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)同步系統(tǒng)及方法。所述方法包括數(shù)據(jù)使用客戶端向數(shù)據(jù)維護(hù)服務(wù)器發(fā)送記錄號;數(shù)據(jù)維護(hù)服務(wù)器根據(jù)接收的記錄號,以及變更記錄表中的變更記錄的記錄號確定出新增的變更記錄后發(fā)送給所述數(shù)據(jù)使用客戶端;所述數(shù)據(jù)使用客戶端根據(jù)接收的變更記錄更新本地?cái)?shù)據(jù)。數(shù)據(jù)維護(hù)服務(wù)器由于只需要維護(hù)變更記錄表,當(dāng)系統(tǒng)增加新的數(shù)據(jù)使用客戶端時,數(shù)據(jù)維護(hù)服務(wù)器不用對變更記錄表進(jìn)行改動,也不用進(jìn)行其它改造、修改代碼等工作,從而簡化了數(shù)據(jù)維護(hù)服務(wù)器的工作。
文檔編號H04L12/24GK102571923SQ201110415779
公開日2012年7月11日 申請日期2011年12月13日 優(yōu)先權(quán)日2011年12月13日
發(fā)明者豐國炳, 何巖, 傅永財(cái), 吳瑜, 張勇, 李淑惠, 賈曉霞, 鄭揚(yáng)飛, 郭紅鈺, 金輝 申請人:中國電子科技集團(tuán)公司第十五研究所