一種移動(dòng)設(shè)備上基于增量更新的異構(gòu)數(shù)據(jù)同步方案的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于移動(dòng)電子設(shè)備數(shù)據(jù)處理領(lǐng)域,可用于服務(wù)器與移動(dòng)電子設(shè)備之間的高效數(shù)據(jù)同步。
技術(shù)背景
[0002]移動(dòng)電子設(shè)備經(jīng)常會(huì)有需要同服務(wù)器保持?jǐn)?shù)據(jù)同步的需求,通常這是通過TCP或者HTTP協(xié)議來進(jìn)行數(shù)據(jù)傳遞,并且在此之上實(shí)現(xiàn)一種業(yè)務(wù)層協(xié)議來達(dá)到目的。之前的一些解決方案以及本文的解決方案都是一種建立在網(wǎng)絡(luò)、傳輸層或者應(yīng)用層之上的業(yè)務(wù)層協(xié)議。與本發(fā)明最接近的現(xiàn)有技術(shù)有全量更新技術(shù)方案和簡(jiǎn)單的增量同步技術(shù)方案。
[0003]全量更新的解決方案是指每次同步都需要把全部數(shù)據(jù)從服務(wù)器拉下來,直接覆蓋本地?cái)?shù)據(jù)以達(dá)到數(shù)據(jù)同步的目的。此方案一般采取分頁(yè)的方式來減少每次的等待時(shí)間和傳輸數(shù)據(jù)量,有一種變形的全量同步方案是每次分頁(yè)拉取極少的核心數(shù)據(jù),例如:數(shù)據(jù)的ID,這樣來進(jìn)一步減少等待時(shí)間和數(shù)據(jù)量。其優(yōu)點(diǎn)是,容錯(cuò)性高。其缺點(diǎn)是:每次更新數(shù)據(jù)量大,等待時(shí)間長(zhǎng),服務(wù)器和移動(dòng)設(shè)備計(jì)算壓力都比較大。
[0004]簡(jiǎn)單的增量同步方案是指每次同步只是拉取變化了的數(shù)據(jù),例如,增加的、刪除的或變更的數(shù)據(jù)條目。該方法只作用于一種數(shù)據(jù),無(wú)法同時(shí)進(jìn)行多種數(shù)據(jù)的同步,并且在極端情況下會(huì)出現(xiàn)單次更新巨量數(shù)據(jù)以及數(shù)據(jù)錯(cuò)誤無(wú)法恢復(fù)的情況。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題是,建立在簡(jiǎn)單增量同步的方案之上,解決多種異構(gòu)數(shù)據(jù)同時(shí)進(jìn)行數(shù)據(jù)同步、每次更新數(shù)據(jù)規(guī)模可控、提供容錯(cuò)。
[0006]為解決上述技術(shù)問題,本發(fā)明提供一種移動(dòng)設(shè)備上基于增量更新的異構(gòu)數(shù)據(jù)同步方案設(shè)備端同步方法,主要包括以下幾個(gè)步驟:
(11)在設(shè)備端取出待更新同步數(shù)據(jù)列表,并從中獲取待同步數(shù)據(jù);
(12)確定待同步數(shù)據(jù)的數(shù)據(jù)類型、更新方向,并在設(shè)備端本地?cái)?shù)據(jù)庫(kù)中的獲取已同步數(shù)據(jù)的最早或最晚時(shí)間,構(gòu)建待同步數(shù)據(jù)參數(shù);
(13)將待同步數(shù)據(jù)參數(shù)按照協(xié)議要求發(fā)送至服務(wù)器端,并接收服務(wù)器端數(shù)據(jù)響應(yīng);
(14)根據(jù)服務(wù)器端數(shù)據(jù)響應(yīng)判斷是否有clear標(biāo)識(shí),若無(wú)則將待同步數(shù)據(jù)與已同步數(shù)據(jù)直接合并為同步數(shù)據(jù),若有則需先清理已同步數(shù)據(jù)后在進(jìn)行合并;
(15)根據(jù)服務(wù)器端數(shù)據(jù)響應(yīng)判斷是否有結(jié)束標(biāo)識(shí),若有則同步數(shù)據(jù)向前更新結(jié)束,若無(wú)則繼續(xù)下一步判斷;
(16)判斷數(shù)據(jù)條數(shù)是否為0,若是則同步數(shù)據(jù)暫時(shí)更新結(jié)束,否則繼續(xù)下一步判斷;
(17)判斷數(shù)據(jù)條數(shù)是否全部為0,若是同步數(shù)據(jù)更新結(jié)束,否則繼續(xù)循環(huán)步驟(11)到步驟(17)。
[0007]進(jìn)一步,步驟(13)主要包括以下幾個(gè)步驟:
(21)服務(wù)器端收到設(shè)備端數(shù)據(jù)同步請(qǐng)求; (22)循環(huán)同步請(qǐng)求中的待同步數(shù)據(jù)參數(shù);
(23)查找待同步數(shù)據(jù)更新方向;
若向前,判斷是否已有傳入時(shí)間,若無(wú)則返回步驟(22),若有則以待同步數(shù)據(jù)類型和傳入時(shí)間向前查詢100條數(shù)據(jù),取出所查數(shù)據(jù)的最早同步時(shí)間,并告知設(shè)備端向前更新是否完成;
若向后,判斷是否已有傳入時(shí)間,若有則以待同步數(shù)據(jù)類型和傳入時(shí)間向后查詢100條數(shù)據(jù),取出所查數(shù)據(jù)的最晚同步時(shí)間;若無(wú)則取一月前的時(shí)間作為傳入時(shí)間以待同步數(shù)據(jù)類型和傳入時(shí)間向后查詢100條數(shù)據(jù),取出所查數(shù)據(jù)的最晚同步時(shí)間;
(24)以最早同步時(shí)間及最晚同步時(shí)間對(duì)待同步數(shù)據(jù)進(jìn)行查詢,組成數(shù)據(jù)列表;
(25)獲取外部clear指令同數(shù)據(jù)列表構(gòu)建服務(wù)器端數(shù)據(jù)響應(yīng);
(26)將數(shù)據(jù)響應(yīng)返回設(shè)備端。
[0008]進(jìn)一步,服務(wù)器端僅記錄數(shù)據(jù)最終的狀態(tài)并不用記錄待同步數(shù)據(jù)變化的過程,對(duì)于每條待同步數(shù)據(jù),僅記錄變化的時(shí)間。
[0009]進(jìn)一步,服務(wù)器端的數(shù)據(jù)響應(yīng)中clear標(biāo)識(shí),表明設(shè)備端受到數(shù)據(jù)響應(yīng)后是否需要清理已同步數(shù)據(jù)。
[0010]進(jìn)一步,服務(wù)器端傳回clear標(biāo)識(shí)情況包括:
服務(wù)器端時(shí)間進(jìn)行了人為的修改,或?qū)е聲r(shí)間異常的錯(cuò)誤;
設(shè)備端上傳的最早時(shí)間比服務(wù)器端當(dāng)前時(shí)間至少早三個(gè)月。
[0011]進(jìn)一步,步驟(14)中,設(shè)備端清理已同步數(shù)據(jù)情況包括:
用戶手動(dòng)清除數(shù)據(jù)緩存;
接收到服務(wù)器端的clear標(biāo)識(shí)。
[0012]進(jìn)一步,分別給服務(wù)器端和設(shè)備端一種清理數(shù)據(jù)的機(jī)制,即可達(dá)到容錯(cuò)的目的。
[0013]本方法與現(xiàn)有簡(jiǎn)單增量同步的方案相比,具有以下幾點(diǎn)優(yōu)勢(shì):采用數(shù)據(jù)完全獨(dú)立的方式進(jìn)行多數(shù)據(jù)同步,如果不進(jìn)行獨(dú)立,在服務(wù)器端必須構(gòu)建一個(gè)時(shí)間索引,復(fù)雜程度過高;采用分頁(yè)加補(bǔ)全的方式來保證數(shù)據(jù)量可控,并且保證數(shù)據(jù)完整;采用兩端皆可進(jìn)行數(shù)據(jù)清空的方式,來避免增量更新中數(shù)據(jù)錯(cuò)誤無(wú)法糾正的情況。完善地解決了增量更新在異構(gòu)數(shù)據(jù)同步中的應(yīng)用,并且?guī)砹巳蒎e(cuò)性和交互中的數(shù)據(jù)量可控。可以應(yīng)用于多種需要數(shù)據(jù)同步的場(chǎng)景。
[0014]結(jié)合附圖閱讀本發(fā)明實(shí)施方式的詳細(xì)描述后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚。
【附圖說明】
[0015]下面結(jié)合附圖與【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明:
圖1為一種移動(dòng)設(shè)備上基于增量更新的異構(gòu)數(shù)據(jù)同步方案設(shè)備端數(shù)據(jù)同步方法的流程圖;
圖2為一種移動(dòng)設(shè)備上基于增量更新的異構(gòu)數(shù)據(jù)同步方案服務(wù)器端數(shù)據(jù)同步方法的流程圖。
【具體實(shí)施方式】
[0016]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步的詳細(xì)描述。
[0017]參見圖1,本實(shí)施例的適用于一種移動(dòng)設(shè)備上基于增量更新的異構(gòu)數(shù)據(jù)同步方案設(shè)備端數(shù)據(jù)同步方法的流程圖。流程圖包括以下幾個(gè)步驟:
(11)在設(shè)備端取出待更新同步數(shù)據(jù)列表,并從中獲取待同步數(shù)據(jù);
例如:有A,B, C三種數(shù)據(jù)需要同步,取出待更新同步數(shù)據(jù)列表得到A,B, C三種待同步數(shù)據(jù)。
[0018](12)確定待同步數(shù)據(jù)的數(shù)據(jù)類型、更新方向,并在設(shè)備端本地?cái)?shù)據(jù)庫(kù)中的獲取已同步數(shù)據(jù)的最早或最晚時(shí)間,構(gòu)建待同步數(shù)據(jù)參數(shù);
待同步數(shù)據(jù)參數(shù)可以定義為:[{數(shù)據(jù):A,方向:向前,時(shí)間:1435455566},{數(shù)據(jù):B,方向:向前,時(shí)間:14354644774},{數(shù)據(jù):C,方向:向前,時(shí)間:1435455856},]。
[0019](13)將待同步數(shù)據(jù)參數(shù)按照協(xié)議要求發(fā)送至服務(wù)器端,并接收服務(wù)器端數(shù)據(jù)響應(yīng);
(14)根據(jù)服務(wù)器端數(shù)據(jù)響應(yīng)判斷是否有clear標(biāo)識(shí),若無(wú)則將待同步數(shù)據(jù)與已同步數(shù)據(jù)直接合并為同步數(shù)據(jù),若有則需先清理已同步數(shù)據(jù)后在進(jìn)行合并;
設(shè)備端清理已同步數(shù)據(jù)情況包括:
用戶手動(dòng)清除數(shù)據(jù)緩存;接收到服務(wù)器端的clear標(biāo)識(shí)。
[0020](15)根據(jù)服務(wù)器端數(shù)據(jù)響應(yīng)判斷是否有結(jié)束標(biāo)識(shí),若有則同步數(shù)據(jù)