用于使得能夠?qū)π薷臄?shù)據(jù)進(jìn)行智能合并的方法、裝置和計(jì)算機(jī)程序產(chǎn)品的制作方法
【專利摘要】一種用于智能合并沖突數(shù)據(jù)的裝置,包括處理器以及存儲(chǔ)可執(zhí)行計(jì)算機(jī)代碼的存儲(chǔ)器,該可執(zhí)行計(jì)算機(jī)代碼使得該裝置能夠至少執(zhí)行包括檢測(cè)針對(duì)數(shù)據(jù)項(xiàng)目的屬性的(多個(gè))改變的操作。該計(jì)算機(jī)程序代碼可以進(jìn)一步使得該裝置響應(yīng)于檢測(cè)到屬性有所改變而確定數(shù)據(jù)項(xiàng)目的版本以及屬性的版本或者并未改變的屬性的版本。該計(jì)算機(jī)程序代碼可以進(jìn)一步使得該裝置更新數(shù)據(jù)項(xiàng)目以指示該數(shù)據(jù)項(xiàng)目的版本、有所改變的屬性的版本以及并未改變的屬性的版本。該計(jì)算機(jī)程序代碼可以進(jìn)一步使得該裝置存儲(chǔ)更新的數(shù)據(jù)項(xiàng)目而并不存儲(chǔ)該數(shù)據(jù)的先前版本。該更新的數(shù)據(jù)項(xiàng)目在解決與其它數(shù)據(jù)的沖突時(shí)被加以利用。還提供了相對(duì)應(yīng)的方法和計(jì)算機(jī)程序產(chǎn)品。
【專利說(shuō)明】
用于使得能夠?qū)π薷臄?shù)據(jù)進(jìn)行智能合并的方法、裝置和計(jì)算 機(jī)程序產(chǎn)品
技術(shù)領(lǐng)域
[0001] 本發(fā)明的示例實(shí)施例總體上涉及到無(wú)線通信技術(shù),尤其涉及到用于對(duì)修改數(shù)據(jù)執(zhí) 行智能合并而并不必保存整個(gè)實(shí)際的歷史數(shù)據(jù)的方法、裝置和計(jì)算機(jī)程序產(chǎn)品。
【背景技術(shù)】
[0002] 現(xiàn)代通信時(shí)代已經(jīng)帶來(lái)了有線和無(wú)線網(wǎng)絡(luò)的迅猛發(fā)展。計(jì)算機(jī)網(wǎng)絡(luò)、電視網(wǎng)絡(luò)和 電話網(wǎng)絡(luò)在消費(fèi)者需求的激勵(lì)下正在經(jīng)歷著前所未有的技術(shù)發(fā)展。無(wú)線和移動(dòng)網(wǎng)絡(luò)技術(shù)已 經(jīng)解決了相關(guān)的消費(fèi)者需求,同時(shí)為信息傳輸提供了更大的靈活性和快捷性。
[0003] 當(dāng)前和未來(lái)的網(wǎng)絡(luò)技術(shù)繼續(xù)促進(jìn)著信息傳輸?shù)谋憷陀脩舻谋憬荨S捎陔娮油ㄐ?設(shè)備目前普遍存在的屬性,所有年齡和教育水平的人都在利用電子設(shè)備與其它個(gè)人或聯(lián)系 人進(jìn)行通信,接收服務(wù)和/或共享信息、媒體以及其它內(nèi)容。需要增加信息傳輸便利性的一 個(gè)領(lǐng)域涉及到通信設(shè)備上的數(shù)據(jù)同步。
[0004] 目前,許多設(shè)備經(jīng)常并未以任何適當(dāng)?shù)姆绞竭M(jìn)行整合。相反,設(shè)備上的數(shù)據(jù)對(duì)于該 特定通信設(shè)備而言可能是本地的,并且如果具體設(shè)備上的用戶需要位于另一個(gè)設(shè)備上的數(shù) 據(jù),該用戶通常必須費(fèi)力地將數(shù)據(jù)復(fù)制到該具體設(shè)備上。在其中數(shù)據(jù)為可編輯的情況下,可 能會(huì)同時(shí)出現(xiàn)數(shù)據(jù)管理的問(wèn)題。
[0005] 針對(duì)該問(wèn)題的一種解決方案是數(shù)據(jù)不僅留存在任何特定設(shè)備上,而且還留存在其 中每個(gè)設(shè)備都能夠?qū)υ摂?shù)據(jù)進(jìn)行訪問(wèn)的云端。通過(guò)將數(shù)據(jù)置于云端,這使得所有數(shù)據(jù)都能 夠被所有設(shè)備所使用并且還可以解決以上所提到的數(shù)據(jù)管理問(wèn)題。這種方法所具有的問(wèn)題 或缺陷在于,除非設(shè)備具有連續(xù)不中斷的連接一這在實(shí)踐中是難以實(shí)現(xiàn)的,特別是在移動(dòng) 設(shè)備的情況下一否則可能出現(xiàn)該設(shè)備表現(xiàn)為無(wú)法使用的時(shí)刻。
[0006] 另一種解決方案是使用復(fù)制將所有數(shù)據(jù)存儲(chǔ)在所有設(shè)備上并且保持童心設(shè)備同 步。例如,在簡(jiǎn)單的主控方復(fù)制中,存在有所有其它節(jié)點(diǎn)都與之進(jìn)行復(fù)制的單個(gè)節(jié)點(diǎn)。然而, 單主控方復(fù)制受到與基于云端的解決方案的相同弱點(diǎn)的影響。例如,如果主控方節(jié)點(diǎn)無(wú)法 訪問(wèn),則每個(gè)設(shè)備都變得孤立。然而,由于大多數(shù)數(shù)據(jù)都能夠在每個(gè)設(shè)備上獲取,所以它們 仍然可以被使用。在多主控方復(fù)制中,任意節(jié)點(diǎn)可以與任意其它節(jié)點(diǎn)進(jìn)行復(fù)制,這對(duì)于連接 減少的問(wèn)題更具彈性。
[0007] 對(duì)于消費(fèi)者而言,最佳的解決方案可能是看上去就像該消費(fèi)者的所有設(shè)備都始終 包含該消費(fèi)者的所有數(shù)據(jù)。該解決方案可以通過(guò)將所有數(shù)據(jù)保持在所有設(shè)備上并且定期將 設(shè)備互相同步而創(chuàng)建并維護(hù)。
[0008] 多主控方復(fù)制所存在的問(wèn)題在于,由于數(shù)據(jù)不僅在多個(gè)地方留存而且還進(jìn)行修 改,所以偶爾可能會(huì)出現(xiàn)沖突,因?yàn)閿?shù)據(jù)可能同時(shí)在兩個(gè)不同地方被修改。當(dāng)數(shù)據(jù)被復(fù)制 時(shí),該沖突應(yīng)當(dāng)被檢測(cè)并以適當(dāng)方式予以處理。
[0009] 針對(duì)該問(wèn)題的一種方法是使用一些允許檢測(cè)沖突的機(jī)制,并且一旦檢測(cè)到?jīng)_突, 就例如決定性地確定沖突文檔中的"勝方(winner)",并且選擇該勝方文檔且刪除敗方 (loser)文檔。就此而言,例如,如果兩個(gè)不同設(shè)備遇到完全相同的沖突文檔,它們都將會(huì)決 定性地選擇相同的勝方。該方法的好處在于其簡(jiǎn)單而且還使得存儲(chǔ)需求最小化。
[0010] 然而,該方法所存在的問(wèn)題在于,不同于簡(jiǎn)單地挑選勝方,如果需要將來(lái)自兩個(gè)沖 突文檔的數(shù)據(jù)進(jìn)行合并,其通常難以實(shí)現(xiàn),因?yàn)樵谝话闱闆r下并不知道每個(gè)文檔版本的哪 些確切屬性已經(jīng)發(fā)生了變化。例如,考慮以下的示例文檔。 var contact = {
[0011] flrstName: "Joh", lastName: "Do"
[0012] };
[0013] 進(jìn)一步考慮該文檔處于一個(gè)設(shè)備上并且被改變?yōu)橐韵挛臋n。 var contact = { first:!Name: "John",.
[0014] lastIName: "Do" };
[0015]此外,考慮該文檔在另一個(gè)設(shè)備上被改變?yōu)橐韵挛臋n。 var contact = { firstName.: ."Joh:",
[0016] lastName: ":D.o.e".
[0017] 就此而言,在復(fù)制的時(shí)候可能出現(xiàn)沖突。這樣,在其中應(yīng)當(dāng)解決沖突的情況下,一 般并不知道哪些屬性已經(jīng)在哪里發(fā)生了改變,并且因此設(shè)備例如可能無(wú)法自動(dòng)選擇來(lái)自一 個(gè)文檔的"John"作為f irstName而來(lái)自其它文檔的"Doe"作為lastName,而這無(wú)疑才會(huì)反映 用戶的意圖。
[0018] 目前,為了能夠以智能的方式對(duì)文檔進(jìn)行合并,通常需要保存直至最近的共同祖 先的歷史。以這種方式,可能找出哪些在哪里已經(jīng)發(fā)生了變化并且自動(dòng)合并文檔。再次考慮 以上的示例。如果有權(quán)訪問(wèn)原始文檔,貝可以推斷出f irstName在一個(gè)設(shè)備上有所改變而 lastName在另一個(gè)設(shè)備上有所改變,并且因此以有意義的方式將它們進(jìn)行合并并且最終如 下結(jié)束。 var contact = { first Name: "John",
[0019] lastName: "Doe" };
[0020] 然而,存在著與保存歷史(例如,整個(gè)歷史)相關(guān)的很多問(wèn)題。例如,保留歷史在存 儲(chǔ)方面是非常昂貴的,因?yàn)橥ǔP枰獙?duì)參與復(fù)制網(wǎng)絡(luò)的所有設(shè)備配對(duì)的最為共同的祖先加 以保存。
[0021] 除此之外,目前,決定何時(shí)可以刪除歷史或者其中的一部分通常是非常重要的。除 非采取明確的措施,否則一個(gè)復(fù)制節(jié)點(diǎn)的永久消亡意味著歷史可能永遠(yuǎn)被刪除。
[0022] 考慮到上述曲線,提供一種有效且可靠的合并修改數(shù)據(jù)而不必保存所有相對(duì)應(yīng)的 歷史數(shù)據(jù)的機(jī)制。
【發(fā)明內(nèi)容】
[0023] 因此,提供了用于使得能夠執(zhí)行修改/沖突數(shù)據(jù)的智能合并而不必保存整個(gè)實(shí)際 的歷史數(shù)據(jù)的方法、裝置和計(jì)算機(jī)程序產(chǎn)品。就此而言,示例實(shí)施例可以提供一種使得能夠 以保存來(lái)自(多個(gè))數(shù)據(jù)項(xiàng)目(例如,文檔)的兩個(gè)版本的最近改變的方式自動(dòng)合并該(多個(gè)) 數(shù)據(jù)項(xiàng)目的架構(gòu),上述數(shù)據(jù)項(xiàng)目已經(jīng)同時(shí)在不同通信設(shè)備上被修改。
[0024]作為先決條件,數(shù)據(jù)項(xiàng)目(例如,文檔)可以以允許檢測(cè)到數(shù)據(jù)中的沖突的方式而 被設(shè)置以版本。在其中(多個(gè))數(shù)據(jù)項(xiàng)目(例如,文檔)的屬性發(fā)生改變的情況下,示例實(shí)施例 可以在其中特定屬性被修改的情況下在該(多個(gè))數(shù)據(jù)項(xiàng)目(例如,文檔)自身中存儲(chǔ)指示該 (多個(gè))數(shù)據(jù)項(xiàng)目的版本的信息。如以下更為全面描述的,在其中特定屬性被修改的情況下 指示該(多個(gè))數(shù)據(jù)項(xiàng)目的版本使得能夠執(zhí)行沖突信息的智能合并,而不必保存與該數(shù)據(jù)項(xiàng) 目相關(guān)聯(lián)的實(shí)際的整個(gè)歷史信息并且不要求用戶交互來(lái)解決該沖突信息。
[0025] 在一個(gè)示例實(shí)施例中,提供了一種使得能夠進(jìn)行沖突數(shù)據(jù)的智能合并的方法。該 方法可以包括檢測(cè)針對(duì)存儲(chǔ)在通信設(shè)備上的數(shù)據(jù)項(xiàng)目的至少一個(gè)屬性的至少一種改變。該 方法可以進(jìn)一步包括響應(yīng)于檢測(cè)到屬性有所改變而確定該數(shù)據(jù)項(xiàng)目的版本以及該至少一 個(gè)屬性的版本或者該數(shù)據(jù)項(xiàng)目中并未改變的一個(gè)或多個(gè)屬性的一個(gè)或多個(gè)版本。該方法可 以進(jìn)一步包括更新該數(shù)據(jù)項(xiàng)目以包括指示該數(shù)據(jù)項(xiàng)目的版本、該至少一個(gè)屬性的版本以及 并未改變的屬性的版本的標(biāo)記。該方法可以進(jìn)一步包括使得能夠?qū)⒏碌臄?shù)據(jù)項(xiàng)目存儲(chǔ)在 該通信設(shè)備上而并不存儲(chǔ)該數(shù)據(jù)項(xiàng)目的一個(gè)或多個(gè)先前版本。該更新的數(shù)據(jù)項(xiàng)目被配置為 在解決對(duì)應(yīng)于該數(shù)據(jù)項(xiàng)目的另一個(gè)數(shù)據(jù)項(xiàng)目中的沖突數(shù)據(jù)時(shí)被加以利用。
[0026] 在另一個(gè)示例實(shí)施例中,提供了一種用于使得能夠?qū)_突數(shù)據(jù)進(jìn)行智能合并的裝 置。該裝置可以包括處理器和包括計(jì)算機(jī)程序代碼的存儲(chǔ)器。該存儲(chǔ)器和該計(jì)算機(jī)程序代 碼被配置為利用該處理器而使得該裝置至少執(zhí)行包括檢測(cè)針對(duì)存儲(chǔ)在通信設(shè)備上的數(shù)據(jù) 項(xiàng)目的至少一個(gè)屬性的至少一種改變的操作。該存儲(chǔ)器和該計(jì)算機(jī)程序代碼進(jìn)一步被配置 為利用該處理器而使得該裝置響應(yīng)于檢測(cè)到屬性有所改變而確定該數(shù)據(jù)項(xiàng)目的版本以及 該至少一個(gè)屬性的版本或者該數(shù)據(jù)項(xiàng)目中并未改變的一個(gè)或多個(gè)屬性的一個(gè)或多個(gè)版本。 該存儲(chǔ)器和該計(jì)算機(jī)程序代碼進(jìn)一步被配置為利用該處理器而使得該裝置更新該數(shù)據(jù)項(xiàng) 目以包括指示該數(shù)據(jù)項(xiàng)目的版本、該至少一個(gè)屬性的版本以及并未改變的屬性的版本的標(biāo) 記。該存儲(chǔ)器和該計(jì)算機(jī)程序代碼進(jìn)一步被配置為利用該處理器而使得該裝置使得能夠?qū)?更新的數(shù)據(jù)項(xiàng)目存儲(chǔ)在該通信設(shè)備上而并不存儲(chǔ)該數(shù)據(jù)項(xiàng)目的一個(gè)或多個(gè)先前版本。該更 新的數(shù)據(jù)項(xiàng)目被配置為在解決對(duì)應(yīng)于該數(shù)據(jù)項(xiàng)目的另一個(gè)數(shù)據(jù)項(xiàng)目中的沖突數(shù)據(jù)時(shí)被加 以利用。
[0027] 在另一個(gè)示例實(shí)施例中,提供了一種用于使得能夠?qū)_突數(shù)據(jù)進(jìn)行智能合并的計(jì) 算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品包括至少一個(gè)具有存儲(chǔ)于其中的計(jì)算機(jī)可執(zhí)行程序代碼 指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。該計(jì)算機(jī)可執(zhí)行程序代碼指令包括被配置為檢測(cè)針對(duì)存儲(chǔ)在 通信設(shè)備上的數(shù)據(jù)項(xiàng)目的至少一個(gè)屬性的至少一種改變的程序代碼指令。該程序代碼指令 還被配置為響應(yīng)于檢測(cè)到屬性有所改變而確定該數(shù)據(jù)項(xiàng)目的版本以及該至少一個(gè)屬性的 版本或者該數(shù)據(jù)項(xiàng)目中并未改變的一個(gè)或多個(gè)屬性的一個(gè)或多個(gè)版本。該程序代碼指令還 被配置為更新該數(shù)據(jù)項(xiàng)目以包括指示該數(shù)據(jù)項(xiàng)目的版本、該至少一個(gè)屬性的版本以及并未 改變的屬性的版本的標(biāo)記。該程序代碼指令還被配置為使得能夠?qū)⒏碌臄?shù)據(jù)項(xiàng)目存儲(chǔ)在 該通信設(shè)備上而并不存儲(chǔ)該數(shù)據(jù)項(xiàng)目的一個(gè)或多個(gè)先前版本。該更新的數(shù)據(jù)項(xiàng)目被配置為 在解決對(duì)應(yīng)于該數(shù)據(jù)項(xiàng)目的另一個(gè)數(shù)據(jù)項(xiàng)目中的沖突數(shù)據(jù)時(shí)被加以利用。
【附圖說(shuō)明】
[0028] 因此已經(jīng)在總體上對(duì)本發(fā)明進(jìn)行了描述,現(xiàn)在將對(duì)附圖加以參考,其并非依比例 進(jìn)行繪制,并且其中:
[0029] 圖1是根據(jù)本發(fā)明的示例實(shí)施例的系統(tǒng)的示意性框圖;
[0030] 圖2是根據(jù)本發(fā)明的示例實(shí)施例的裝置的示意性框圖;
[0031] 圖3是根據(jù)本發(fā)明的不例實(shí)施例的系統(tǒng)的框圖;和
[0032]圖4圖示了根據(jù)本發(fā)明的示例實(shí)施例的使得能夠執(zhí)行沖突數(shù)據(jù)的智能合并的流程 圖。
【具體實(shí)施方式】
[0033] 現(xiàn)在將參考附圖對(duì)本發(fā)明的一些實(shí)施例進(jìn)行更為全面地描述,附圖中示出了本發(fā) 明的一些而非全部實(shí)施例。實(shí)際上,本發(fā)明的各個(gè)實(shí)施例可以以許多不同方式來(lái)實(shí)現(xiàn),而并 不應(yīng)當(dāng)被理解為局限于這里所給出的實(shí)施例。相同的附圖標(biāo)記通篇指代相同要素。如這里 所使用的,術(shù)語(yǔ)"數(shù)據(jù)"、"內(nèi)容"、"信息"以及類似術(shù)語(yǔ)可以互換使用以指代能夠依據(jù)本發(fā)明 的實(shí)施例而被傳送、接收和/或存儲(chǔ)的數(shù)據(jù)。此外,如這里所使用的,術(shù)語(yǔ)"示例性"并非被提 供以傳遞任何量化聲明,而僅是用來(lái)傳遞示例的說(shuō)明。因此,使用這樣的術(shù)語(yǔ)并不應(yīng)當(dāng)被理 解為對(duì)本發(fā)明實(shí)施例的精神和范圍進(jìn)行限制。
[0034] 此外,如這里所使用的,術(shù)語(yǔ)"電路"是指:(a)僅硬件實(shí)現(xiàn)(例如模擬和/或數(shù)字電 路的實(shí)施方式);(b)電路和(多個(gè))計(jì)算機(jī)程序產(chǎn)品的組合,上述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ) 在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)器上一起工作以使得裝置執(zhí)行這里所描述的一個(gè)胡多個(gè)功 能的軟件和/或固件;以及(c)例如(多個(gè))微處理器或(多個(gè))微處理器的一部分的電路,其 即使在軟件或固件并不物理存在的情況下也需要軟件或固件以便進(jìn)行操作。"電路"的這個(gè) 定義應(yīng)用于這里使用該術(shù)語(yǔ)的所有情況,包括任意權(quán)利要求。作為另外的示例,如這里所使 用的,術(shù)語(yǔ)"電路"還將包括僅一個(gè)或多個(gè)處理器和/或其(多個(gè))部分以及所附軟件和/或固 件的實(shí)施方式。作為另一個(gè)示例,如這里所使用的術(shù)語(yǔ)"電路"例如還包括用于移動(dòng)電話的 基帶集成電路或應(yīng)用處理器集成電路,或者服務(wù)器、蜂窩網(wǎng)絡(luò)設(shè)備、其它網(wǎng)絡(luò)設(shè)備和/或其 它計(jì)算設(shè)備中的類似集成電路。
[0035] 如這里所定義的,指代物理存儲(chǔ)介質(zhì)(例如,易失性或非易失性存儲(chǔ)設(shè)備)的"計(jì)算 機(jī)可讀存儲(chǔ)介質(zhì)"可以與指代電磁信號(hào)的"計(jì)算機(jī)可讀傳輸介質(zhì)"有所不同。
[0036] 如這里所使用的,術(shù)語(yǔ)"復(fù)制"可以是指將相同數(shù)據(jù)存儲(chǔ)在多個(gè)設(shè)備的概念("所復(fù) 制數(shù)據(jù)")以及在兩個(gè)或多個(gè)設(shè)備之間同步數(shù)據(jù)的動(dòng)作("復(fù)制數(shù)據(jù)")。如這里所引用的,"復(fù) 制"可以被用來(lái)使得每個(gè)設(shè)備上的數(shù)據(jù)保持為最新(例如,盡量是可行且合理的)并且術(shù)語(yǔ) "復(fù)制"和"同步"可以互換使用。此外,如這里所應(yīng)用的,術(shù)語(yǔ)"復(fù)制"可以表示以使得每個(gè)設(shè) 備上的存儲(chǔ)器(例如,數(shù)據(jù)庫(kù))相同為目標(biāo)而在設(shè)備之間共享信息的處理。"復(fù)制"也可以是 異步的,這意味著不同系統(tǒng)和/或設(shè)備上的修改可以完全獨(dú)立地進(jìn)行處理并且可能的沖突 可以在后續(xù)得到解決。
[0037] 圖1圖示了示例通信環(huán)境中的總體系統(tǒng)示圖,其中諸如移動(dòng)終端10之類的設(shè)備。如 圖1所示,依據(jù)本發(fā)明的示例實(shí)施例的系統(tǒng)的實(shí)施例可以包括能夠經(jīng)由網(wǎng)絡(luò)30互相通信的 第一通信設(shè)備(例如,移動(dòng)終端10)和第二通信設(shè)備(20)。在一些情況下,本發(fā)明的實(shí)施例可 以進(jìn)一步包括一個(gè)或多個(gè)附加的通信設(shè)備,它們中的一個(gè)在圖1中被描述為第三通信設(shè)備 25。在一個(gè)實(shí)施例中,并非采用本發(fā)明實(shí)施例的所有系統(tǒng)都可以包括這里所圖示和/或描述 的所有設(shè)備。雖然移動(dòng)終端10和/或第二和第三通信設(shè)備20和25的實(shí)施例可以出于示例的 目的而被圖示并且在隨后進(jìn)行描述,但是諸如便攜式數(shù)字助理(PDA)、尋呼機(jī)、移動(dòng)電視、移 動(dòng)電話、游戲設(shè)備、膝上計(jì)算機(jī)、相機(jī)、視頻錄影機(jī)、音/視頻播放器、無(wú)線電、全球定位系統(tǒng) (GPS)設(shè)備、藍(lán)牙耳機(jī)、通用串行總線(USB)設(shè)備的其它類型的終端或者以上所提到的任意 組合以及其它類型的語(yǔ)音和文本通信系統(tǒng)能夠輕易地采用本發(fā)明的實(shí)施例,此外,諸如服 務(wù)器和個(gè)人計(jì)算機(jī)之類的并非移動(dòng)的設(shè)備也可以輕易地采用本發(fā)明的實(shí)施例。
[0038]網(wǎng)絡(luò)30可以包括可以經(jīng)由相對(duì)應(yīng)的有線和/或無(wú)線接口互相通信的各種不同節(jié)點(diǎn) (第二和第三通信設(shè)備20和25可以作為其示例)、設(shè)備或功能的集合。這樣,圖1的圖示應(yīng)當(dāng) 被理解為系統(tǒng)的某些部件的寬泛視圖的示例而并不是系統(tǒng)或網(wǎng)絡(luò)30的無(wú)所不包的或詳細(xì) 的視圖。雖然并非必然,但是在一個(gè)實(shí)施例中,網(wǎng)絡(luò)30能夠支持依據(jù)多種第一代(1G)、第二 代(2G)、2.5G、第三代(36)、3.56、3.96、第四代(46)移動(dòng)通信協(xié)議、長(zhǎng)期演進(jìn)〇^)或演進(jìn)通 用陸地?zé)o線電接入網(wǎng)絡(luò)(E-UTRAN)、自優(yōu)化/組織網(wǎng)絡(luò)(SON)、LTE內(nèi)、無(wú)線電接入技術(shù)(RAT) 間網(wǎng)絡(luò)等之中的任意一種或多種的通信。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)30可以是點(diǎn)對(duì)點(diǎn)(P2P)網(wǎng) 絡(luò)。
[0039]諸如移動(dòng)終端10以及第二和第三通信設(shè)備20和25之類的一個(gè)或多個(gè)通信終端可 以經(jīng)由網(wǎng)絡(luò)30互相通信并且均可以包括用于往來(lái)于一個(gè)或多個(gè)基點(diǎn)傳送信號(hào)以及接收信 號(hào)的一個(gè)或多個(gè)天線。該基點(diǎn)例如可以是作為一個(gè)或多個(gè)蜂窩或移動(dòng)網(wǎng)絡(luò)的一部分的一個(gè) 或多個(gè)基站(BS)或者可以耦合至數(shù)據(jù)網(wǎng)絡(luò)的一個(gè)或多個(gè)接入點(diǎn)(AP),上述數(shù)據(jù)網(wǎng)絡(luò)諸如局 域網(wǎng)(LAN)、無(wú)線局域網(wǎng)(WLAN)、城域網(wǎng)(MAN)和/或諸如互聯(lián)網(wǎng)的廣域網(wǎng)(WAN)。進(jìn)而,諸如 處理部件的其它設(shè)備(例如,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)等)可以經(jīng)由網(wǎng)絡(luò)30耦合至移動(dòng)終 端10以及第二和第三通信設(shè)備20和25。通過(guò)直接或間接地將移動(dòng)終端10以及第二和第三通 信設(shè)備20和25(和/或其它設(shè)備)連接至網(wǎng)絡(luò)30,可以使得移動(dòng)終端10以及第二和第三通信 設(shè)備20和25能夠與其它設(shè)備或互相進(jìn)行通信。例如,移動(dòng)終端10以及第二和第三通信設(shè)備 20和25以及其它設(shè)備可以根據(jù)包括超文本傳輸協(xié)議(HTTP)等的多種通信協(xié)議進(jìn)行通信,由 此分別執(zhí)行移動(dòng)終端10以及第二和第三通信設(shè)備20和25的各種通信或其它功能。
[0040] 此外,雖然圖1中并未示出,但是移動(dòng)終端10以及第二和第三通信設(shè)備20和25例如 可以依據(jù)射頻(RF)、近場(chǎng)通信(NFC)、藍(lán)牙(BT)。紅外(IR)或者任意多種不同的有線或無(wú)線 通信技術(shù)進(jìn)行通信,上述通信技術(shù)包括局域網(wǎng)(LAN)、無(wú)線LAN(WLAN)、國(guó)際微波接入互操作 性(WiMAX)、無(wú)線保真度(WiFi)、超寬帶(UWB)、Wibree技術(shù)等。這樣,使得移動(dòng)終端10以及第 二和第三通信設(shè)備20和25能夠通過(guò)任意多種不同訪問(wèn)機(jī)制與網(wǎng)絡(luò)30以及互相進(jìn)行通信。例 如,可以支持諸如寬帶碼分多址(W-CDMA)、CDMA2000、全球移動(dòng)通信系統(tǒng)(GSM)、通用分組無(wú) 線業(yè)務(wù)(GPRS)等的移動(dòng)訪問(wèn)機(jī)制以及諸如WLAN、WiMAX等的無(wú)線訪問(wèn)機(jī)制和諸如數(shù)字訂戶 線路(DSL)、有線調(diào)制解調(diào)器、以太網(wǎng)等的固定訪問(wèn)機(jī)制。
[0041]在示例實(shí)施例中,該第一通信設(shè)備(例如,移動(dòng)終端10)可以是移動(dòng)通信設(shè)備,例 如,諸如無(wú)線電話或其它設(shè)備,諸如個(gè)人數(shù)字助理(PDA)、移動(dòng)計(jì)算設(shè)備、相機(jī)、視頻錄影機(jī)、 音/視頻播放器、定位設(shè)備、游戲設(shè)備、電視設(shè)備、無(wú)線電設(shè)備或者其它類似設(shè)備或它們的組 合。第二通信設(shè)備20和第三通信設(shè)備25可以是移動(dòng)或固定通信設(shè)備。然而,在一個(gè)示例中, 第二通信設(shè)備20和第三通信設(shè)備25可以是服務(wù)器、遠(yuǎn)程計(jì)算機(jī)或者諸如個(gè)人計(jì)算機(jī)(PC)或 膝上計(jì)算機(jī)的終端。
[0042]在一個(gè)示例實(shí)施例中,網(wǎng)絡(luò)30可以是被部署為智能空間的專設(shè)或分布式網(wǎng)絡(luò)。因 此,設(shè)備能夠進(jìn)入和/或離開網(wǎng)絡(luò)30并且網(wǎng)絡(luò)30的設(shè)備能夠基于其它設(shè)備的進(jìn)入和/或退出 而調(diào)節(jié)操作從而考慮到相應(yīng)設(shè)備或節(jié)點(diǎn)以及它們相對(duì)應(yīng)的能力的增加或減少。
[0043] 在示例實(shí)施例中,移動(dòng)終端10以及第二和第三通信設(shè)備20和25可以采用能夠采用 本發(fā)明實(shí)施例的裝置(例如,圖2的裝置)。
[0044]圖2圖示了用與執(zhí)行沖突數(shù)據(jù)的智能合并的裝置的示意性框圖。現(xiàn)在將參考圖2對(duì) 本發(fā)明的示例實(shí)施例進(jìn)行描述,其中顯示了裝置50的某些部件。圖2的裝置50例如可以在移 動(dòng)終端1〇(和/或第二通信設(shè)備20或第三通信設(shè)備25)上得以被采用??商鎿Q地,裝置50可以 被體現(xiàn)于網(wǎng)絡(luò)30的網(wǎng)絡(luò)設(shè)備上。然而,裝置50可替換地可以在移動(dòng)和固定的各種其它設(shè)備 (例如,諸如以上所列出的任意設(shè)備)得以體現(xiàn)。在一些情況下,實(shí)施例可以在設(shè)備的組合上 被采用。因此,本發(fā)明的一個(gè)實(shí)施例可以完全在單個(gè)設(shè)備(例如,移動(dòng)終端10)處體現(xiàn),由多 個(gè)設(shè)備以分布式方式來(lái)體現(xiàn)(例如,在P2P網(wǎng)絡(luò)中的一個(gè)或多個(gè)設(shè)備上)或者由處于客戶端/ 服務(wù)器關(guān)系的設(shè)備所體現(xiàn)。此外,應(yīng)當(dāng)注意的是,以下所描述的設(shè)備或部件可能并非強(qiáng)制性 的并且因此一些在某些實(shí)施例中可能被省略。
[0045] 現(xiàn)在參考圖2,裝置50可以包括處理器70、用戶接口67、通信接口 74、存儲(chǔ)器設(shè)備 76,其可以包括數(shù)據(jù)庫(kù)72、顯示器85和沖突合并模塊78,或者以其它方式與它們進(jìn)行通信。 在一個(gè)示例中,顯示器85可以是觸摸屏顯示器。存儲(chǔ)器設(shè)備76例如可以包括易失性和/或非 易失性存儲(chǔ)器。例如,存儲(chǔ)器設(shè)備76可以是電子存儲(chǔ)設(shè)備(例如,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)),其 包括被配置為存儲(chǔ)可由機(jī)器(例如,如處理器70的計(jì)算設(shè)備)所獲取的數(shù)據(jù)(例如,比特)的 門電路。在示例實(shí)施例中,存儲(chǔ)器設(shè)備76可以是并非瞬態(tài)的有形存儲(chǔ)器設(shè)備。存儲(chǔ)器設(shè)備76 可以被配置為存儲(chǔ)信息、數(shù)據(jù)、文件、應(yīng)用、指令等以便使得裝置能夠執(zhí)行依據(jù)本發(fā)明示例 實(shí)施例的各種功能。例如,存儲(chǔ)器設(shè)備76能夠被配置為緩沖輸入數(shù)據(jù)以供處理器70進(jìn)行處 理。除此之外或可替換地,存儲(chǔ)器設(shè)備76可以被配置為存儲(chǔ)指令以便由處理器70執(zhí)行。存儲(chǔ) 器76可以包括被配置為存儲(chǔ)內(nèi)容(例如,文檔、沖突信息等)的數(shù)據(jù)庫(kù)72。作為又另一種替換 形式,存儲(chǔ)器設(shè)備76可以是存儲(chǔ)信息和/或媒體內(nèi)容(例如,圖片、視頻等)的多個(gè)數(shù)據(jù)庫(kù)之 〇
[0046]在一個(gè)實(shí)施例中,裝置50可以是被配置為采用本發(fā)明的示例實(shí)施例的移動(dòng)終端 (例如,移動(dòng)終端10)或固定通信設(shè)備或計(jì)算設(shè)備。然而,在一些實(shí)施例中,裝置50可以被體 現(xiàn)為芯片或芯片組。換句話說(shuō),裝置101可以包括一個(gè)或多個(gè)物理封裝(例如,芯片),其包括 結(jié)構(gòu)性配件(例如,基板)上的材料、組件和/或連線。該結(jié)構(gòu)性配件可以為包括于其上的組 件電路提供物理強(qiáng)度、尺寸保留和/或電氣交互限制。因此,在一些情況下,裝置50可以被配 置為在單個(gè)芯片上實(shí)施本發(fā)明的實(shí)施例或者將其實(shí)施為單個(gè)"片上系統(tǒng)"。這樣,在一些情 況下,芯片或芯片組可以構(gòu)成用于執(zhí)行一個(gè)或多個(gè)操作以便提供這里所描述的功能的器 件。除此之外或可替換地,芯片或芯片組可以構(gòu)成用于使得能夠關(guān)于這里所描述的功能和/ 或服務(wù)而進(jìn)行用戶界面導(dǎo)航的器件。
[0047] 處理器70可以以多種不同方式來(lái)實(shí)現(xiàn)。例如,處理器70可以被實(shí)現(xiàn)為各種處理器 件中的一個(gè)或多個(gè),諸如微處理器、控制器、數(shù)字信號(hào)處理器(DSP)、具有或沒(méi)有所附DSP的 處理設(shè)備或者包括集成電路的其它處理設(shè)備,該集成電路例如ASIC(應(yīng)用特定集成電路)、 FPGA(現(xiàn)場(chǎng)可編程門陣列)、微控制器單元(MCU)、硬件加速器、專用計(jì)算機(jī)芯片、處理電路 等。在示例實(shí)施例中,處理器70可以被配置為執(zhí)行存儲(chǔ)器設(shè)備76中或者能夠以其它方式被 處理器70所訪問(wèn)的指令??商鎿Q地或除此之外,處理器70可以被配置為執(zhí)行硬編碼功能。這 樣,無(wú)論是由硬件還是軟件方法或者其組合進(jìn)行配置,處理器70都可以在被相應(yīng)配置時(shí)表 示能夠執(zhí)行根據(jù)實(shí)施例的操作的實(shí)體(例如,以電路物理實(shí)現(xiàn))。因此,例如,當(dāng)處理器70被 實(shí)現(xiàn)為ASIC、FPGA等時(shí),處理器70可以是用于進(jìn)行這里所描述的操作的專門配置的硬件???替換地,作為另一個(gè)示例,當(dāng)處理器70被實(shí)現(xiàn)為軟件指令的執(zhí)行器時(shí),該指令可以對(duì)處理器 進(jìn)行特殊配置以在該指令被執(zhí)行時(shí)實(shí)施這里所描述的算法和/或操作。然而,在一些情況 下,處理器70可以是適于通過(guò)用于執(zhí)行這里所描述的算法和/或操作的指令而以處理器另 外的配置來(lái)采用本發(fā)明示例性實(shí)施例的處理器或具體設(shè)備(例如,移動(dòng)終端10或其它通信 設(shè)備)。除其它之外,處理器70可以包括被配置為支持處理器70的操作的時(shí)鐘、算術(shù)邏輯單 元(ALU)和邏輯門。
[0048] 在一個(gè)示例實(shí)施例中,處理器70可以被配置為操作連接程序,和/或協(xié)同處理器等 可以執(zhí)行瀏覽器、Web瀏覽器等。就此而言,例如,該連接程序可以使得裝置50能夠根據(jù)無(wú)線 應(yīng)用協(xié)議(WAP)而傳送并接收Web內(nèi)容,例如,諸如基于位置的內(nèi)容或者任意其它適當(dāng)內(nèi)容。
[0049] 與此同時(shí),通信接口 74可以是諸如以硬件、軟件或者硬件和軟件的組合所實(shí)現(xiàn)的 設(shè)備或電路的任意器件,其被配置為往來(lái)于網(wǎng)絡(luò)和/或與裝置50進(jìn)行通信的其它設(shè)備或模 塊接收和/或傳送數(shù)據(jù)。就此而言,通信接口 74例如可以包括天線(或多個(gè)天線)以及用于使 得能夠與無(wú)線通信網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)30)進(jìn)行通信的支持硬件和/或軟件。在固定環(huán)境中,可 替換地或除此之外,通信接口 74可以支持有線通信。這樣,通信接口 74例如可以包括通信調(diào) 制解調(diào)器和/或用于支持經(jīng)由線纜、數(shù)字用戶線纜(DSL)、通用串行總線(USB)或其它機(jī)制的 通信的其它硬件/軟件。
[0050] 用戶接口 67可以與處理器70進(jìn)行通信以在用戶接口 67處接收用戶輸入的指示和/ 或向用戶提供聽覺(jué)、視覺(jué)、機(jī)械或其它輸出。這樣,用戶接口67例如可以包括鍵盤、鼠標(biāo)、操 縱桿、顯示器、觸摸屏、麥克風(fēng)、揚(yáng)聲器或者其它輸入/輸出機(jī)制。在裝置被實(shí)現(xiàn)為服務(wù)器或 者一些其它網(wǎng)絡(luò)設(shè)備的示例實(shí)施例中,用戶接口67可以是受限的、位于遠(yuǎn)程或者被排除。處 理器70可以包括被配置為對(duì)用戶接口的例如揚(yáng)聲器、響鈴、麥克風(fēng)、顯示器等的一個(gè)或多個(gè) 部件的至少一些功能進(jìn)行控制的用戶接口電路。處理器70和/或包括處理器70的用戶接口 電路可以被配置為通過(guò)存儲(chǔ)在處理器70可訪問(wèn)的存儲(chǔ)器(例如,存儲(chǔ)器設(shè)備76等)上的計(jì)算 機(jī)程序指令(例如,軟件和/或固件)來(lái)控制用戶接口的一個(gè)或多個(gè)部件的一個(gè)或多個(gè)功能。 [0051]在示例實(shí)施例中,處理器70可以被體現(xiàn)為、包括沖突合并模塊,或者以其它方式對(duì) 其進(jìn)行控制。沖突合并模塊78可以是諸如依據(jù)軟件進(jìn)行操作或者以其它方式以硬件或者硬 件和軟件的組合進(jìn)行體現(xiàn)的設(shè)備或電路(例如,在軟件控制下進(jìn)行操作的處理器70,被體現(xiàn) 為專門配置為執(zhí)行這里所描述的操作的ASIC或FPGA的處理器70,或者它們的組合)由此對(duì) 設(shè)備或電路進(jìn)行配置以執(zhí)行如以下所描述的沖突合并模塊78的相對(duì)應(yīng)功能。因此,在其中 采用軟件的示例中,執(zhí)行該軟件的設(shè)備或電路(例如,一個(gè)示例中的處理器)形成與這樣的 器件相關(guān)聯(lián)的結(jié)構(gòu)。
[0052]沖突合并模塊78可以檢測(cè)一個(gè)或多個(gè)通信設(shè)備(例如,多個(gè)裝置50)中的沖突數(shù) 據(jù),并且可以執(zhí)行該沖突數(shù)據(jù)的智能合并從而對(duì)一個(gè)或多個(gè)通信設(shè)備上的沖突數(shù)據(jù)進(jìn)行更 新,而并不必保存一個(gè)或多個(gè)通信設(shè)備的整個(gè)實(shí)際上的歷史數(shù)據(jù)。
[0053] 就此而言,例如,沖突合并模塊78可以以允許沖突合并模塊78檢測(cè)到?jīng)_突的方式 向數(shù)據(jù)(例如,文檔、聯(lián)系人等)分配以版本。例如,作為先決條件,沖突合并模塊78可以向裝 置50的(多個(gè))數(shù)據(jù)項(xiàng)目(例如,(多個(gè))文檔)的每一個(gè)分配以一個(gè)版本,其允許沖突模塊78 檢測(cè)到相同數(shù)據(jù)項(xiàng)目(例如,文檔)已經(jīng)在一個(gè)或多個(gè)其它通信設(shè)備(例如,一個(gè)或多個(gè)其它 裝置50)上被修改。在一個(gè)示例實(shí)施例中,沖突合并模塊78可以利用版本矢量來(lái)向(多個(gè))數(shù) 據(jù)項(xiàng)目分配版本,其使得沖突合并模塊78能夠檢測(cè)到數(shù)據(jù)的兩個(gè)或更多版本(例如,兩個(gè)文 檔版本)何時(shí)相同、存在沖突或者在一定程度上可以被利用。然而,沖突合并模塊78可以采 用向多個(gè))數(shù)據(jù)項(xiàng)目生成并分配(多個(gè))版本的任意其它適當(dāng)機(jī)制而并不背離本發(fā)明的精神 和范圍。(多個(gè))版本可以由沖突合并模塊78存儲(chǔ)在字段中,例如使用適用于數(shù)據(jù)項(xiàng)目的元 數(shù)據(jù)的字段(例如,meta. version字段)(其中"數(shù)據(jù)項(xiàng)目"例如可以是文檔)。
[0054] 就此而言,版本矢量可以是用于追蹤針對(duì)其中多個(gè)節(jié)點(diǎn)可以更新數(shù)據(jù)的通信系統(tǒng) 中的數(shù)據(jù)的改變的機(jī)制。每次(多個(gè))節(jié)點(diǎn)經(jīng)歷更新事件,沖突合并模塊78都可以將該矢量 中的計(jì)數(shù)器加1。在一個(gè)示例實(shí)施例中,該版本矢量中的第一數(shù)字可以表示特定節(jié)點(diǎn)上(例 如,第一節(jié)點(diǎn))的數(shù)據(jù)版本,并且該版本矢量中的第二數(shù)字可以表示另一個(gè)節(jié)點(diǎn)(例如,第二 節(jié)點(diǎn))上的數(shù)據(jù)版本。
[0055] 這樣,在其中數(shù)據(jù)(例如,文檔)的屬性發(fā)生變化的情況下,沖突合并模塊78可以在 該數(shù)據(jù)(例如,文檔)自身中存儲(chǔ)有關(guān)該數(shù)據(jù)版本在該特定屬性被修改時(shí)是什么的信息。如 以下更為全面描述的,這允許沖突合并模塊78執(zhí)行沖突數(shù)據(jù)的智能合并,而并不必保存實(shí) 際的歷史數(shù)據(jù)。
[0056] 例如,沖突合并模塊78可以無(wú)需存儲(chǔ)(多個(gè))數(shù)據(jù)項(xiàng)目(例如,文檔)的任何先前版 本。相反,沖突合并模塊78可以將(多個(gè))數(shù)據(jù)項(xiàng)目(例如,文檔)的單個(gè)版本存儲(chǔ)在通信設(shè)備 上。通過(guò)將(多個(gè))數(shù)據(jù)項(xiàng)目(例如,文檔)的單個(gè)版本存儲(chǔ)在通信設(shè)備上,沖突合并模塊78可 以用來(lái)通過(guò)不像常規(guī)方法所作的那樣保存(多個(gè))數(shù)據(jù)項(xiàng)目的所有先前版本而優(yōu)化并節(jié)省 存儲(chǔ)空間。由于沖突合并模塊78可以擴(kuò)充(多個(gè))數(shù)據(jù)項(xiàng)目以指示變化和相對(duì)應(yīng)的版本,所 以沖突合并模塊78可以不需要促成對(duì)指示改變的信息的任何先前/較早版本進(jìn)行存儲(chǔ)。
[0057] 現(xiàn)在參考圖3,提供了使得能夠?qū)_突/修改數(shù)據(jù)進(jìn)行智能合并的系統(tǒng)的示例實(shí)施 例。系統(tǒng)7可以包括一個(gè)或多個(gè)通信設(shè)備165和167(例如,裝置50(例如,移動(dòng)終端10))。雖然 圖3示出了兩個(gè)通信設(shè)備165、167,但是應(yīng)當(dāng)指出的是,任意適當(dāng)數(shù)量的通信設(shè)備165、167都 可以是系統(tǒng)7的一部分而并不背離本發(fā)明的精神和范圍。
[0058]什么樣的文檔在兩個(gè)進(jìn)行復(fù)制的通信設(shè)備(例如,第一和第二設(shè)備(例如,通信設(shè) 備165和167))中開上去相似的不例如下。 var contact = { meta: { id: 4711 version: [1,1]
[0059] } firstName: "Joh", lastName: "Doe" };
[0060] 當(dāng)應(yīng)用更新(多個(gè))文檔時(shí),應(yīng)用提供至沖突合并模塊78的文檔版本應(yīng)當(dāng)與存儲(chǔ)在 數(shù)據(jù)庫(kù)(例如,數(shù)據(jù)庫(kù)72)中當(dāng)前所存儲(chǔ)的文檔的版本相同。例如,在其中應(yīng)用想要更正 firstName的情況下,其可以如下進(jìn)行:
[0061 ] contact?firstName = "John";
[0062] db.updateDocument(contact,…);
[0063] 此外,在其中沖突合并模塊78所提供的文檔版本與數(shù)據(jù)庫(kù)(例如,數(shù)據(jù)庫(kù)72)中的 相對(duì)應(yīng)文檔的相同的情況下,該版本依據(jù)所采用的版本設(shè)置方案(例如,以下示例使用版本 矢量)而被增加(例如,加1)并且被允許進(jìn)行更新。就此而言,最終結(jié)果是數(shù)據(jù)庫(kù)(例如,數(shù)據(jù) 庫(kù)72)中的文檔可以變?yōu)槿缦隆?var contact = { meta: { id: 4711 version:丨2, 11
[0064] } firstName: "John,' lastName: ^Doe^ };
[0065] 該版本現(xiàn)在為[2,1],其中版本數(shù)量的第一個(gè)數(shù)字2表示在第一設(shè)備(例如,通信設(shè) 備165)上發(fā)生了變化。
[0066] 利用這種類型的覆蓋(blanket)更新,并沒(méi)有對(duì)什么已經(jīng)有所改變進(jìn)行記錄,這可 能導(dǎo)致合并數(shù)據(jù)的困難,因?yàn)椴⒉淮_切知曉什么已經(jīng)發(fā)生了變化。
[0067] 在其中能夠自動(dòng)或以其它方式對(duì)在不同節(jié)點(diǎn)(例如,通信設(shè)備165和167)上進(jìn)行修 改的文檔進(jìn)行合并非常重要的情況下,應(yīng)用能夠如下更新存儲(chǔ)在數(shù)據(jù)庫(kù)(db)中的屬性。
[0068] db.updateP;rope;rty(contact, "lastName","Doe 2nd")
[0069]就此而言,應(yīng)用的調(diào)用方仍然提供整個(gè)文檔,但是該文檔可以僅被用于檢查該應(yīng) 用是以該文檔的最新版本進(jìn)行工作。如以下所示出的,此時(shí),沖突合并模塊78可以在實(shí)際將 文檔例如存儲(chǔ)在存儲(chǔ)器(例如,存儲(chǔ)器設(shè)備76的數(shù)據(jù)庫(kù)72)中之前進(jìn)行標(biāo)記并且指示發(fā)生改 變的屬性(例如,lastName)以及所處的文檔版本(例如,[3,1 ])。 var contact = {
[0070] meta: { id: 47U version: /3, lj properties: { "fir.stName": /2,'// "lastName": /:?, //
[0071] } } firstName: "John", lastName: "Doe 2nd,'
[0072]如在正常更新中,整個(gè)文檔的版本也被沖突合并模塊78更新為[2,1],因?yàn)樵撐臋n 的版本從其之前的版本2(例如,[2,1])增加為第一設(shè)備(例如,通信設(shè)備165)上的當(dāng)前版本 3(例如,[3,1])。沖突合并模塊78還可以記錄并未更新的屬性firstName的版本,其在該示 例中是[2,1 ],因?yàn)閒 irstName屬性在該f irstName屬性并未被更新的情況下取用先前文檔 的版本(例如,[2,1 ])。就此而言,在示例實(shí)施例中,無(wú)論屬性(例如,lastName)何時(shí)被修改, 沖突合并模塊78都可以確保所有其它屬性(例如,屬性firstName)也具有版本編號(hào)(例如, [2,1])〇
[0073]進(jìn)一步考慮其中文檔被復(fù)制到第二設(shè)備(例如,通信設(shè)備167)的示例,屬性 firstName在其中隨后被改變?yōu)?Johnny"(例如,使用updateProperty)機(jī)制。為了將該文檔 (例如,具有標(biāo)識(shí)符(id)4711的聯(lián)系人文檔)復(fù)制到第二設(shè)備(例如,通信設(shè)備167),沖突合 并模塊78可以將該文檔拷貝至第二設(shè)備,隨后第二設(shè)備的沖突合并模塊(例如,沖突合并模 塊78)可以檢查其已經(jīng)在本地存儲(chǔ)的文檔(例如,具有id 4711的聯(lián)系人文檔)與從第一設(shè)備 (例如,通信設(shè)備165)所接收的文檔的版本之間的關(guān)系。在該示例中,由于第二設(shè)備所接收 的文檔是比第二設(shè)備已經(jīng)在本地存儲(chǔ)的相同版本更新的直接后代,所以第二設(shè)備的沖突合 并模塊可以更新第二設(shè)備上的文檔以包括任何的改變。就此而言,第二設(shè)備(例如,通信設(shè) 備167)上的文檔可以由沖突合并模塊如下修改/生成: var contact = { meta: { id: 4711 version: (3, 2j properties: { ."firstlName": /2, 2/
[0074] ."lastName": /3, // } } firstName:64Johnny% lastName: 4tDoe 2ndM };
[0075] 以這種方式,文檔自身的版本被沖突合并模塊78增加為[3,2],這是因?yàn)榫哂邪姹?[3,1]的先前文檔被復(fù)制到第二設(shè)備(例如,通信設(shè)備leThfirstName屬性可以被沖突合并 模塊78增加為[2,2],因?yàn)樵诘诙O(shè)備(例如,通信設(shè)備167)上發(fā)生了屬性firstName到 "Johnny"的改變并且其是從被指定為版本[2,1 ]的屬性f irstName "John"所進(jìn)行的改變。此 外,沖突合并模塊78可以將屬性lastName保持為其先前版本[3,1],因?yàn)閷傩詌astName并沒(méi) 有在第二設(shè)備(例如,通信設(shè)備167)上發(fā)送改變。
[0076]與此同時(shí),進(jìn)一步考慮屬性lastName在第一設(shè)備上從"Doe 2nd"被修改和改變?yōu)?"Doe second"(例如,在文檔被復(fù)制到第二設(shè)備之后)并且因此該文檔在第一設(shè)備上可以如 下: var contact = {
[0077] meta: { id: 4711 version: 14, lj properties: { "firstName": /2, // "lastMame": /¥,//
[0078] } } firstName: "John", lastNsime: "Doe second" };
[0079]就此而言,第一設(shè)備的沖突合并模塊78將第一設(shè)備上的文檔的版本從第一設(shè)備上 的先前版本[3,1]增加為[4,1]。此外,第一設(shè)備的沖突合并模塊78可以將第一設(shè)備上具有 版本[3,1]的屬性lastName增加為版本[4,1],這是因?yàn)閷傩詌astName在第一設(shè)備上有所修 改。第一設(shè)備的沖突合并模塊78可以將屬性firstName的版本保持為[2,1],這與第一設(shè)備 上的文檔中的屬性firstName的先前版本[2,1]相同,這是因?yàn)椴](méi)有針對(duì)屬性firstName 的改變。
[0080]此外,在其中第一設(shè)備的沖突合并模塊78執(zhí)行復(fù)制并且檢測(cè)到文檔(例如,第一和 第二設(shè)備上被分配以id 4711的聯(lián)系人文檔)同時(shí)在第一設(shè)備(例如,通信設(shè)備165)和第二 設(shè)備(例如,通信設(shè)備167)上被修改,則沖突合并模塊78可以利用唯一技術(shù)而以具有意義的 方式對(duì)文檔的數(shù)據(jù)進(jìn)行合并。
[0081 ]例如,從在第二設(shè)備(例如,通信設(shè)備167)上被修改的文檔(例如,被分配以id 4711的聯(lián)系人文檔),第二設(shè)備的沖突合并模塊可以選擇屬性firstName,原因在于版本[2, 2]比屬性firstName的版本[2,1]更近,并且從在第一設(shè)備(例如,通信設(shè)備165)上被修改的 文檔(例如,被分配以id 4711的聯(lián)系人文檔),第一設(shè)備的沖突合并模塊78可以選擇屬性 lastName,這是因?yàn)榘姹綶4,1]比屬性lastName的版本[3,1]更近。這樣,所產(chǎn)生的可以被第 一設(shè)備和第二設(shè)備二者進(jìn)行存儲(chǔ)的文檔可以如下: var contact = { meta: { id: 4711 version: [4, 2] properties; { "firstName": /二 2/
[0082] "lastName":"," } ftrstName: "Johnny", lastIName: "Doe second" 1;
[0083]這樣,第一和第二設(shè)備的沖突合并模塊(例如,沖突合并模塊78)可以生成包括任 何被更新屬性的最近版本的文檔。以這種方式,沖突合并模塊78可以在檢測(cè)到相同文檔的 沖突數(shù)據(jù)時(shí)自動(dòng)執(zhí)行數(shù)據(jù)的智能合并,而并不保存該文檔的整個(gè)實(shí)際的歷史數(shù)據(jù)并且不要 錢用戶交互來(lái)合并沖突數(shù)據(jù)。
[0084] 另一方面,所指出的是,如果沖突合并模塊在屬性lastName被修改時(shí)并沒(méi)有存儲(chǔ) 屬性f irstName的版本,則沖突合并模塊可能無(wú)法推斷出屬性f irstName的哪個(gè)版本是更為 適宜的版本。
[0085] 在層級(jí)屬性的情況下,即使僅對(duì)特定的一個(gè)或者整個(gè)的子屬性進(jìn)行修改,沖突合 并模塊78也可以確保針對(duì)每個(gè)葉子屬性(例如,沒(méi)有子屬性的屬性)存儲(chǔ)版本。就此而言,葉 子屬性可以是其數(shù)值為原語(yǔ)值(例如,串、證書、浮點(diǎn)數(shù)、布爾數(shù))的屬性而并不是對(duì)象 ({…})。子屬性可以是其數(shù)值并非原語(yǔ)值的屬性??紤]以下文檔作為起始點(diǎn)的示例。
[0086] var doc = f meta: { id: 4712 version:. [3^ 7] }, a: { b: {
[0087] c: "hello", d: "world" }, e:,hi,, } };
[0088]此外,假設(shè)該文檔已經(jīng)被復(fù)制到第二設(shè)備(例如,通信設(shè)備167)。在其中屬性a.e在 第一設(shè)備(例如,通信設(shè)備165)上被使用以下updateProperty機(jī)制進(jìn)行了修改
[0089] db.updateProperty(doc,"a.e","hi there")
[0090] 所產(chǎn)生的文檔可以如下: var doc = { meta: { id: 4712 version: (4, 7/, properties: { "a.b.c": /3, 7/, "a.b.d": /3, 7/,
[o09i] "a.e": ",7/ } }, a: { b: { c: "hello", d: "world" }, e: "hi there" };
[0092] }
[0093] 就此而言,在其中任何屬性以保存版本信息的方式被修改的情況下,沖突合并模 塊78都可以確保所有葉子屬性都有明確的版本條目。并且,在其被修改之前,葉子屬性的版 本是文檔的版本。這樣,葉子屬性a. b. c和a. b. d的版本被沖突合并模塊78分配以[3,7 ],這 是該文檔(例如,被分配以id 4712的文檔)在其被修改之前的版本。此外,該文檔的版本被 沖突合并模塊78針對(duì)第一設(shè)備進(jìn)行增加,而使得針對(duì)第一設(shè)備的版本為[4,7]。在該示例 中,屬性a.e被應(yīng)用所修改并且因此沖突合并模塊78可以將累加或增加第一設(shè)備上該文檔 的先前版本[3,7]而使得沖突合并模塊78向?qū)傩詀.e分配以版本[4,7]。此外,中間屬性的版 本是其孩子屬性的最大版本。
[0094] 在其中自屬性被整體更新的情況下,沖突合并模塊78可以針對(duì)該子屬性中的所有 葉子屬性存儲(chǔ)版本信息。
[0095] 例如,在其中屬性a. b在第二設(shè)備(例如,通信設(shè)備167)上通過(guò)使用以下 updateProperty機(jī)制而被修改的情況下
[0096] db.updateProperty)doc,"a.b",{c:"hello",d:"hello"})
[0097]所產(chǎn)生的文檔可以如下 var doc = { meta : { id: 4712 version: (3, 5/, properties: { "a.b.c W/,
[o098] "a.b.d /3, 8J, "a.e": ",7/ } }, a: { b: { c: "hello", d: "hello" }, e: "hi"
[0099] };
[0100] 以這種方式,第二設(shè)備(例如,通信設(shè)備167)的沖突合并模塊78可以累加或增加第 二設(shè)備上的先前文檔的版本[3,7]并且向該文檔(例如,被分配以id 4712的文檔)分配以版 本[3,8]。由于屬性a. e并沒(méi)有在第二設(shè)備上所分配的任何先前版本信息,并且由于屬性a. e 在該示例中并未被改變,所以沖突合并模塊78可以分配該文檔的先前版本[3,7] -這是其 被修改之前的版本一作為屬性a. e的當(dāng)前版本[3,7]。此外,在該示例中,由于屬性a. b. c被 修改為"hello"并且屬性a.b.d被修改為"hello",所以沖突合并模塊78可以累加或增加該 文檔的先前版本[3,7]并且向?qū)傩詀.b.c和a. c.d分配以版本[3,8]。
[0101]在該示例中,在執(zhí)行復(fù)制時(shí)(這里也被稱作復(fù)制時(shí)間),沖突合并模塊78可以檢測(cè) 到?jīng)_突,因?yàn)槲臋n已經(jīng)在兩個(gè)不同設(shè)備(例如,第一和第二設(shè)備(例如,通信設(shè)備165和167)) 上被獨(dú)立修改。然而,由于已經(jīng)被修改的實(shí)際屬性在沖突中并不獨(dú)立,所以沖突合并模塊可 以合并兩個(gè)文檔版本。例如,在第二設(shè)備(例如,通信設(shè)備167)上被修改的版本可以被復(fù)制 (例如,拷貝)到第一設(shè)備(例如,通信設(shè)備165),并且隨后這兩個(gè)文檔可以被第一設(shè)備的沖 突合并模塊進(jìn)行合并并且被存儲(chǔ)在第一設(shè)備上(例如,在存儲(chǔ)器(例如,存儲(chǔ)器設(shè)備76或數(shù) 據(jù)庫(kù)72)中)。此外,在第一設(shè)備(例如,通信設(shè)備165)上被修改的版本可以被復(fù)制到第二設(shè) 備(例如,通信設(shè)備167),并且被第二設(shè)備的沖突合并模塊進(jìn)行合并并且被存儲(chǔ)在第二設(shè)備 上(例如,在存儲(chǔ)器(例如,存儲(chǔ)器設(shè)備76或數(shù)據(jù)庫(kù)72)中)?,F(xiàn)在,所產(chǎn)生的文檔在第一設(shè)備 和第二設(shè)備上是相同的并且可以被如下表示 var doc = {
[0102] meta: { id: 4712 version: (4, 8/r properties: { "a.b.c": /3, 5/, "a.b.e": /3, 5/, "a.e": M 7/ } },
[oi03] a: { b: { c: "hello", d: "hello" c: "hi there" } };
[0104] 如在上述所產(chǎn)生文檔中所示,屬性a. b . c和a . b . d反映了針對(duì)具有版本[3,8]的 "hel 1〇"的改變。此外,屬性a. e反映了針對(duì)具有版本[4,7]的"hi there"的改變。此外,沖突 合并模塊78可以實(shí)施并執(zhí)行指定非葉子屬性(例如,具有子屬性的屬性)的版本為其任意子 對(duì)象(Ch i 1 dr en)的最大版本的規(guī)則,并且該規(guī)則可以被應(yīng)用于該文檔自身的版本。非葉子 屬性可以是其屬性并非諸如串、整數(shù)、浮點(diǎn)數(shù)、布爾數(shù)的原語(yǔ)值的屬性,而是包括其它屬性 的對(duì)象或?qū)傩浴_@樣,在該示例中,沖突合并模塊78可以對(duì)屬性的每個(gè)版本的最大編號(hào)進(jìn)行 分析并且可以分配這些數(shù)值作為所產(chǎn)生文檔的版本。例如,屬性版本的最大編號(hào)是4和8。由 此,沖突合并模塊78可以向所產(chǎn)生的文檔分配以版本[4,8]。
[0105] 以下考慮從起始點(diǎn)具有更深層級(jí)的文檔的示例: var doc = { meta: { id: 4713 「 n version: ///,
[0106] , 1 " h a: { b: { e: "hello,,, d: { e: "world" }
[0107] }, f: "hi" } };
[0108] 在該示例中,沖突合并模塊78可以對(duì)該文檔進(jìn)行分析并且檢測(cè)到?jīng)]有特定于屬性 的版本。由此,沖突合并模塊78可以將該文檔的版本[1]分配作為所有屬性的版本。此外,該 示例是從單個(gè)節(jié)點(diǎn)/設(shè)備(例如,通信設(shè)備165)的視角進(jìn)行考慮。例如,在該示例中,該文檔 可以僅被存儲(chǔ)在一個(gè)設(shè)備上。
[0109] 進(jìn)一步考慮屬性a.b. c從屬性"he 11〇"被修改并改變?yōu)閷傩?HELLO"。就此而言,沖 突合并模塊78可以在該文檔的meta. properties中存儲(chǔ)有關(guān)所有葉子屬性的版本信息。由 此,所產(chǎn)生的文檔可以如下: var doc = { meta: { id: 4713 version: /2/, properties: { "a.b.c": /々, "a.b.d.e": /", "a.f,: /// }
[0110] a. { b: { c: "HELLO,,, d: { e: "w.o'rld" ! f: } };
[0111] 由于針對(duì)該文檔的屬性a.b.c有所修改,所以沖突合并模塊78可以將該文檔的版 本增加為[2]。此外,在屬性a. b. c被修改的情況下,沖突合并模塊78可以將屬性的版本增加 為[2]。此外,由于屬性a.b.d.e和a.f并未被修改,所以沖突合并模塊78可以為屬性a.b.d.e 和屬性a. f?分配以對(duì)應(yīng)于該文檔的先前版本的版本[1 ]。
[0112] 考慮其中屬性a. b. d. e被修改以將"world"改變?yōu)?WORLD"的另一個(gè)示例。根據(jù)示 例實(shí)施例,在其中特定屬性被修改的情況下,該屬性的數(shù)值基于文檔自身在其被修改之前 的數(shù)值加上1。就此而言,沖突合并模塊78可以為屬性a.b.d.e分配并存儲(chǔ)版本信息[3],這 是由于文檔的先前版本為[2]并且因?yàn)闆_突合并模塊78可以將該文檔的版本數(shù)值[2]增加 1。沖突合并模塊78還可以將文檔自身的版本增加1從而為當(dāng)前文檔分配以數(shù)值[3]。由于屬 性a.b.c和屬性a.f在該示例中并未修改,所以沖突合并模塊78可以分配屬性a.b.c的先前 數(shù)值[2]作為屬性a.b.c的當(dāng)前數(shù)值[2]并且分配屬性a.f的先前數(shù)值[1]作為a.f的當(dāng)前數(shù) 值[1]。這樣,由沖突合并模塊78修改/生成的所產(chǎn)生文檔可以如下。 var doc = { meta: { id: 4713 version: /5/, properties: { "a.b.c": /2/, "a.b.d.e": /.?/, "a.f,:"/
[0113] } }, a: { b: { c: "HELLO", d: { e:: ? WO^RLD w } }, f: "hi"
[0114] } I;
[0115] 作為另一個(gè)示例,考慮屬性a.b在一個(gè)操作中被修改(例如,具有相同的子屬性,雖 然它們可以有所不同)。就此而言,沖突合并模塊78可以在文檔中如下包括有關(guān)所有葉子屬 性的版本信息。 var doc = { meta: { id: 4713 version: /仏 properties: { "a.b.c":"/, "a.b.d.e": /¥/, "a.f,: /// }
[0116] Jr a: { b: { c: uhelloworld,?, d: { e: "w.o'rldhello" ! f:,hp } };
[0117]在該示例中,沖突合并模塊78可以為屬性a.b.c和屬性 a.b.d.e分配并存儲(chǔ)版本信 息[4],這是由于該文檔的先前版本為[3]并且因?yàn)闆_突合并模塊78將文檔的版本[3]增加 了 1。沖突合并模塊78還可以將文檔自身的版本增加1以向當(dāng)前文檔分配以數(shù)值[4]。由于屬 性a. f在該示例中并未被修改,所以沖突合并模塊78可以分配屬性a. f的先前數(shù)值[1 ]作為 屬性a.f的當(dāng)前數(shù)值[1]。
[0118] 在該示例中,針對(duì)每個(gè)屬性明確存儲(chǔ)版本信息可能是多余的,因?yàn)閷傩詀.b.c和 a.b.d.e的版本是相同的,并且因此沖突合并模塊78可以通過(guò)在文檔中去除一下條目而節(jié) 約/節(jié)省存儲(chǔ)器(例如,存儲(chǔ)器設(shè)備76)的存儲(chǔ)空間。
[0119] "a.b.c":[4]
[0120] "a.b.d.e":[4]
[0121] 相反,沖突合并模塊78可以利用單個(gè)條目"a.b" : [4]替換這些條目。
[0122] 就此而言,沖突合并模塊78可以實(shí)施以下規(guī)則,其指定在沒(méi)有針對(duì)特定葉子屬性 標(biāo)記明確版本的情況下,該葉子屬性的版本是具有版本的最接近祖先屬性的版本。其要求 在于在每個(gè)屬性分支上(例如,屬性a. b. c或?qū)傩詀. b. d. e)可以有最多一個(gè)版本條目。實(shí)際 上,這將意味著在如上述情形中,在僅標(biāo)記出屬性a.b的版本為[4]的情況下(例如,暗示屬 性a. b. c、屬性a. b. d和屬性a. b. d. e的版本同樣為[4]),貝lj如果屬性a. b. d. e被修改,貝lj其版 本變?yōu)閇5],沖突合并模塊78將必須移除屬性a. b的條目并且為屬性a. b. c增加條目[4]。應(yīng) 當(dāng)指出的是,可能需要該要求來(lái)確保所存儲(chǔ)的版本根據(jù)非葉子屬性的版本是其任意孩子 (例如,孩子屬性)的最大版本的要求是正確的。
[0123] 這樣,在示例實(shí)施例中,沖突合并模塊78可以應(yīng)用以下概念性規(guī)則,其中每個(gè)葉子 屬性的版本被分配并存儲(chǔ)(例如,在文檔自身中),并且非葉子屬性的版本是其任意孩子(例 如,孩子屬性)的最大版本。此外,該規(guī)則始終都可以被應(yīng)用于文檔自身的版本。
[0124] 在另一個(gè)示例實(shí)施例中,我們?cè)试S屬性分支具有若干版本條目。在這種情況下,屬 性的版本是其任意孩子的最大版本(例如,無(wú)論該屬性是否具有所標(biāo)記的版本),或者在其 沒(méi)有孩子或者孩子沒(méi)有所標(biāo)記的版本的情況下,該屬性的版本因此是針對(duì)其存在版本的最 接近的祖先屬性(例如,包括其自身)的版本。該更為復(fù)雜的要求允許版本更為緊湊地進(jìn)行 存儲(chǔ)。例如,在之前的其中屬性a. b的版本為[4 ]并且a. b. d. e被修改的示例中,針對(duì)屬性 a. b. d. e存儲(chǔ)版本[5 ]就將是足夠的。針對(duì)全部都擁有具有所標(biāo)記版本的孩子a. b. d. e的a、 a.b和a.b.d而言,版本就是其任意孩子的最大版本,例如[5]。對(duì)于a.b.c而言,版本是具有 所標(biāo)記版本的最接近祖先屬性的版本,其包括a.b.c自身。這樣的最接近屬性是a. b,其具有 版本[4]。類似地,針對(duì)a.b.d. e而言,版本是具有所標(biāo)記版本的最接近祖先屬性的版本,其 包括a. b. d. e自身。這樣的最接近屬性是a. b. d. e,其具有版本[5]。該示例實(shí)施例的優(yōu)勢(shì)在 于更為緊湊地存儲(chǔ)版本信息。另一方面,在該示例實(shí)施例中,獲得非葉子屬性的版本可能要 求通過(guò)其所有孩子進(jìn)行迭代。這可以通過(guò)僅針對(duì)持久性存儲(chǔ)使用更為緊湊的表示形式并且 當(dāng)數(shù)據(jù)被加載到存儲(chǔ)器以便進(jìn)行處理時(shí)轉(zhuǎn)換為另一種表示形式而有所緩解。
[0125] 現(xiàn)在參考圖4,提供了用于使得能夠?qū)_突數(shù)據(jù)進(jìn)行智能合并的示例方法的流程 圖。在操作400,通信設(shè)備(例如,裝置50(例如,通信設(shè)備165))可以包括諸如沖突合并模塊 78、處理器70等的器件,以用于檢測(cè)針對(duì)該通信設(shè)備上所存儲(chǔ)(例如,在存儲(chǔ)器設(shè)備76或存 儲(chǔ)器設(shè)備76的數(shù)據(jù)庫(kù)72中)的數(shù)據(jù)項(xiàng)目(例如,文檔)的至少一個(gè)屬性(例如,屬性lastName 等)的至少一種改變或修改。
[0126] 在操作405,該通信設(shè)備(例如,裝置50(例如,通信設(shè)備165))可以包括諸如沖突合 并模塊78、處理器70等的器件,以用于響應(yīng)于檢測(cè)到屬性有所改變/修改而確定數(shù)據(jù)項(xiàng)目 (例如,文檔)的版本(例如,[3,1 ])以及該屬性(例如,屬性1 a s t Nam e等)的版本(例如,[3, 1])或該數(shù)據(jù)項(xiàng)目中并未改變的一個(gè)或多個(gè)屬性(例如,屬性firstName)的一個(gè)或多個(gè)版本 (例如,[2,1])。在操作410,該通信設(shè)備(例如,裝置50(例如,通信設(shè)備165))可以包括諸如 沖突合并模塊78、處理器70等的器件,以用于更新數(shù)據(jù)項(xiàng)目以包括指示數(shù)據(jù)項(xiàng)目的版本、至 少一個(gè)有所改變/修改的屬性的版本以及并未改變的屬性的版本的標(biāo)記。
[0127] 在操作415,該通信設(shè)備(例如,裝置50(例如,通信設(shè)備165))可以包括諸如沖突合 并模塊78、處理器70等的器件,以用于使得能夠?qū)⒏碌臄?shù)據(jù)項(xiàng)目存儲(chǔ)在通信設(shè)備上而并 不存儲(chǔ)該數(shù)據(jù)項(xiàng)目的一個(gè)或多個(gè)先前版本。該更新的數(shù)據(jù)項(xiàng)目被配置為在解決對(duì)應(yīng)于該數(shù) 據(jù)項(xiàng)目的另一個(gè)數(shù)據(jù)項(xiàng)目(這里也被稱作其它數(shù)據(jù)項(xiàng)目)(例如,另一個(gè)通信設(shè)備(例如,通 信設(shè)備167)上的另一個(gè)文檔)中的沖突數(shù)據(jù)時(shí)被加以利用。在示例實(shí)施例中,存儲(chǔ)在該通信 設(shè)備(例如,通信設(shè)備165)上的更新的數(shù)據(jù)項(xiàng)目可以對(duì)應(yīng)于文檔而該其它數(shù)據(jù)項(xiàng)目可以對(duì) 應(yīng)于另一個(gè)通信設(shè)備(例如,通信設(shè)備167)上的相同文檔(例如,相同文檔的一個(gè)版本)。
[0128] 應(yīng)當(dāng)指出的是,圖4是根據(jù)本發(fā)明的示例實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的 流程圖。將要理解的是,流程圖中的每個(gè)框以及流程圖中框的組合可以通過(guò)各種手段來(lái)實(shí) 施,諸如硬件、固件、和/或包括一個(gè)或多個(gè)計(jì)算機(jī)程序指令的計(jì)算機(jī)程序產(chǎn)品。例如,以上 所描述的一個(gè)或多個(gè)過(guò)程可以由計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)。就此而言,在示例實(shí)施例中,體現(xiàn) 以上所描述過(guò)程的計(jì)算機(jī)程序指令被存儲(chǔ)器設(shè)備(例如,存儲(chǔ)器設(shè)備76)所存儲(chǔ)并且由處理 器(例如,處理器70、沖突合并模塊78)來(lái)執(zhí)行。如將要意識(shí)到的,任何這樣的計(jì)算機(jī)程序指 令都可以被加載到計(jì)算機(jī)或其它可編程裝置(例如,硬件)上以生產(chǎn)機(jī)器,以使得在計(jì)算機(jī) 或其它可編程裝置柵執(zhí)行的指令使得該流程圖的中所指定的功能得以被實(shí)施。在一個(gè)實(shí)施 例中,該計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)器中,后者能夠指示計(jì)算機(jī)或其它可編程 裝置以特定方式工作,以使得存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括實(shí)施流程圖的框 中所指定的(多個(gè))功能的指令的制造品。計(jì)算機(jī)程序指令還可以被加載到計(jì)算機(jī)或其它可 編程裝置上以使得一系列操作在計(jì)算機(jī)或其它可編程裝置上得以執(zhí)行從而產(chǎn)生計(jì)算機(jī)實(shí) 施的處理,而使得在該計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令實(shí)施流程圖的框中所指定的 功能。
[0129]因此,流程圖中的框支持用于執(zhí)行指定功能的手段的組合。還將要理解的是,流程 圖中的一個(gè)或多個(gè)框以及流程圖中框的組合可以由執(zhí)行所指定功能的基于專用硬件的計(jì) 算機(jī)系統(tǒng)或者特殊用途的硬件和計(jì)算機(jī)指令的組合來(lái)實(shí)施。
[0130]在示例實(shí)施例中,用于執(zhí)行以上圖4中的方法的裝置可以包括處理器(例如,處理 器70、沖突合并模塊78),其被配置為執(zhí)行以上所描述的一些或每種操作(400-415)。該處理 器例如可以被配置為通過(guò)執(zhí)行硬件所實(shí)施的邏輯功能,執(zhí)行所存儲(chǔ)的指令或者執(zhí)行用于執(zhí) 行每種操作的算法而執(zhí)行該操作(400-415)??商鎿Q地,該裝置可以包括用于執(zhí)行以上所描 述的每種操作的器件。就此而言,根據(jù)示例實(shí)施例,用于執(zhí)行操作(400-415)的器件的示例 例如可以包括處理器(例如,用于執(zhí)行以上所描述的任意操作的器件)、沖突合并模塊78和/ 或用于執(zhí)行指令或執(zhí)行算法以便處理如以上所描述的信息的設(shè)備或電路。
[0131]這里給出的本發(fā)明的許多修改和其它實(shí)施例將被已經(jīng)從之前描述和相關(guān)聯(lián)附圖 中所給出的教導(dǎo)所獲益的與這些發(fā)明相關(guān)領(lǐng)域的技術(shù)人員所意識(shí)到。因此,所要理解的是, 本發(fā)明并不局限于所公開的具體實(shí)施例并且修改和其它實(shí)施例意在被包括在所附權(quán)利要 求的范圍之內(nèi)。此外,雖然以上描述和相關(guān)聯(lián)附圖以部件和/或功能的某些示例組合為背景 對(duì)示例實(shí)施例進(jìn)行了描述,但是應(yīng)當(dāng)意識(shí)到的是,可以由可替換實(shí)施例提供部件和/或功能 的不同組合而并不背離所附權(quán)利要求的范圍。就此而言,例如,不同于以上所明確描述的部 件和/或功能的不同組合也預(yù)期在一些所附權(quán)利要求中被給出。雖然這里采用了具體術(shù)語(yǔ), 但是它們僅以一般和描述性含義被使用而并非用于限制的目的。
【主權(quán)項(xiàng)】
1. 一種方法,包括: 檢測(cè)針對(duì)存儲(chǔ)在通信設(shè)備上的數(shù)據(jù)項(xiàng)目的至少一個(gè)屬性的至少一種改變; 經(jīng)由處理器響應(yīng)于檢測(cè)到屬性有所改變而確定該數(shù)據(jù)項(xiàng)目的版本W(wǎng)及該至少一個(gè)屬 性的版本或者該數(shù)據(jù)項(xiàng)目中并未改變的一個(gè)或多個(gè)屬性的一個(gè)或多個(gè)版本; 更新該數(shù)據(jù)項(xiàng)目W包括指示該數(shù)據(jù)項(xiàng)目的版本、該至少一個(gè)屬性的版本W(wǎng)及并未改變 的屬性的版本的標(biāo)記;并且 使得能夠?qū)⒏碌臄?shù)據(jù)項(xiàng)目存儲(chǔ)在該通信設(shè)備上而并不存儲(chǔ)該數(shù)據(jù)項(xiàng)目的一個(gè)或多 個(gè)先前版本,該更新的數(shù)據(jù)項(xiàng)目被配置為在解決對(duì)應(yīng)于該數(shù)據(jù)項(xiàng)目的另一個(gè)數(shù)據(jù)項(xiàng)目中的 沖突數(shù)據(jù)時(shí)被加 W利用。2. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 將更新的數(shù)據(jù)項(xiàng)目復(fù)制到存儲(chǔ)與該數(shù)據(jù)項(xiàng)目相對(duì)應(yīng)的另一個(gè)數(shù)據(jù)項(xiàng)目的另一個(gè)通信 設(shè)備。3. 根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括: 響應(yīng)于在將該更新的數(shù)據(jù)項(xiàng)目復(fù)制到另一個(gè)通信設(shè)備的期間從該另一個(gè)通信設(shè)備接 收到該另一個(gè)數(shù)據(jù)項(xiàng)目而檢測(cè)到該另一個(gè)數(shù)據(jù)項(xiàng)目和該更新的數(shù)據(jù)項(xiàng)目同時(shí)被修改,該另 一個(gè)數(shù)據(jù)項(xiàng)目包括與該更新的數(shù)據(jù)項(xiàng)目的屬性相對(duì)應(yīng)的屬性。4. 根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括: 部分基于檢測(cè)到該另一個(gè)數(shù)據(jù)項(xiàng)目的一個(gè)或多個(gè)屬性是否被更新并且包括比該至少 一個(gè)屬性的版本W(wǎng)及該更新的數(shù)據(jù)項(xiàng)目中的一個(gè)或多個(gè)屬性的相對(duì)應(yīng)版本更為近期的相 應(yīng)版本而確定該另一個(gè)數(shù)據(jù)項(xiàng)目和更新的數(shù)據(jù)項(xiàng)目是否沖突。5. 根據(jù)權(quán)利要求4所述的方法,進(jìn)一步包括: 在該更新的數(shù)據(jù)項(xiàng)目中包括至少一個(gè)更新的屬性和被檢測(cè)為比該更新的數(shù)據(jù)項(xiàng)目的 相對(duì)應(yīng)屬性更為近期的相應(yīng)版本W(wǎng)便獲得包括更新屬性的最近版本的經(jīng)合并數(shù)據(jù)項(xiàng)目。6. 根據(jù)權(quán)利要求1所述的方法,其中該屬性包括一個(gè)或多個(gè)層級(jí)屬性并且該方法進(jìn)一 步包括: 在其中至少一個(gè)屬性有所改變的情況下將被指定為數(shù)據(jù)項(xiàng)目被修改之前的該數(shù)據(jù)項(xiàng) 目的版本的版本分配為每個(gè)屬性的版本。7. 根據(jù)權(quán)利要求6所述的方法,進(jìn)一步包括: 增加數(shù)據(jù)項(xiàng)目在該數(shù)據(jù)項(xiàng)目被修改之前的版本的數(shù)值;并且 將經(jīng)增加的數(shù)值分配為至少一個(gè)經(jīng)改變的屬性的版本的一部分。8. 根據(jù)權(quán)利要求6所述的方法,進(jìn)一步包括: 確定一個(gè)或多個(gè)所檢測(cè)到的孩子屬性的最大版本;并且 將該數(shù)據(jù)項(xiàng)目的版本分配為該孩子屬性的最大版本。9. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 檢測(cè)該數(shù)據(jù)項(xiàng)目的另一個(gè)屬性并且確定該另一個(gè)屬性最初渡包括版本;并且 向該另一個(gè)屬性分配與最接近的祖先屬性的版本相對(duì)應(yīng)的版本。10. -種裝置,包括: 至少一個(gè)處理器;和 至少一個(gè)包括計(jì)算機(jī)程序代碼的存儲(chǔ)器,該計(jì)算機(jī)程序代碼被配置為利用該處理器而 使得該裝置至少執(zhí)行W下: 檢測(cè)針對(duì)存儲(chǔ)在通信設(shè)備上的數(shù)據(jù)項(xiàng)目的至少一個(gè)屬性的至少一種改變; 響應(yīng)于檢測(cè)到屬性有所改變而確定該數(shù)據(jù)項(xiàng)目的版本W(wǎng)及該至少一個(gè)屬性的版本或 者該數(shù)據(jù)項(xiàng)目中并未改變的一個(gè)或多個(gè)屬性的一個(gè)或多個(gè)版本; 更新該數(shù)據(jù)項(xiàng)目W包括指示該數(shù)據(jù)項(xiàng)目的版本、該至少一個(gè)屬性的版本W(wǎng)及并未改變 的屬性的版本的標(biāo)記;并且 使得能夠?qū)⒏碌臄?shù)據(jù)項(xiàng)目存儲(chǔ)在該通信設(shè)備上而并不存儲(chǔ)該數(shù)據(jù)項(xiàng)目的一個(gè)或多 個(gè)先前版本,該更新的數(shù)據(jù)項(xiàng)目被配置為在解決對(duì)應(yīng)于該數(shù)據(jù)項(xiàng)目的另一個(gè)數(shù)據(jù)項(xiàng)目中的 沖突數(shù)據(jù)時(shí)被加 W利用。11. 根據(jù)權(quán)利要求10所述的裝置,其中該存儲(chǔ)器和計(jì)算機(jī)程序代碼進(jìn)一步被配置為利 用該處理器而使得該裝置: 將更新的數(shù)據(jù)項(xiàng)目復(fù)制到存儲(chǔ)與該數(shù)據(jù)項(xiàng)目相對(duì)應(yīng)的另一個(gè)數(shù)據(jù)項(xiàng)目的另一個(gè)通信 設(shè)備。12. 根據(jù)權(quán)利要求11所述的裝置,其中該存儲(chǔ)器和計(jì)算機(jī)程序代碼進(jìn)一步被配置為利 用該處理器而使得該裝置: 響應(yīng)于在將該更新的數(shù)據(jù)項(xiàng)目復(fù)制到另一個(gè)通信設(shè)備的期間從該另一個(gè)通信設(shè)備接 收到該另一個(gè)數(shù)據(jù)項(xiàng)目而檢測(cè)到該另一個(gè)數(shù)據(jù)項(xiàng)目和該更新的數(shù)據(jù)項(xiàng)目同時(shí)被修改,該另 一個(gè)數(shù)據(jù)項(xiàng)目包括與該更新的數(shù)據(jù)項(xiàng)目的屬性相對(duì)應(yīng)的屬性。13. 根據(jù)權(quán)利要求12所述的裝置,其中該存儲(chǔ)器和計(jì)算機(jī)程序代碼進(jìn)一步被配置為利 用該處理器而使得該裝置: 部分基于檢測(cè)到該另一個(gè)數(shù)據(jù)項(xiàng)目的一個(gè)或多個(gè)屬性是否被更新并且包括比該至少 一個(gè)屬性的版本W(wǎng)及該更新的數(shù)據(jù)項(xiàng)目中的一個(gè)或多個(gè)屬性的相對(duì)應(yīng)版本更為近期的相 應(yīng)版本而確定該另一個(gè)數(shù)據(jù)項(xiàng)目和更新的數(shù)據(jù)項(xiàng)目是否沖突。14. 根據(jù)權(quán)利要求13所述的裝置,其中該存儲(chǔ)器和計(jì)算機(jī)程序代碼進(jìn)一步被配置為利 用該處理器而使得該裝置: 在該更新的數(shù)據(jù)項(xiàng)目中包括至少一個(gè)更新的屬性和被檢測(cè)為比該更新的數(shù)據(jù)項(xiàng)目的 相對(duì)應(yīng)屬性更為近期的相應(yīng)版本W(wǎng)便獲得包括更新屬性的最近版本的經(jīng)合并數(shù)據(jù)項(xiàng)目。15. 根據(jù)權(quán)利要求10所述的裝置,其中該屬性包括一個(gè)或多個(gè)層級(jí)屬性并且其中該存 儲(chǔ)器和計(jì)算機(jī)程序代碼進(jìn)一步被配置為利用該處理器而使得該裝置: 在其中至少一個(gè)屬性有所改變的情況下將被指定為數(shù)據(jù)項(xiàng)目被修改之前的該數(shù)據(jù)項(xiàng) 目的版本的版本分配為每個(gè)屬性的版本。16. 根據(jù)權(quán)利要求15所述的裝置,其中該存儲(chǔ)器和計(jì)算機(jī)程序代碼進(jìn)一步被配置為利 用該處理器而使得該裝置: 增加數(shù)據(jù)項(xiàng)目在該數(shù)據(jù)項(xiàng)目被修改之前的版本的數(shù)值;并且 將經(jīng)增加的數(shù)值分配為至少一個(gè)經(jīng)改變的屬性的版本的一部分。17. 根據(jù)權(quán)利要求15所述的裝置,其中該存儲(chǔ)器和計(jì)算機(jī)程序代碼進(jìn)一步被配置為利 用該處理器而使得該裝置: 確定一個(gè)或多個(gè)所檢測(cè)到的孩子屬性的最大版本;并且 將該數(shù)據(jù)項(xiàng)目的版本分配為該孩子屬性的最大版本。18. 根據(jù)權(quán)利要求15所述的裝置,其中該存儲(chǔ)器和計(jì)算機(jī)程序代碼進(jìn)一步被配置為利 用該處理器而使得該裝置: 檢測(cè)該數(shù)據(jù)項(xiàng)目的另一個(gè)屬性并且確定該另一個(gè)屬性最初療包括版本;并且 向該另一個(gè)屬性分配與最接近的祖先屬性的版本相對(duì)應(yīng)的版本。19. 一種計(jì)算機(jī)程序產(chǎn)品,包括至少一個(gè)具有存儲(chǔ)于其中的計(jì)算機(jī)可執(zhí)行程序代碼指 令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可執(zhí)行程序代碼指令包括: 被配置為檢測(cè)針對(duì)存儲(chǔ)在通信設(shè)備上的數(shù)據(jù)項(xiàng)目的至少一個(gè)屬性的至少一種改變的 程序代碼指令; 被配置為響應(yīng)于檢測(cè)到屬性有所改變而確定該數(shù)據(jù)項(xiàng)目的版本W(wǎng)及該至少一個(gè)屬性 的版本或者該數(shù)據(jù)項(xiàng)目中并未改變的一個(gè)或多個(gè)屬性的一個(gè)或多個(gè)版本的程序代碼指令; 被配置為更新該數(shù)據(jù)項(xiàng)目W包括指示該數(shù)據(jù)項(xiàng)目的版本、該至少一個(gè)屬性的版本W(wǎng)及 并未改變的屬性的版本的標(biāo)記的程序代碼指令;和 被配置為使得能夠?qū)⒏碌臄?shù)據(jù)項(xiàng)目存儲(chǔ)在該通信設(shè)備上而并不存儲(chǔ)該數(shù)據(jù)項(xiàng)目的 一個(gè)或多個(gè)先前版本的程序代碼指令,該更新的數(shù)據(jù)項(xiàng)目被配置為在解決對(duì)應(yīng)于該數(shù)據(jù)項(xiàng) 目的另一個(gè)數(shù)據(jù)項(xiàng)目中的沖突數(shù)據(jù)時(shí)被加 W利用。20. 根據(jù)權(quán)利要求19所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括: 被配置為將更新的數(shù)據(jù)項(xiàng)目復(fù)制到存儲(chǔ)與該數(shù)據(jù)項(xiàng)目相對(duì)應(yīng)的另一個(gè)數(shù)據(jù)項(xiàng)目的另 一個(gè)通信設(shè)備的程序代碼指令。
【文檔編號(hào)】G06F9/54GK105912411SQ201610101708
【公開日】2016年8月31日
【申請(qǐng)日】2016年2月24日
【發(fā)明人】J·科斯基米耶斯, O·科斯基米耶斯, T·米科拉
【申請(qǐng)人】諾基亞技術(shù)有限公司