本發(fā)明涉及數(shù)據(jù)同步技術(shù)領(lǐng)域,更為具體地,涉及一種數(shù)據(jù)的分解同步方法及系統(tǒng)。
背景技術(shù):隨著移動通信網(wǎng)絡(luò)技術(shù)和計(jì)算機(jī)的不斷發(fā)展,人們對設(shè)備的功能性要求也不斷提高。其中,數(shù)據(jù)同步實(shí)現(xiàn)了多個(gè)終端設(shè)備、平臺和網(wǎng)絡(luò)上遠(yuǎn)端數(shù)據(jù)的共享,而SyncML協(xié)議的出現(xiàn)使得在不同設(shè)備上同步網(wǎng)絡(luò)數(shù)據(jù)成為可能。例如,用戶可以通過移動電話閱讀電子郵件,并可以對已讀的郵件進(jìn)行修改、更新和維護(hù),經(jīng)過數(shù)據(jù)同步后,用戶下一次在使用計(jì)算機(jī)閱讀電子郵件時(shí),就會清楚的知道哪些是已經(jīng)處理過的郵件,哪些是未處理的郵件。SyncML協(xié)議是一種行業(yè)通用的移動數(shù)據(jù)同步協(xié)議,由SyncMLInitiative發(fā)行,是一種開放性協(xié)議,可以說是目前數(shù)據(jù)同步領(lǐng)域的一個(gè)公共標(biāo)準(zhǔn),里面對同步類型、同步過程都做了描述。圖1示出了SyncML協(xié)議中的一次同步過程。如圖1所示,SyncML協(xié)議將一次同步過程劃分為6個(gè)Package,其中,Package#1:客戶端向服務(wù)器發(fā)送初始化信息,請求同步,包括客戶端的當(dāng)前同步錨和同步方式;Package#2:服務(wù)器向客戶端確認(rèn)同步請求,最重要的是確認(rèn)雙方本次采用的是何種同步方式,例如采用的是雙向同步或者是慢同步等;Package#3:客戶端將本次要同步的數(shù)據(jù)以及相對應(yīng)的數(shù)據(jù)指紋發(fā)送到服務(wù)器;Package#4:服務(wù)器處理客戶端發(fā)送上來的同步數(shù)據(jù),同時(shí)找出客戶端和服務(wù)器間的差集數(shù)據(jù),也就是將Package#1中發(fā)送的客戶端當(dāng)前同步錨和服務(wù)器中的同步錨間的差集數(shù)據(jù)和對應(yīng)的指紋下發(fā)給客戶端;Package#5:客戶端處理服務(wù)器下發(fā)的差集數(shù)據(jù)并將處理結(jié)果和對應(yīng)的luid和guid的關(guān)系上傳到服務(wù)器,其中l(wèi)uid是數(shù)據(jù)在客戶端的唯一編號,guid是數(shù)據(jù)在服務(wù)器的唯一編號;Package#6:服務(wù)器確認(rèn)客戶端的操作結(jié)果和記錄映射關(guān)系,然后將同步成功與否的結(jié)果和當(dāng)前最新的同步錨發(fā)送給客戶端。當(dāng)客戶端收到Package#6消息包中的確認(rèn)結(jié)果時(shí),將目前的數(shù)據(jù)版本,也就是服務(wù)器返回的同步錨記錄下來后,即標(biāo)記著此次同步過程順利完成。此時(shí)客戶端的同步錨和服務(wù)器的同步錨是一樣的,也就是說在此次同步過程順利完成后,客戶端和服務(wù)器間是沒有差集數(shù)據(jù)的。從SyncML協(xié)議的同步過程中可以看出,如果某一次同步過程中需要同步的數(shù)據(jù)比較多,也就是說在Package#4消息包里的差集數(shù)據(jù)較多的時(shí)候,由于移動網(wǎng)絡(luò)的多變性,同步的時(shí)間就可能比較久。用戶在同步數(shù)據(jù)時(shí),當(dāng)用戶看著一直在同步中的同步界面而不想再等下去,但又擔(dān)心數(shù)據(jù)丟失而不敢關(guān)閉時(shí),就大大降低了用戶的體驗(yàn)。另外對于移動網(wǎng)絡(luò)來說,存在很多不確定的因素,比如網(wǎng)絡(luò)的穩(wěn)定性、網(wǎng)關(guān)的超時(shí)等等問題,這些問題無疑都加大了數(shù)據(jù)同步失敗的風(fēng)險(xiǎn),一旦數(shù)據(jù)同步失敗,用戶還得重頭再來。對于用戶來說,同步失敗和重頭再來的體驗(yàn)都是用戶所不能接受的。
技術(shù)實(shí)現(xiàn)要素:鑒于上述問題,本發(fā)明的目的是提供一種數(shù)據(jù)的分解同步方法及系統(tǒng),實(shí)現(xiàn)將一次同步分解過程為多個(gè)同步過程,用以解決在同步過程中數(shù)據(jù)太多或者差集數(shù)據(jù)較大的情況下存在的數(shù)據(jù)同步失敗的風(fēng)險(xiǎn),從而提升用戶的使用體驗(yàn)。根據(jù)本發(fā)明的一個(gè)方面,提供一種數(shù)據(jù)的分解同步方法,包括:客戶端向服務(wù)器發(fā)送同步請求以及客戶端的當(dāng)前同步錨;服務(wù)器確認(rèn)所述同步請求并接收客戶端的當(dāng)前同步錨;當(dāng)客戶端存在需要同步的數(shù)據(jù)且同步的數(shù)據(jù)超過預(yù)定閥值時(shí),客戶端根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對需要同步的數(shù)據(jù)進(jìn)行分解,然后分批將所分解的數(shù)據(jù)發(fā)送給服務(wù)器進(jìn)行同步;服務(wù)器接收客戶端發(fā)送的數(shù)據(jù),并根據(jù)客戶端的當(dāng)前同步錨和服務(wù)器的當(dāng)前同步錨確定客戶端與服務(wù)器之間的差集數(shù)據(jù),然后服務(wù)器更新服務(wù)器的當(dāng)前同步錨,并將服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端;當(dāng)差集數(shù)據(jù)超過預(yù)定閥值時(shí),服務(wù)器根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對差集數(shù)據(jù)進(jìn)行分解,然后分批將所分解的差集數(shù)據(jù)發(fā)送給客戶端進(jìn)行同步;客戶端接收服務(wù)器發(fā)送的差集數(shù)據(jù)并更新客戶端的當(dāng)前同步錨。其中,在服務(wù)器更新服務(wù)器的當(dāng)前同步錨的過程中,服務(wù)器每完成一次有數(shù)據(jù)變化的同步,服務(wù)器以同步錨遞增的方式更新服務(wù)器的當(dāng)前同步錨,然后服務(wù)器將服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端,客戶端將服務(wù)器的當(dāng)前同步錨作為客戶端的當(dāng)前同步錨進(jìn)行更新。另一方面,本發(fā)明還提供一種數(shù)據(jù)的分解同步系統(tǒng),包括:同步請求單元,用于客戶端向服務(wù)器發(fā)送同步請求以及客戶端的當(dāng)前同步錨;同步確認(rèn)單元,用于服務(wù)器確認(rèn)所述同步請求并接收客戶端的當(dāng)前同步錨;客戶端數(shù)據(jù)分解單元,用于當(dāng)客戶端存在需要同步的數(shù)據(jù)且該需要同步的數(shù)據(jù)超過預(yù)定閥值時(shí),客戶端根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對需要同步的數(shù)據(jù)進(jìn)行分解,然后分批將所分解的數(shù)據(jù)發(fā)送給服務(wù)器進(jìn)行同步;服務(wù)器接收單元,用于服務(wù)器接收客戶端發(fā)送的數(shù)據(jù);差集數(shù)據(jù)確定單元,用于服務(wù)器根據(jù)客戶端的當(dāng)前同步錨和服務(wù)器的當(dāng)前同步錨確定客戶端與服務(wù)器之間的差集數(shù)據(jù);同步錨更新單元,用于服務(wù)器更新服務(wù)器的當(dāng)前同步錨,并將服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端;差集數(shù)據(jù)發(fā)送單元,用于當(dāng)差集數(shù)據(jù)超過預(yù)定閥值時(shí),服務(wù)器根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對差集數(shù)據(jù)進(jìn)行分解,然后分批將所分解的差集數(shù)據(jù)和服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端進(jìn)行同步;客戶端接收單元,用于客戶端接收服務(wù)器發(fā)送的差集數(shù)據(jù)并更新客戶端的當(dāng)前同步錨。利用上述根據(jù)本發(fā)明的數(shù)據(jù)的分解同步方法及系統(tǒng),能夠?qū)⒁淮瓮椒纸膺^程為多個(gè)同步過程,解決了在同步過程中數(shù)據(jù)太多或者差集數(shù)據(jù)較大的情況下存在的數(shù)據(jù)同步失敗的風(fēng)險(xiǎn),使用戶在數(shù)據(jù)同步操作上更具操作性和可控性,從而提升用戶的使用體驗(yàn)。為了實(shí)現(xiàn)上述以及相關(guān)目的,本發(fā)明的一個(gè)或多個(gè)方面包括后面將詳細(xì)說明并在權(quán)利要求中特別指出的特征。下面的說明以及附圖詳細(xì)說明了本發(fā)明的某些示例性方面。然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明旨在包括所有這些方面以及它們的等同物。附圖說明通過參考以下結(jié)合附圖的說明及權(quán)利要求書的內(nèi)容,并且隨著對本發(fā)明的更全面理解,本發(fā)明的其它目的及結(jié)果將更加明白及易于理解。在附圖中:圖1為SyncML協(xié)議中的一次同步過程;圖2為根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)的分解同步流程示意圖;圖3-1為根據(jù)本發(fā)明實(shí)施例的客戶端1第一次同步分解過程交互流程圖;圖3-2為根據(jù)本發(fā)明實(shí)施例的客戶端1第二次同步分解過程交互流程圖;圖4-1為根據(jù)本發(fā)明實(shí)施例的服務(wù)器第一次同步分解過程交互流程圖;圖4-2為根據(jù)本發(fā)明實(shí)施例的服務(wù)器第二次同步分解過程交互流程圖;圖5為根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)的分解同步系統(tǒng)方框示意圖。在所有附圖中相同的標(biāo)號指示相似或相應(yīng)的特征或功能。具體實(shí)施方式以下將結(jié)合附圖對本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)描述。針對前述現(xiàn)有技術(shù)中當(dāng)同步的數(shù)據(jù)過多時(shí),數(shù)據(jù)同步時(shí)間太久以及可能存在數(shù)據(jù)同步失敗,從而使用戶體驗(yàn)變差的問題,本發(fā)明通過對同步的數(shù)據(jù)進(jìn)行分解,將一次同步分解過程為多個(gè)細(xì)小的同步過程,解決了在同步過程中數(shù)據(jù)太多或者差集數(shù)據(jù)較大的情況下存在的數(shù)據(jù)同步失敗的風(fēng)險(xiǎn),從而提升用戶的體驗(yàn)。圖2示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)的分解同步方法流程示意圖。如圖2所示,本發(fā)明提供的數(shù)據(jù)的分解同步方法包括:在步驟S210中,客戶端向服務(wù)器發(fā)送同步請求以及客戶端的當(dāng)前同步錨。在步驟S220中,服務(wù)器確認(rèn)客戶端的同步請求并接收客戶端的當(dāng)前同步錨。在步驟S230中,當(dāng)客戶端存在需要同步的數(shù)據(jù)且該需要同步的數(shù)據(jù)超過預(yù)定閥值時(shí),客戶端根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對需要同步的數(shù)據(jù)進(jìn)行分解,然后分批將所分解的數(shù)據(jù)發(fā)送給服務(wù)器進(jìn)行同步。需要說明的是,在步驟S210中,也就是在客戶端向服務(wù)器發(fā)起同步之前,客戶端和服務(wù)器都有自己的初始同步錨,如果以前從來沒有同步過,初始同步錨為0??蛻舳说漠?dāng)前同步錨是客戶端在發(fā)起同步請求時(shí)發(fā)給服務(wù)器的。在本發(fā)明的一個(gè)示例中,當(dāng)所述客戶端存在需要同步的數(shù)據(jù)且所述同步的數(shù)據(jù)超過預(yù)定閥值時(shí),執(zhí)行步驟S230,客戶端按預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)將數(shù)據(jù)進(jìn)行分解,然后分批次發(fā)送給服務(wù)器。例如:預(yù)定分解標(biāo)準(zhǔn)可以是當(dāng)所述客戶端存在的需要同步的數(shù)據(jù)量超過N條時(shí),則將所述客戶端存在的需要同步的數(shù)據(jù)分成多批分別進(jìn)行同步,每批數(shù)據(jù)量不超過N條。在步驟S240中,服務(wù)器接收客戶端發(fā)送的數(shù)據(jù),并根據(jù)客戶端的當(dāng)前同步錨和服務(wù)器的當(dāng)前同步錨確定客戶端與服務(wù)器之間的差集數(shù)據(jù)。接著,在步驟S250中,服務(wù)器更新服務(wù)器的當(dāng)前同步錨,并將服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端。其中,步驟S250中,服務(wù)器接收客戶端發(fā)送的數(shù)據(jù)后,利用客戶端發(fā)送的數(shù)據(jù)對服務(wù)器中的數(shù)據(jù)進(jìn)行更新同步,在服務(wù)器更新服務(wù)器的當(dāng)前同步錨的過程中,服務(wù)器每次從客戶端接收一批數(shù)據(jù)并利用這批數(shù)據(jù)完成數(shù)據(jù)更新,服務(wù)器以同步錨遞增的方式更新服務(wù)器的當(dāng)前同步錨。然后服務(wù)器將服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端??蛻舳私邮辗?wù)器的發(fā)送的當(dāng)前同步錨作為客戶端的當(dāng)前同步錨進(jìn)行更新。也就是說,服務(wù)器每次更新完當(dāng)前的同步錨后,都會把自己的當(dāng)前同步錨下發(fā)給客戶端,客戶端就會更新自己的當(dāng)前同步錨為服務(wù)器下發(fā)的同步錨,在每完成一批同步時(shí),客戶端都會將自己的當(dāng)前同步錨更新為跟服務(wù)器的當(dāng)前同步錨一致。需要說明的是,即使客戶端和服務(wù)器的當(dāng)前同步錨一致,也不能意味著同步過程的結(jié)束,因?yàn)橛锌赡芸蛻舳诉€有需要同步的數(shù)據(jù)要發(fā)給服務(wù)器。在步驟S260中,當(dāng)差集數(shù)據(jù)超過預(yù)定閥值時(shí),服務(wù)器根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對差集數(shù)據(jù)進(jìn)行分解,然后分批將所分解的差集數(shù)據(jù)發(fā)送給客戶端進(jìn)行同步。其中,在服務(wù)器分批將所分解的差集數(shù)據(jù)和服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端進(jìn)行同步的過程中,服務(wù)器在客戶端的當(dāng)前同步錨和服務(wù)器的當(dāng)前同步錨之間確定中間同步錨;服務(wù)器將客戶端的當(dāng)前同步錨和中間同步錨之間的差集數(shù)據(jù)和中間同步錨發(fā)送給客戶端;客戶端接收服務(wù)器發(fā)送的差集數(shù)據(jù)并將中間同步錨作為客戶端的當(dāng)前同步錨。在步驟S270中,客戶端接收服務(wù)器發(fā)送的差集數(shù)據(jù)并更新客戶端的當(dāng)前同步錨。作為本發(fā)明的一個(gè)示例,客戶端的當(dāng)前同步錨為2,服務(wù)器的當(dāng)前同步錨為4,說明服務(wù)器有數(shù)據(jù)需要同步到客戶端,假設(shè)客戶端當(dāng)前沒有數(shù)據(jù)要同步到服務(wù)器,則在步驟S240中,服務(wù)器計(jì)算客戶端的當(dāng)前同步錨2和服務(wù)器的當(dāng)前同步錨4之間有5條差集數(shù)據(jù),預(yù)定分解標(biāo)準(zhǔn)是每批同步數(shù)據(jù)不超過3條。則分2次同步,取中間同步錨為3,當(dāng)?shù)谝淮瓮酵瓿芍?,服?wù)器給客戶端下發(fā)中間同步錨3,客戶端的當(dāng)前同步錨就變成3;當(dāng)?shù)诙瓮酵瓿珊?,客戶端的?dāng)前同步錨就為4。此時(shí),客戶端和服務(wù)器的當(dāng)前同步錨一樣,表明此次同步完成。需要說明的是,客戶端和服務(wù)器是當(dāng)他們有數(shù)據(jù)需要同步并且需要同步的數(shù)據(jù)都達(dá)到一定數(shù)量時(shí)才需要都進(jìn)行分解并同步的。也就是說,當(dāng)客戶端或者服務(wù)器有數(shù)據(jù)需要同步,并且需要同步的數(shù)據(jù)超過預(yù)定的閥值時(shí),才對需要同步的數(shù)據(jù)進(jìn)行分解,然后分批發(fā)送。實(shí)際的情況中,有的是一方有數(shù)據(jù)需要同步分解,而另一方則沒有數(shù)據(jù)需要同步分解;有的是兩方都有數(shù)據(jù)需要同步分解。另外需要說明的是,如果兩方都有數(shù)據(jù)需要同步分解時(shí),當(dāng)客戶端向服務(wù)器發(fā)送同步數(shù)據(jù)后,服務(wù)器更新服務(wù)器的當(dāng)前同步錨,然后服務(wù)器確認(rèn)客戶端與服務(wù)器之間的差集數(shù)據(jù),然后分批將差集數(shù)據(jù)和中間同步錨發(fā)送給客戶端,客戶端根據(jù)服務(wù)器下發(fā)的同步錨更新客戶端的當(dāng)前同步錨。由于客戶端向服務(wù)器同步數(shù)據(jù)時(shí),首先將要同步的數(shù)據(jù)生成數(shù)據(jù)包,然后再將生成的數(shù)據(jù)包發(fā)送給服務(wù)器。因此,當(dāng)客戶端在生成數(shù)據(jù)包的過程中發(fā)現(xiàn)需要同步的數(shù)據(jù)太多時(shí),客戶端就會根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對將要同步的數(shù)據(jù)進(jìn)行分解,然后分批次發(fā)送給服務(wù)器。由于每完成一次同步,服務(wù)器都會更新服務(wù)器的當(dāng)前同步錨,并且服務(wù)器也會將服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端,以作為客戶端的當(dāng)前同步錨。也就是說當(dāng)客戶端每批的數(shù)據(jù)與服務(wù)器同步成功時(shí),服務(wù)器都會將服務(wù)器的當(dāng)前同步錨遞增,這樣就可以確保服務(wù)器上每一個(gè)同步錨間隔的數(shù)據(jù)不會太多。其中,在服務(wù)器分批將差集數(shù)據(jù)發(fā)送給客戶端進(jìn)行同步的過程中,如果服務(wù)器在本批次數(shù)據(jù)發(fā)送完成后,還有其他分解過程待同步,則服務(wù)器在客戶端發(fā)送本批次數(shù)據(jù)的同時(shí),服務(wù)器還會將有其他分解過程待同步的消息發(fā)送給客戶端。在客戶端向服務(wù)器發(fā)送數(shù)據(jù)時(shí),服務(wù)器也會向客戶端下發(fā)服務(wù)器與客戶端之間的差集數(shù)據(jù)。當(dāng)服務(wù)器向客戶端下發(fā)差集數(shù)據(jù)時(shí),首先會將差集數(shù)據(jù)生成數(shù)據(jù)包,然后再將生成的數(shù)據(jù)包下發(fā)給客戶端。因此,當(dāng)服務(wù)器在生成差集數(shù)據(jù)包的過程中發(fā)現(xiàn)服務(wù)器與客戶端之間的差集數(shù)據(jù)太多時(shí),服務(wù)器就會根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)在客戶端的當(dāng)前同步錨和服務(wù)器的當(dāng)前同步錨之間確定中間同步錨,服務(wù)器在此次同步過程中向客戶端下發(fā)的差集數(shù)據(jù)則為客戶端的當(dāng)前同步錨和中間同步錨之間的差集數(shù)據(jù),然后服務(wù)器將中間同步錨發(fā)送給客戶端,并返回同步結(jié)果給客戶端??蛻舳嗽诮邮盏椒?wù)器的同步返回結(jié)果和中間同步錨之后,將中間同步錨作為客戶端的當(dāng)前同步錨,當(dāng)客戶端接收到返回結(jié)果為有后續(xù)數(shù)據(jù)等待同步時(shí)將再一次向服務(wù)器發(fā)起同步請求,直到服務(wù)器與客戶端的當(dāng)前同步錨一致時(shí),也就表示服務(wù)器與客戶端之間的數(shù)據(jù)一致了。具體地,下面將以一個(gè)具體地示例對本發(fā)明提供的數(shù)據(jù)的分解同步過程進(jìn)行詳細(xì)地說明。假設(shè)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)為3條數(shù)據(jù),也就是說當(dāng)客戶端發(fā)現(xiàn)要同步的數(shù)據(jù)超過3條時(shí),客戶端就會以每3條數(shù)據(jù)為一個(gè)數(shù)據(jù)包進(jìn)行打包并發(fā)送給服務(wù)器。假設(shè)用戶當(dāng)前從來沒有與服務(wù)器進(jìn)行過數(shù)據(jù)同步,用戶想要用客戶端1的數(shù)據(jù)與服務(wù)器進(jìn)行同步,而此時(shí)服務(wù)器暫時(shí)沒有用戶的數(shù)據(jù),,客戶端1之前也沒有與服務(wù)器進(jìn)行同步過,也就是說客戶端1與服務(wù)器的當(dāng)前同步錨都為0。假設(shè)目前客戶端1下待同步的數(shù)據(jù)如下表1所示:luidguiddatasfp1hello2GDW8g2FkDH32aaiuwLYhkN2hi166Fe42odlADP0sg41H4B173good3XFTqM2P6f6h2HHqca3yRoNv4ok3VYxYz1hNSc12w8quj14KQ7i5nice2sq8p23ly8IkklvA143vx5a表1其中,luid為數(shù)據(jù)在客戶端的編號;guid為數(shù)據(jù)在服務(wù)器的編號;datas為數(shù)據(jù)內(nèi)容;fp為數(shù)據(jù)的指紋。這時(shí),客戶端在向服務(wù)器發(fā)起同步請求時(shí),發(fā)現(xiàn)有5條數(shù)據(jù)要同步,根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn),可以將這5條數(shù)據(jù)分為兩個(gè)批次發(fā)送給服務(wù)器。為了詳細(xì)地說明本發(fā)明提供的客戶端的同步分解過程,圖3-1示出了根據(jù)本發(fā)明實(shí)施例的客戶端1第一次同步分解過程交互流程圖。如圖3-1所示:package1:客戶端1將客戶端的當(dāng)前同步錨0發(fā)送給服務(wù)器請求同步;package2:服務(wù)器接收客戶端的當(dāng)前同步錨信息并向客戶端1確認(rèn)同步請求;package3:客戶端1將本批次luid為1,2,3的數(shù)據(jù)發(fā)送給服務(wù)器;package4:服務(wù)器處理客戶端1發(fā)送過來的同步數(shù)據(jù),由于客戶端1與服務(wù)器的當(dāng)前同步錨都為0,因此沒有差集數(shù)據(jù)下發(fā)給客戶端1;package5:客戶端1將對應(yīng)的luid和guid的關(guān)系上傳到服務(wù)器;package6:服務(wù)器將當(dāng)前的同步錨變?yōu)?,服務(wù)器確認(rèn)客戶端1的操作結(jié)果并記錄映射關(guān)系,然后將同步的結(jié)果和服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端1,客戶端將自己的當(dāng)前同步錨變?yōu)?,完成本批次的數(shù)據(jù)同步。當(dāng)完成此次同步分解過程后,服務(wù)器的當(dāng)前同步錨為1,服務(wù)器的數(shù)據(jù)如表2所示:guiddatasfpGuid1hello2GDW8g2FkDH32aaiuwLYhkNGuid2hi166Fe42odlADP0sg41H4B17Guid3good3XFTqM2P6f6h2HHqca3yRoNv表2由表2可以看出,此次同步分解過程完成了對客戶端1前3條數(shù)據(jù)的同步。當(dāng)?shù)谝淮瓮椒纸膺^程完成時(shí),客戶端1當(dāng)前的同步錨也變?yōu)榱?,此時(shí)客戶端1的數(shù)據(jù)如表3所示:luidguiddatasfp1Guid1hello2GDW8g2FkDH32aaiuwLYhkN2Guid2hi166Fe42odlADP0sg41H4B173Guid3good3XFTqM2P6f6h2HHqca3yRoNv4ok3VYxYz1hNSc12w8quj14KQ7i5nice2sq8p23ly8IkklvA143vx5a表3由表3可以看出,經(jīng)過一次同步分解過程后,客戶端1的guid一欄就有了服務(wù)器的標(biāo)簽,而客戶端1下一次的同步分解過程將是luid為4和5的數(shù)據(jù),因?yàn)閘uid為4和5的數(shù)據(jù)都沒有服務(wù)器的標(biāo)簽,也就意味著和服務(wù)器沒有關(guān)系。為了清楚地說明客戶端1下一次的同步分解過程,圖3-2示出了根據(jù)本發(fā)明實(shí)施例的客戶端1第二次同步分解過程交互流程圖。如圖3-2所示:package1:客戶端1將客戶端的當(dāng)前同步錨發(fā)送給服務(wù)器再次請求同步;package2:服務(wù)器向客戶端1確認(rèn)同步請求;package3:客戶端1將本批次luid為4,5的數(shù)據(jù)發(fā)送給服務(wù)器;package4:服務(wù)器處理客戶端1發(fā)送過來的同步數(shù)據(jù),由于客戶端1與服務(wù)器的當(dāng)前同步錨都為1,因此沒有差集數(shù)據(jù)下發(fā)給客戶端1;package5:客戶端1將對應(yīng)的luid和guid的關(guān)系上傳到服務(wù)器;package6:服務(wù)器將當(dāng)前的同步錨變?yōu)?,服務(wù)器確認(rèn)客戶端1的操作結(jié)果并記錄映射關(guān)系,然后將同步的結(jié)果和服務(wù)器的當(dāng)前同步錨2發(fā)送給客戶端1,客戶端1將自己的當(dāng)前同步錨更新為2,完成本批次的數(shù)據(jù)同步。當(dāng)此次同步分解過程完成后,客戶端1和服務(wù)器的當(dāng)前同步錨都為2,表4和表5分別示出了此時(shí)服務(wù)器與客戶端1的數(shù)據(jù)。其中,服務(wù)器的數(shù)據(jù)如表4所示:guiddatasfpGuid1hello2GDW8g2FkDH32aaiuwLYhkNGuid2hi166Fe42odlADP0sg41H4B17Guid3good3XFTqM2P6f6h2HHqca3yRoNvGuid4ok3VYxYz1hNSc12w8quj14KQ7iGuid5nice2sq8p23ly8IkklvA143vx5a表4客戶端1的數(shù)據(jù)如表5所示:luidguiddatasfp1Guid1hello2GDW8g2FkDH32aaiuwLYhkN2Guid2hi166Fe42odlADP0sg41H4B173Guid3good3XFTqM2P6f6h2HHqca3yRoNv4Guid4ok3VYxYz1hNSc12w8quj14KQ7i5Guid5nice2sq8p23ly8IkklvA143vx5a表5通過表4和表5可以看出,經(jīng)過第二次同步分解過程后,客戶端1的全部數(shù)據(jù)都已經(jīng)同步到服務(wù)器,從而保證了客戶端1與服務(wù)器數(shù)據(jù)的一致性。示例1詳細(xì)說明了本發(fā)明提供的客戶端的同步分解過程,通過示例1可以將客戶端已有的數(shù)據(jù)與服務(wù)器進(jìn)行同步。作為本發(fā)明的另一個(gè)示例,示例2將詳細(xì)說明本發(fā)明提供的服務(wù)器的同步分解過程。在示例1的基礎(chǔ)上,假設(shè)用戶此時(shí)有一臺全新的設(shè)備作為客戶端2,那么此時(shí)客戶端2的當(dāng)前同步錨為0,數(shù)據(jù)為空,服務(wù)器的數(shù)據(jù)沿用示例1的數(shù)據(jù)。服務(wù)器之前已經(jīng)同步過用戶的數(shù)據(jù),同步錨為2。此時(shí)客戶端2向服務(wù)器發(fā)起同步請求,服務(wù)器根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)在客戶端2的當(dāng)前同步錨0和服務(wù)器的當(dāng)前同步錨2之間確定中間同步錨。同樣假設(shè)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)為每批同步不超過3條數(shù)據(jù),當(dāng)服務(wù)器發(fā)現(xiàn)客戶端與服務(wù)器的當(dāng)前同步錨之間的差集數(shù)據(jù)超過3條時(shí),服務(wù)器就會以每3條數(shù)據(jù)確定一個(gè)中間同步錨進(jìn)行打包,然后下發(fā)給客戶端2。由于服務(wù)器的數(shù)據(jù)沿用的是示例1的數(shù)據(jù),也就是說服務(wù)器此時(shí)的數(shù)據(jù)如表4所示,根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn),將這5條數(shù)據(jù)以每3條數(shù)據(jù)確定一個(gè)中間同步錨,然后下發(fā)給客戶端2。為了詳細(xì)說明本發(fā)明提供的服務(wù)器的同步分解過程,圖4-1示出了根據(jù)本發(fā)明實(shí)施例的服務(wù)器第一次同步分解過程交互流程圖。如圖4-1所示:package1:客戶端2將客戶端2的當(dāng)前同步錨0發(fā)送給服務(wù)器請求同步;package2:服務(wù)器接收客戶端2的當(dāng)前同步錨0信息并向客戶端2確認(rèn)同步請求;package3:客戶端2沒有同步的數(shù)據(jù)發(fā)送給服務(wù)器;package4:由于此時(shí)客戶端2的當(dāng)前同步錨為0,而服務(wù)器的當(dāng)前同步錨為2,在0-2之間的數(shù)據(jù)有g(shù)uid1、guid2、guid3、guid4和guid5,因此服務(wù)器在客戶端2與服務(wù)器的當(dāng)前同步錨之間確定1為中間同步錨,此時(shí)服務(wù)器向客戶端2下發(fā)的差集數(shù)據(jù)就變?yōu)榱送藉^0-1之間的數(shù)據(jù);package5:客戶端2將對應(yīng)的luid和guid的關(guān)系上傳到服務(wù)器;package6:服務(wù)器將中間同步錨1和有后續(xù)數(shù)據(jù)等待同步的同步結(jié)果發(fā)送給客戶端2,客戶端2將自己的當(dāng)前同步錨更新為1,完成本次的數(shù)據(jù)同步。當(dāng)完成這次同步后,客戶端2當(dāng)前的同步錨為1,而服務(wù)器的當(dāng)前同步錨仍為2,客戶端2經(jīng)過本次同步后的數(shù)據(jù)如表6所示:luidguiddatasfp1Guid1hello2GDW8g2FkDH32aaiuwLYhkN2Guid2hi166Fe42odlADP0sg41H4B173Guid3good3XFTqM2P6f6h2HHqca3yRoNv表6由表6可以看出,客戶端2此時(shí)與服務(wù)器完成了guid為guid1、guid2和guid3的數(shù)據(jù)同步。由于客戶端2在package6中收到的同步結(jié)果是“有后續(xù)數(shù)據(jù)等待同步”,因此客戶端2在完成與服務(wù)器第一次同步分解過程后,將再次向服務(wù)器發(fā)起同步請求。圖4-2示出了根據(jù)本發(fā)明實(shí)施例的服務(wù)器第二次同步分解過程交互流程圖。如圖4-2所示:package1:客戶端2將客戶端的當(dāng)前同步錨1發(fā)送給服務(wù)器再次請求同步;package2:服務(wù)器接收客戶端2的當(dāng)前同步錨1信息并向客戶端確認(rèn)同步請求;package3:客戶端沒有同步的數(shù)據(jù)發(fā)送給服務(wù)器;package4:由于此時(shí)客戶端的當(dāng)前同步錨為1,而服務(wù)器的當(dāng)前同步錨為2,在1-2之間的數(shù)據(jù)有g(shù)uid4和guid5,沒有達(dá)到預(yù)定的數(shù)據(jù)分解標(biāo)準(zhǔn),因此不需要將數(shù)據(jù)進(jìn)行分解,此時(shí)服務(wù)器向客戶端下發(fā)的差集數(shù)據(jù)就為同步錨1-2之間的差集數(shù)據(jù),也就是guid為guid4和guid5的數(shù)據(jù);package5:客戶端將對應(yīng)的luid和guid的關(guān)系上傳到服務(wù)器;package6:由于沒有數(shù)據(jù)分解,也就沒有中間同步錨,因此服務(wù)器將當(dāng)前的同步錨發(fā)送給客戶端作為客戶端的當(dāng)前同步錨并將同步成功的結(jié)果發(fā)送給客戶端,客戶端2將自己的當(dāng)前同步錨更新為2,完成本次的數(shù)據(jù)同步。當(dāng)完成此次同步后,客戶端的數(shù)據(jù)如表7所示:luidguiddatasfp1Guid1hello2GDW8g2FkDH32aaiuwLYhkN2Guid2hi166Fe42odlADP0sg41H4B173Guid3good3XFTqM2P6f6h2HHqca3yRoNv4Guid4ok3VYxYz1hNSc12w8quj14KQ7i5Guid5nice2sq8p23ly8IkklvA143vx5a表7由表7可以看出,通過服務(wù)器第二次同步分解過程后,客戶端和服務(wù)器的當(dāng)前同步錨都為2,并且同時(shí)根據(jù)服務(wù)器在package6中發(fā)送給客戶端2的同步結(jié)果中可以知道整個(gè)同步流程都完成了,因此客戶端與服務(wù)器的數(shù)據(jù)也就一致了。與上述方法相對應(yīng),本發(fā)明還提供一種數(shù)據(jù)的分解同步系統(tǒng),圖5示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)的分解同步系統(tǒng)方框示意圖。如圖5所示,本發(fā)明提供的數(shù)據(jù)的分解同步系統(tǒng)500包括同步請求單元510、同步確認(rèn)單元520、客戶端數(shù)據(jù)分解單元530、服務(wù)器接收單元540、差集數(shù)據(jù)確定單元550、同步錨更新單元560、差集數(shù)據(jù)發(fā)送單元570和客戶端接收單元580。其中,同步請求單元510用于客戶端向服務(wù)器發(fā)送同步請求以及客戶端的當(dāng)前同步錨;同步確認(rèn)單元520用于服務(wù)器確認(rèn)客戶端的同步請求并接收客戶端的當(dāng)前同步錨;客戶端數(shù)據(jù)分解單元530用于當(dāng)客戶端存在需要同步的數(shù)據(jù)且該同步的數(shù)據(jù)超過預(yù)定閥值時(shí),客戶端根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對需要同步的數(shù)據(jù)進(jìn)行分解,然后分批將所分解的數(shù)據(jù)發(fā)送給服務(wù)器進(jìn)行同步;服務(wù)器接收單元540用于服務(wù)器接收客戶端發(fā)送的數(shù)據(jù);差集數(shù)據(jù)確定單元550用于服務(wù)器根據(jù)客戶端的當(dāng)前同步錨和服務(wù)器的當(dāng)前同步錨確定客戶端與服務(wù)器之間的差集數(shù)據(jù);同步錨更新單元560用于服務(wù)器更新服務(wù)器的當(dāng)前同步錨并將服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端;差集數(shù)據(jù)發(fā)送單元570用于當(dāng)差集數(shù)據(jù)超過預(yù)定閥值時(shí),服務(wù)器根據(jù)預(yù)先設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn)對差集數(shù)據(jù)進(jìn)行分解,然后分批將所分解的差集數(shù)據(jù)發(fā)送給客戶端進(jìn)行同步;客戶端接收單元580用于客戶端接收服務(wù)器發(fā)送的差集數(shù)據(jù)并更新客戶端的當(dāng)前同步錨。其中,同步錨更新單元560在服務(wù)器更新服務(wù)器的當(dāng)前同步錨的過程中,服務(wù)器每完成一次有數(shù)據(jù)變化的同步,服務(wù)器以同步錨遞增的方式更新服務(wù)器的當(dāng)前同步錨,然后服務(wù)器將服務(wù)器的當(dāng)前同步錨發(fā)送給客戶端,客戶端將服務(wù)器的當(dāng)前同步錨作為客戶端的當(dāng)前同步錨進(jìn)行更新。另外,差集數(shù)據(jù)發(fā)送單元570進(jìn)一步包括中間同步錨確定單元(圖中未示出),用于在服務(wù)器分批將所分解的差集數(shù)據(jù)發(fā)送給客戶端的過程中,服務(wù)器在客戶端的當(dāng)前同步錨和服務(wù)器的當(dāng)前的同步錨之間確定中間同步錨,服務(wù)器將客戶端的當(dāng)前同步錨和中間同步錨之間的差集數(shù)據(jù)和中間同步錨發(fā)送給客戶端,然后客戶端接收服務(wù)器發(fā)送的差集數(shù)據(jù)并將中間同步錨作為客戶端的當(dāng)前同步錨。本發(fā)明提供的數(shù)據(jù)的分解同步方法及系統(tǒng),在一次同步過程中,客戶端或者服務(wù)器端都可以根據(jù)設(shè)定的數(shù)據(jù)分解標(biāo)準(zhǔn),合理的將原來需要一次同步的過程分解過程為多個(gè)細(xì)小的同步過程。由于每一次的同步過程都被分解得比較細(xì),數(shù)據(jù)粒度變小了,因此用戶在同步操作上也更具有操作性和可控性。如上參照附圖以示例的方式描述了根據(jù)本發(fā)明的數(shù)據(jù)的分解同步方法及系統(tǒng)。但是,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,對于上述本發(fā)明所提出的數(shù)據(jù)的分解同步方法及系統(tǒng),還可以在不脫離本發(fā)明內(nèi)容的基礎(chǔ)上做出各種改進(jìn)。因此,本發(fā)明的保護(hù)范圍應(yīng)當(dāng)由所附的權(quán)利要求書的內(nèi)容確定。