專利名稱:部分項改變跟蹤和同步的制作方法
部分項改變跟蹤和同步
背景
膝上型、手持式和其它便攜式計算機或計算設備隨著其尺寸變得更小并且變 得更便宜而日益普及。另外,便攜式計算機的操作速度和處理能力的提高也增加了 其普及性。許多便攜式計算機能夠儲存諸如地址簿、游戲、計算器等多個應用程序。 這些應用程序可在制造期間被永久安裝在便攜式計算機中(例如,安裝到只讀存儲
器(ROM)上)。或者, 一個或多個應用程序可在購買便攜式計算機之后由用戶 安裝。
隨著這些設備的普及性和計算能力的增加,人們開始不僅僅使用單個計算設 備來儲存數(shù)據(jù)和應用程序。例如,除了常規(guī)的臺式計算機之外,許多人通常還使用 膝上型計算機。諸如蜂窩電話、個人數(shù)字助理(PDA)、因特網(wǎng)服務等其它設備也 用于儲存數(shù)據(jù)和應用程序。
這些計算設備中的每一個可以是分布式計算系統(tǒng)的一部分,其中有關信息可 以是相關的并被儲存在多個這樣的設備上。例如,以高速緩存模式運行的電子郵件 客戶機被設計成在該客戶機上本地保存郵箱的副本。由此,如果用戶具有PDA和 臺式工作計算機,則每一設備將具有本地儲存在其上的電子郵件項。理想地,PDA 的電子郵件信息應當匹配臺式工作計算機處的電子郵件信息。
當相同或相關的信息被儲存在兩個地方時,數(shù)據(jù)可能在一個位置上改變而在 另一位置上沒有改變。這一問題可通過同步來克服,同步是試圖確保分布式系統(tǒng)內 的每一設備具有最新的信息或數(shù)據(jù)的一種自動化過程。然而,同步具有其自己的一 組問題。例如,當兩個設備彼此同步時,這些系統(tǒng)通常在每一項的基礎上,例如, 每一電子郵件消息、每一聯(lián)系人、每一約會等,來跟蹤改變。因此,當兩個設備或 計算系統(tǒng)試圖同步時,會下載整個項,而不管改變的屬性(例如,標志、附件、正 文、收件人等)的大小如何。盡管對于某些高帶寬傳輸系統(tǒng)而言,這一全項跟蹤和 同步過程即使有也只有極少的問題,然而采用例如無線連接等較慢的鏈路,整個項 的下載或流傳送可能會嚴重限制數(shù)據(jù)的傳輸速率。
例如,考慮包括跟蹤標志屬性、收件人屬性、正文屬性和一個或多個附件屬
性等的電子郵件消息。如果跟蹤標志的顏色改變,則必須在與另一設備同步時下載 整個項。如果該電子郵件內的附件和其它數(shù)據(jù)相對較大,則跟蹤標志的這一相對較 小字節(jié)大小的改變導致整個項被下載;由此產(chǎn)生了慢數(shù)據(jù)鏈路上的大數(shù)據(jù)傳輸時 間。
即使使用高帶寬數(shù)據(jù)鏈路,下載整個項仍可能是不合需要的。例如,當顧客 基于下載的字節(jié)數(shù)來為下載項付費時,如果一個項上僅有少量數(shù)據(jù)改變,例如上述 的跟蹤標志,則顧客仍必須為下載整個項付費。這一金錢的浪費可能會導致用戶非 常受挫。
某些復制系統(tǒng)可能是對在每一項的基礎上跟蹤并同步設備的系統(tǒng)的上述缺陷 的一種解決方案。盡管某些復制系統(tǒng)能夠在屬性的基礎上跟蹤改變,但是這些系統(tǒng) 仍具有其自己的內在問題。例如,對于大量的項的每一個別屬性的跟蹤造成了高存
儲和高處理要求兩者。由此,這些跟蹤和同步系統(tǒng)對于大多數(shù)用戶而言是不實用的。 概述
現(xiàn)有同步系統(tǒng)的上述缺陷和缺點通過本發(fā)明的示例性實施例得以克服。請注 意,提供以下概述是為了用簡化的形式來介紹將在以下詳細描述中進一步描述的一 些概念。然而,本概述并不旨在標識出所要求保護的主題的關鍵或必要特征,也不 旨在用于確定所要求保護的主題的范圍。
在一個實施例中,提供了用于通過僅同步所改變項的所選部分而不監(jiān)視該項 內的每一個別屬性的改變來提高客戶機和服務器之間的同步速率的方法、系統(tǒng)和計 算機程序產(chǎn)品。在該實施例中,接收同步自從服務器和客戶機之間的最后一次同步 以來所改變的數(shù)據(jù)項的請求,其中數(shù)據(jù)項表示具有可被修改或以其它方式改變的多 個屬性的完整消息。響應于同步數(shù)據(jù)的請求,首先確定一數(shù)據(jù)項自從最后一次同步 以來是否改變。這一數(shù)據(jù)項包括多個屬性組,該多個屬性組基于行業(yè)常識和對多個 屬性組中的每一個內的屬性如何相關的語義的理解來預定義。接著,確定多個屬性 組中的至少一個屬性組自從最后一次同步以來是否改變。因此,該至少一個屬性組 可在不流傳送整個至少一個數(shù)據(jù)項的情況下同步,以減少在同步時客戶機和服務器 之間的數(shù)據(jù)傳輸?shù)臅r間。
在另一實施例中,提供了用于跟蹤項的所選部分的改變以提高客戶機和服務 器之間的同步速率,而不監(jiān)視項內的每一個別屬性的改變的方法、系統(tǒng)和計算機程 序產(chǎn)品。在該實施例中,出于同步的目的監(jiān)視多個數(shù)據(jù)項,其中多個數(shù)據(jù)項中的每
一個表示具有可被修改或以其它方式改變的多個屬性的完整消息。在這一監(jiān)視期 間,確定一數(shù)據(jù)項自從客戶機和服務器之間的最后一次同步以來是否改變,其中該 數(shù)據(jù)項包括多個屬性組,該多個屬性組基于行業(yè)常識和對多個屬性組中的每一個內 的屬性如何相關的語義的理解來預定義。
基于數(shù)據(jù)項已改變的判定,更新與數(shù)據(jù)項相關聯(lián)的項改變標識符,該標識符 將用于標識該數(shù)據(jù)項已改變以便與客戶機進行同步。因此,還確定多個屬性組中的 至少一個屬性組自從最后一次同步以來是否改變?;谥辽僖粋€屬性組已改變的判 定,更新與該至少一個屬性組相關聯(lián)的屬性組改變標識符,該標識符將用于標識該 至少一個屬性組已改變,使得僅該至少一個屬性組將與客戶機同步以便減少客戶機 和服務器之間的數(shù)據(jù)傳輸?shù)臅r間。
在另一實施例中,本發(fā)明還提供了其上儲存有項數(shù)據(jù)結構的一個或多個計算 機可讀介質。該項數(shù)據(jù)結構包括以下能夠被修改或以其它方式改變的多個屬性; 用于指示多個屬性中的一個或多個自從與客戶機的最后一次同步以來是否被修改 或以其它方式改變的項改變標識符;各自包括多個屬性中的一個或多個屬性的多個 屬性組,其中多個屬性組基于行業(yè)常識和對多個屬性組中的每一個內的一個或多個 屬性如何相關的語義的理解來預定;以及多個屬性組改變標識符,用于指示多個屬 性組中的哪一個已改變以便僅同步這些已改變的屬性組而不同步整個項。
本發(fā)明的其它特征和優(yōu)點將在以下描述中闡明,并且其一部分將從該描述中 顯而易見,或者可通過對本發(fā)明的實踐來獲知。本發(fā)明的特征和優(yōu)點可借助所附權 利要求書中具體指出的工具和組合來實現(xiàn)和獲得。本發(fā)明的這些和其它特征將從以 下描述和所附權利要求書中變得更完全清楚,或者可通過如下所述對本發(fā)明的實踐 而獲知。
附圖簡述
為了描述可獲得本發(fā)明的上述和其它優(yōu)點和特征的方式,將參考附圖中所示 的其具體實施例來呈現(xiàn)以上簡要描述的本發(fā)明的更具體描述。要理解這些附圖僅描
繪了本發(fā)明的典型實施例,并且因此并不被認為是限制其范圍,本發(fā)明將通過使用 附圖以附加的特征和細節(jié)來描述和解釋,在附圖中
圖1A示出了根據(jù)示例實施例的用于僅同步屬性組的分布式系統(tǒng);
圖1B示出了根據(jù)示例實施例的對于項的屬性組的映射;
圖1C示出了根據(jù)示例實施例的一個示例同步項流;
圖2A示出了根據(jù)示例實施例的提高客戶機和服務器之間的同步速率的方法 的流程圖2B示出了根據(jù)示例實施例的跟蹤項的所選部分的改變的方法的流程圖;以
及
圖3示出了提供用于實現(xiàn)本發(fā)明的各特征的合適的操作環(huán)境的示例計算系統(tǒng)。 詳細描述
本發(fā)明涉及用于通過僅同步己改變的項的所選部分來提高同步速率的方法、 系統(tǒng)和計算機程序產(chǎn)品。本發(fā)明的各實施例可包括專用或通用計算機,其包括各種 計算機硬件或模塊,如以下更詳細討論的。
在詳細討論此處的實施例之前,定義將在整個申請中使用的一些術語將是有 用的。首先,此處使用"數(shù)據(jù)項"或"項"來表示具有可被修改或以其它方式改變 的屬性的完整消息。例如,數(shù)據(jù)項可以是完整的電子郵件消息、完整的聯(lián)系人、完 整的約會、完整的任務、完整的便箋或可在兩個計算設備之間同步的任何其它類型 的消息。項的"屬性"表示消息中可獨立于其它屬性被修改或以其它方式改變的一 部分。這些屬性的示例包括如跟蹤標志、優(yōu)先級標志、項的正文、各個附件、各個 收件人、消息狀態(tài)、消息優(yōu)先級、或用于消息的任何其它公知的屬性。示例實施例 規(guī)定屬性可被劃分成"屬性組",如將在以下更詳細描述的,屬性組是基于行業(yè)常 識以及對每一屬性組內的屬性如何相關的語義的理解來預定的。
此處的實施例改變了在兩個設備,例如服務器和客戶機之間處理和跟蹤項同 步的方式。對項的改變被放置到上述定義良好的屬性組中,并且每一組獨立于其它 組來跟蹤。例如, 一個組可包含項的正文,另一組可包含附件,而再一組可包括如 跟蹤標志、已讀狀態(tài)、優(yōu)先級標志等高度易失的屬性。注意,由于屬性組是基于行 業(yè)常識良好定義的,因此此處的實施例權衡了典型的復制系統(tǒng)所需的數(shù)據(jù)處理速率 與存儲和/或處理要求。換言之,本發(fā)明通過僅同步已改變的項的所選部分而不監(jiān) 視項內的每一個別屬性的改變來提高客戶機和服務器之間的同步速率。因此,如果 對相對較大的電子郵件消息上的小數(shù)據(jù)屬性(例如,跟蹤標志)作出了改變,則這 一改變不會觸發(fā)向在高速緩存模式下運行的客戶機的較大的下載,并且也不會有對 于用于跟蹤每一個別屬性的高存儲和處理的要求。
在描述本發(fā)明的各實施例的進一步細節(jié)之前,將參考圖3來描述可用于實現(xiàn) 本發(fā)明的原理的一個合適的計算體系結構。在以下描述中,除非另外指明,否則將
參考由一個或多個計算機執(zhí)行的動作和操作的符號表示來描述本發(fā)明的各實施例。 由此,可以理解,有時被稱為計算機執(zhí)行的這類動作和操作包括計算機的處理單元 對以結構化形式表示數(shù)據(jù)的電信號的操縱。這一操縱轉換了數(shù)據(jù)或在計算機的存儲 器系統(tǒng)中的位置上維護它,這以本領域的技術人員都理解的方式重配置或改變了計 算機的操作。維護數(shù)據(jù)的數(shù)據(jù)結構是具有數(shù)據(jù)的格式所定義的特定屬性的存儲器的 物理位置。然而,盡管在上述上下文中描述本發(fā)明,但它并不意味著是限制性的, 如本領域的技術人員所理解的,后文所描述的動作和操作的各方面也可用硬件來實 現(xiàn)。
轉向附圖,其中相同的參考標號指代相同的元素,本發(fā)明的原理被示為在一 合適的計算環(huán)境中實現(xiàn)。以下描述基于所述的本發(fā)明的實施例,并且不應認為是關 于此處未明確描述的替換實施例而限制本發(fā)明。
圖3示出了可用于這些設備的一個示例計算機體系結構的示意圖。出于描述 的目的,所繪的體系結構僅為合適環(huán)境的一個示例,并非對本發(fā)明的使用范圍或功
能提出任何局限。也不應將該計算系統(tǒng)解釋為對圖3所示的任一組件或其組合具有
任何依賴或需求。
本發(fā)明的原理可以使用其它通用或專用計算或通信環(huán)境或配置來操作。適用 于本發(fā)明的眾所周知的計算系統(tǒng)、環(huán)境和配置的示例包括但不限于,移動電話、袖 珍計算機、個人計算機、服務器、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、小型機、 大型計算機、以及包括任一上述系統(tǒng)或設備的分布式計算環(huán)境。
在其最基本的配置中,計算系統(tǒng)300通常包括至少一個處理單元302和存儲 器304。存儲器304可以是易失性(如RAM)、非易失性(如ROM、閃存等)或 兩者的某一組合。這一最基本配置在圖3中由虛線306示出。在本說明書和權利要 求書中,"計算系統(tǒng)"被定義為能夠執(zhí)行軟件、固件或微碼來實現(xiàn)功能的任何硬件 組件或硬件組件的組合。計算系統(tǒng)甚至可以是分布式的以實現(xiàn)分布式功能。
存儲介質設備可具有另外的特征和功能。例如,它們可包括另外的存儲(可 移動和不可移動),包括但不限于,PCMCIA卡、磁盤和光盤、以及磁帶。這類 另外的存儲在圖3中由可移動存儲308和不可移動存儲310示出。計算機存儲介質 包括以用于儲存如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù)等信息的任一 方法和技術實現(xiàn)的易失性和非易失性、可移動和不可移動介質。存儲器304、可移 動存儲308和不可移動存儲310都是計算機存儲介質的示例。計算機存儲介質包括 但不限于,RAM、 ROM、 EEPROM、閃存、其它存儲器技術、CD-ROM、數(shù)字多
功能盤、或其它光存儲、磁盒、磁帶、磁盤存儲、其它磁存儲設備、以及可以用來 儲存期望的信息并可由計算系統(tǒng)訪問的任一其它介質。
如此處所使用的,術語"模塊"或"組件"可以指在計算系統(tǒng)上執(zhí)行的軟件 對象或例程。此處所描述的不同組件、模塊、引擎和服務可被實現(xiàn)為在計算系統(tǒng)上 執(zhí)行(例如,作為單獨的線程)的對象或進程。盡管此處所描述的系統(tǒng)和方法較佳 地以軟件來實現(xiàn),但是硬件或軟件和硬件的組合的實現(xiàn)也是可能并被構想的。在本 說明書中,"計算實體"可以是先前在此定義的任何計算系統(tǒng),或在計算系統(tǒng)上運 行的任何模塊或模塊的組合。
計算系統(tǒng)300還可包含允許主機如通過網(wǎng)絡320與其它系統(tǒng)和設備進行通信 的通信信道312。通信信道312是通信介質的示例。通信介質通??梢栽谥T如載波 或其它傳輸機制等已調制數(shù)據(jù)信號中具體化計算機可讀指令、數(shù)據(jù)結構、程序模塊 或其它數(shù)據(jù),并包括任一信息傳送介質。作為示例而非局限,通信介質包括有線介 質,如有線網(wǎng)絡或直接連線連接,以及無線介質,如聲學、RF、紅外和其它無線 介質。此處使用的術語計算機可讀介質包括存儲介質和通信介質兩者。
計算系統(tǒng)300還可具有輸入組件314,如鍵盤、鼠標、筆、語音輸入組件、觸 摸輸入設備等等。輸出設備316包括屏幕顯示器、揚聲器、打印機等等,以及用于 驅動它們的呈現(xiàn)模塊(通常稱為"適配器")。計算系統(tǒng)300具有電源318。所有 這些組件在本領域中是公知的,并且無需在此詳細討論。
圖1A示出了根據(jù)示例實施例的用于在客戶機105和服務器125之間同步屬性 組104的分布式系統(tǒng)100。分布式系統(tǒng)100可以類似于以上參考圖3所描述的計算 系統(tǒng)300,然而不必如此。如圖1A所示,分布式系統(tǒng)IOO包括可以是多個計算設 備IIO、 115等中的任一個的客戶機105。例如,客戶機105可以是諸如電話110、 PDA 110、膝上型計算機115或任何其它計算設備等無線設備。
注意,本發(fā)明在其中數(shù)據(jù)鏈路較慢的系統(tǒng)中,例如無線通信中是最有優(yōu)勢的。 然而,本發(fā)明不限于這種鏈路,并且可在任何環(huán)境中使用。例如,如上所述,本發(fā) 明可以在要求用戶基于從服務器125傳輸?shù)娇蛻魴C105的數(shù)據(jù)量來為服務付費的系 統(tǒng)中使用。因此,對服務器125和客戶機105之間的特定數(shù)據(jù)鏈路的任何具體參考 在此處僅是出于說明的目的而使用的,并且不意味著限制或以其它方式縮小本發(fā)明 的范圍,除非是明確聲明的。
此外,還要注意,盡管將按照服務器125和客戶機105來描述本發(fā)明,但是 這些設備在此處描述實施例時的角色可以互換。例如,以下描述將按照對出現(xiàn)在服
務器125上的項170的改變來描述,其中這種改變通過將改變流傳送到客戶機105 來同步。然而,注意,也可跟蹤客戶機105上的改變并將其上傳到服務器125。由 此,以下對在服務器125和客戶機105之間發(fā)生的事件的描述一 以及此處用于客戶 機105或服務器125任一個的任何特定設備一在此僅是出于說明的目的而使用的, 并且不意味著限制或以其它方式縮小本發(fā)明的范圍,除非明確聲明。
如圖1A所示,服務器125包括多個文件夾165 (例如,文件夾"A"),其 中每一文件夾165可表示或包括特定類型的項170。例如,文件夾165可包含或包 括電子郵件項消息,而另一文件夾165可包括聯(lián)系人項信息。當然,如上所述,根 據(jù)此處提供的示例實施例,可以有可被同步的各種各樣的項類型。另外,可在實施 本發(fā)明時使用除文件夾165之外的其它拓撲結構和數(shù)據(jù)配置。例如,表或不同地分 割或儲存不同類型的項170的其它方式也可用于本發(fā)明。因此,任何特定的拓撲結 構、數(shù)據(jù)格式、和/或存儲分層結構在此僅出于說明的目的而使用,并且不意味著 限制或以其它方式縮小本發(fā)明的范圍。
如上所述,每一文件夾165將包含多個項170 (例如,項"A")。與每一項 170相關聯(lián)的是項改變標識符(ID) 175,如以下更詳細描述的,該標識符可用于 標識自從服務器125與客戶機105之間的最后一次同步以來項170及其屬性何時已 改變。每一項170中還包括屬性組180 (例如,屬性組"A")。如上所述,屬性 組180是基于行業(yè)常識和對多個屬性組180中的每一個內的屬性如何相關的語義的 理解來預定義的。例如,屬性組可基于屬性的易失性、典型的存儲器大小要求、和 /或其它考慮事項來確定。此外,屬性組180可以包括諸如消息狀態(tài)、跟蹤標志、 優(yōu)先級標志或頻繁修改和/或改變的其它屬性等高度易失的屬性。
或者,或與其相結合地,屬性組180可基于該屬性與其它屬性相比時的相對 大小來定義。例如,附件的大小通常要大于其它屬性,因此可駐留在一個屬性組中, 而諸如消息的收件人和/或正文等較小的數(shù)據(jù)大小可駐留在另一屬性組180中。甚 至可以有用于不與其它屬性良好相關的那些屬性的雜項屬性組180。
注意,盡管屬性組180是基于現(xiàn)有的行業(yè)常識來預定義的,但是這些知識會 經(jīng)歷改變。因此,各實施例規(guī)定屬性組180是可擴展的、可插入的并且可縮放的。 即,屬性組180是以使得每一屬性組180中的屬性可被移除、刪除、添加和/或以 其它方式修改的方式來配置的。類似地,屬性組180本身可被重定義、創(chuàng)建和/或 刪除。另外,屬性組180的定義可取決于項170的類型來改變。例如,對電子郵件 項170定義的屬性組180可以與對聯(lián)系人項170定義的屬性組180不同。由此,如
以下將更詳細描述的,客戶機105將需要知道要用于各個文件夾165內的每一項
170的適當映射190。
不管屬性組180是如何定義的,每一屬性組180通常將被分配一屬性組改變 ID 185,它可用于標識何時對該特定屬性組180發(fā)生了改變。例如,項/屬性組模 塊150可監(jiān)視對項170發(fā)生的改變,以及對于該項170內的每一屬性組180的改變。 當改變發(fā)生時,改變ID生成器160可改變項改變ID175和適當?shù)膶傩越M改變ID 185。
在某些實施例中,項改變ID175和屬性改變ID185可以是相同的標識符,指 示例如項和屬性組被同時更新。然而,注意,在例如使用全局唯一標識符(GUID) 的情況下不必如此。還應當注意,改變ID175、 185可以是任何公知的字母數(shù)字或 其它標識數(shù)據(jù)對象。例如,改變ID 175、 185可以分別是項170和/或屬性組185 的散列。當然,如上所述,改變標識符175、 185可以基于簡單的GUID計數(shù)來生 成。還要注意,用于標識對項170和屬性組180的改變的其它機制也可用于本發(fā)明。 因此,此處描述的用于標識改變的任何特定類型的改變標識符175、 185和/或其使 用僅是出于說明的目的,并且不意味著限制或以其它方式縮小本發(fā)明的范圍,除非 明確聲明。
不論標識175、 185的類型如何,也不論如何標識對屬性組的改變,當服務器 125內的項/屬性模塊150標識一個或多個項170的改變時,可將這一項改變的通知 120發(fā)送給客戶機105以試圖提示客戶機105與服務器125同步。當然,用于提示 客戶機105與服務器125同步的其它機制也可用于本發(fā)明。例如,客戶機105可周 期性地,即在特定的預定間隔查詢服務器125以與其同步。因此,客戶機105和服 務器125之間的同步過程的任何特定啟動此處僅是出于說明的目的而使用的,并且 不意味著限制或以其它方式縮小本發(fā)明的范圍。
盡管如此,在啟動同步過程之后,服務器125應從客戶機105接收同步請求 130。示例性實施例規(guī)定同步請求130可包括可用于確定自從客戶機105與服務器 125之間的最后一次同步以來是否已發(fā)生了改變的一個或多個項令牌125 (例如, 項令牌"A")。在詳細討論項令牌135之前,注意,項令牌135無需被包括在同 步請求130內。例如,其它握手機制可另外提示客戶機105向服務器125發(fā)送項令 牌135?;蛘?,項令牌135可能已經(jīng)被儲存在服務器125上。因此,將項令牌135 包括在同步請求130內此處僅是出于說明的目的而使用的,并且不意味著限制或以 其它方式縮小本發(fā)明的范圍,除非明確聲明。
與每一項令牌135相關聯(lián)的是項改變ID 140。對于每一項改變ID 140或項令 牌135,也有多個屬性組改變ID 145 (例如,屬性組"A"改變ID)。項改變ID 145 和屬性組改變ID 145表示與針對客戶機105和服務器125之間的最后一次改變的 項169和對應的屬性組180相關聯(lián)的那些標識符。換言之,項令牌135可能已作為 數(shù)據(jù)團(blob)被傳遞給客戶機105以便在與服務器125的最后一次同步期間儲存。 該數(shù)據(jù)團135然后可由改變標識符比較器155用于確定自從最后一次同步以來已改 變的項170,尤其是每一項170內的那些屬性組180。
例如,每一項令牌135可以與每一項170進行比較。更具體而言,項令牌135 與實際項170中的改變ID 175、 140和屬性組ID 185、 145可使用改變標識符比較 器155來比較。如果值不同,即對于項令牌135的項改變ID 140和屬性組ID 145 不匹配項改變ID 175和屬性組ID 185,則發(fā)生了項170和屬性組180的改變。如 上所述,盡管將對于項令牌135的改變ID與服務器125上的項170和屬性組180 進行比較以確定自從最后一次同步以來項170和屬性組180何時已改變,但確定對 項170和屬性組180的改變何時或是否發(fā)生的其它方法也可用于本發(fā)明。例如,服 務器125可儲存確定客戶機側105上需要什么改變所需的所有信息,而無需改變 ID 140、 145、 175、 185。因此,如此處所描述的對改變ID 140、 145、 175、 185 的具體使用僅是出于說明的目的,并且不意味著限制或以其它方式縮小本發(fā)明的范 圍,除非明確聲明。
不論如何標識已改變的屬性組104,這一已改變的屬性組104可被包括在同步 項流102內,該流可根據(jù)以下描述的示例實施例被發(fā)送給客戶機105。此外,如上 所述,由特定的版本化ID 195標識的映射190也可在同步項流102之前、期間或 之后被發(fā)送。如將在以下更詳細討論的,同步項流102內的屬性組104應標識用于 這一屬性組104的版本195的特定映射190。
圖1B示出了用于特定版本標識符195的映射190的示例框圖。如圖所示,映 射190包括多個項106和對于每一項106的屬性組108、 114。當然,可以有可在 任何特定項106內標識的任何數(shù)目的屬性組108、 114。此外,對于每一特定屬性 組108、 114,還映射屬性112、 116。例如,屬性組"A" 108可包括屬性112 "C" 和"E",而屬性組"B" 114可包括屬性"A" 106。
考慮其中映射190標識具有針對相對較小的、易失性數(shù)據(jù)屬性的屬性組"A" 108的電子郵件項106,而用于屬性組"B" 114的映射包括較大屬性的示例。如此, 屬性組"A" 108內的屬性"C" 112和屬性"E" 112可以分別是跟蹤標志和優(yōu)先
級標志。另一方面,對屬性組"B" 114的屬性"A" 116可以是附件文件。當然, 提供映射190的其它公知的方式也可用于本發(fā)明。因此,在圖1B內提供的映射配 置此處僅出于說明的目的而使用,并且不意味著限制或以其它方式縮小本發(fā)明的范 圍,除非明確聲明。
注意,當前和先前的屬性組映射190可以被持久保存在服務器數(shù)據(jù)庫上,并 且可通過版本ID 195來訪問。如果遇到具有未知的版本標識符195的項170,或 者該項沒有組標識符,則應當如同該項沒有任何屬性分組180并且應當作為整體對 待一樣來對待該項。因此,如果諸如此類的項170需要被下載到客戶機105,則流 傳送102整個項170。
一個實施例提供了通過以下稱為快速傳輸?shù)牧鱾魉蜋C制的同步。這一過程允 許服務器125通過分解所改變的屬性組104并將其串行化成一原始二進制比特流來 對同步請求130作出響應。服務器125將它能夠打包的盡可能多的消息102打包到 一固定大小的響應緩沖區(qū)中,并將數(shù)據(jù)102返回給客戶機105??蛻魴C105然后解 析該數(shù)據(jù),并通過解串行化字節(jié)流102來重構屬性組104。字節(jié)流102的一個示例 格式在以下參考圖1C示出,該圖示出了同步項流102的一個示例,即同步項流102 可能看上去像什么的有線傳輸(或無線傳輸)數(shù)據(jù)表示。
同步項流102的第一部分是被添加到流102的開頭的IncrSyncProgressItem(項 的增量同步進展)118,用于提供關于響應流102中接下來的所有項的總大小的信 息。接著,IncrSyncProgressPerltem (每一項的增量同步進展)122指示同步項流 102中的下一項的總大小。同步流102內的下一分組124是如由標記 IncrSyncPropGroupMap (增量同步屬性組映射)指示的映射,它告訴客戶機105流 102中接下來的一個或多個項將使用什么屬性組映射。因此,可使用 IncrSyncPropGroup (增量同步屬性組)標記以及每一屬性組180內的屬性ID的數(shù) 組或列表來標識各種屬性組180。換言之,同步項流102可包括如此處所描述的對 于各種版本ID195的映射190或一組映射190。然而,注意,如上所述,映射190 無需被包括在同步項流102內,而是可以跟在同步流102之后或在其之前。
接下來的一組標簽126,即IncrSynPropGroup ID (增量同步屬性組ID)表示 流中接下來的一個或多個項使用什么屬性組映射。即,該組126內的版本ID標識 了用于接下來的項的版本標識195的映射190。接著,IncrSynChgltem (增量同步 已改變項)128是表示改變的項的開頭的標記,之后是要在該項內改變的屬性組的 數(shù)組。例如,如IncrSynChgPropGroup (增量同步已改變屬性組)132中的標記所
示,可標識已改變的各個屬性組。例如,如在流134中所示,IncrSnyChgPropGroup 通過首先使DdProp (刪除屬性)元素刪除當前的ItemRecipients (項收件人),然 后使用StartRecip (開始收件人)和EndRecip (結束收件人)標記來替換收件人屬 性,來改變收件人屬性。作為另一示例,流136中的元素包括用于項附件的 IncrSyncChgPropGroup,使得當前的ItemAttachments (項附件)將使用DelProp來 刪除,并使用NewAttach (新附件)和EndAttach (結束附件)標記來替換。當然, 如由之后提供的省略號所指示的,可在流內包括其它屬性組。
其它示例性實施例能夠將同步項的現(xiàn)有方法與此處提供的當前實施例相結 合。例如,在不提供任何映射的傳統(tǒng)系統(tǒng)中,可能在同步項流102內下載整個項。 例如,如元素138中所示,IncrSyncProgressPerltem指示下一項的總大小,而 IncrSyncChgltem標記了改變項的開始。接下來的標記,即用于IncrSyncDel (增量 同步刪除)、IncrSyncRead (增量同步已讀)以及IncrSyncEnd (增量同步結束) 的標記142分別表示(l)要從客戶機105刪除的項的列表;(2)如下的已讀狀態(tài)轉 換;以及(3)表示同步會話結束的標記。最后,IncrSyncStateBegin (增量同步狀態(tài) 開始)表示字節(jié)流中接下來的最終同步狀態(tài),而IncrySyncStateEnd (增量同步狀態(tài) 結束)是表示同步狀態(tài)完成的標記。
本發(fā)明也可按照包括功能步驟和/或非功能動作的方法來描述。以下是可在實 施本發(fā)明時執(zhí)行的動作和步驟的描述。通常,功能步驟按照所實現(xiàn)的結果來描述本 發(fā)明,而非功能動作描述了用于實現(xiàn)特定結果的更具體的行動。盡管可以按特定的 順序描述或要求保護功能步驟或非功能動作,然而本發(fā)明不限于任何特定的順序或 動作和/或步驟的組合。此外,對步驟和/或動作的使用是權利要求書的敘述,并且 在以下圖2A和2B的流程圖的描述中用于指示對這些術語的期望的具體使用。
圖2A和2B示出了用于本發(fā)明的各示例性實施例的流程圖。以下圖2A和2B 的描述將偶爾會涉及圖1A-C中的對應元素。盡管可對這些圖中的具體元素作出參 考,但是這些元素僅出于說明的目的而使用,并且不旨在限制或以其它方式縮小本 發(fā)明的范圍,除非明確聲明。
圖2A示出了通過僅同步已改變的項的所選部分來提高客戶機和服務器之間 的同步速率,而不監(jiān)視項內的每一個別屬性的改變的方法200的流程圖。方法200 包括接收205同步數(shù)據(jù)項的請求的動作。例如,服務器125可接收同步自從服務器 125和客戶機105之間的最后一次同步以來已改變的數(shù)據(jù)項170的請求130,其中 數(shù)據(jù)項170表示具有可被修改或以其它方式改變的各種屬性的完整消息。例如,數(shù)
據(jù)項170可以是電子郵件消息、聯(lián)系人、約會、日歷信息、任務、便箋等等。屬性 可包括收件人、地址、正文、附件、標志、狀態(tài)標識符、或任何其它多種用于消息
的屬性。還要注意,服務器125和客戶機105之間用于同步數(shù)據(jù)項170的數(shù)據(jù)鏈路 可以是無線連接或有線連接,其中客戶機105上的顧客基于從服務器125下載的字 節(jié)數(shù)來為同步數(shù)據(jù)項170付費。
方法200還可包括用于減少225客戶機和服務器之間的數(shù)據(jù)傳輸時間的步驟。 更具體而言,用于225的步驟包括確定210—數(shù)據(jù)項自從最后一次同步以來已改變 的動作。例如,服務器125可確定(使用改變ID比較器155或此處描述的其它方 法)數(shù)據(jù)項170自從客戶機105和服務器125之間的最后一次同步以來已改變。如 上所述,數(shù)據(jù)項170包括基于行業(yè)常識和對每一屬性組內的一個或多個屬性如何相 關的語義的理解來預定義的屬性組170。例如,在電子郵件消息中,各屬性組可包 括正文屬性、收件人屬性組、主題屬性組、附件屬性組、優(yōu)先級標志屬性組、已讀 狀態(tài)屬性組、雜項屬性組、和/或其任何組合。當然,可定義其它屬性組,并且其 它屬性組是可擴展的、可插入的和可縮放的,使得屬性組內的屬性可被添加、刪除 或以其它方式在其中重新定義,并使得每一屬性組可被添加、刪除或基于行業(yè)常識 的改變而以其它方式重新定義。
用于225的步驟還可包括確定215數(shù)據(jù)項內的哪一屬性組自從最后一次同步 以來已改變。例如,項/屬性組模塊155和改變ID比較器155可用于確定哪些屬性 組180自從最后一次同步以來已改變。因此,用于225的步驟包括在不流傳送整個 數(shù)據(jù)項的情況下同步220已改變的一個或多個組的動作。具體地,同步項流102 可與自從最后一次同步以來已改變的各屬性組104 —起被流傳送到客戶機105,而 無需流傳送整個數(shù)據(jù)項170,以便減少在同步時客戶機和服務器之間的數(shù)據(jù)傳輸時 間。
對數(shù)據(jù)項170以及屬性組180中的改變的確定可以基于用于數(shù)據(jù)項和屬性組 的改變標識符140、 145、 175、 185。此外,用于數(shù)據(jù)項170和屬性組180的改變 標識符141、 145、 175、 185可以相同。此外,用于數(shù)據(jù)項170和屬性組180的改 變標識符140、 145、 175、 185可以是字母數(shù)字、全局唯一標識符或散列值。
其它實施例提供了數(shù)據(jù)項170和其中的屬性組180的映射190。映射可在發(fā)送 已改變的屬性組104的同步項流之前、期間或之后發(fā)送。在任何情況下,客戶機 105可使用映射190來了解每一屬性組180中包括了什么屬性。此外,第二數(shù)據(jù)項 170可被確定為已改變,但是沒有屬性組180。在這一情況下,可將整個第二數(shù)據(jù)
170流傳送到客戶機105。
圖2B示出了跟蹤對項的所選部分的改變以提高客戶機和服務器之間的同步 速率,而不監(jiān)視項內的每一個別屬性的改變的方法250的流程圖。方法250包括為 同步的目的監(jiān)視255多個數(shù)據(jù)項的動作。例如,項/屬性組模塊150或其它組件可 監(jiān)視數(shù)據(jù)項170,其中數(shù)據(jù)項170表示具有可被修改或以其它方式改變的多個屬性 的完整消息。這些屬性包括但不限于先前在此描述的那些屬性,如附件、標志、正 文部分等等。
方法250還包括確定260 —數(shù)據(jù)項自從客戶機和服務器之間的最后一次同步 以來已改變的動作。例如,改變標識符比較器155可用于確定數(shù)據(jù)項170自從服務 器125和客戶機105之間的最后一次同步以來己改變。如上所述,數(shù)據(jù)項包括基于 行業(yè)常識和對每一屬性組內的屬性如何相關的語義的了解來預定義的多個屬性組 180。基于數(shù)據(jù)項已改變的判定,方法250還包括更新265項改變標識符的動作。 例如,改變標識符生成器160可用于更新與數(shù)據(jù)項170相關聯(lián)的項改變ID 175, 該ID將用于標識項170已改變以便與客戶機105同步。
類似地,方法250包括確定270數(shù)據(jù)項內的哪一屬性組已改變的動作。即, 項/屬性組模塊150內的改變標識符比較器155可用于確定哪些屬性組180自從客 戶機105和服務器125之間的最后一次同步以來已改變?;谝粚傩越M已改變的判 定,方法250包括更新275屬性組改變標識符的動作。例如,改變標識符生成器 160可用于更新用于屬性組180的改變ID 185,該ID將用于標識屬性組180已改 變,使得僅屬性組180將與客戶機105同步,以便減少客戶機105和服務器125 之間的數(shù)據(jù)傳輸時間。還要注意,以上描述的其它替換實施例也可用于方法250。
本發(fā)明可以用其它具體形式來實施而不偏離其精神或本質特征。所描述的實 施例在所有方面都被認為僅是說明性而非限制性的。因此,本發(fā)明的范圍由所附權 利要求書而非以上描述來指示。落入權利要求書的等效技術方案的意義和范圍之內 的所有改變都被包含在其范圍之內。
權利要求
1. 在包括被配置成本地高速緩存從服務器下載的項、并周期性地同步這些項的改變的客戶機的分布式計算系統(tǒng)中,一種通過僅同步已改變的項的所選部分而不監(jiān)視所述項內的每一個別屬性的改變來提高所述客戶機和所述服務器之間的同步速率的方法,所述方法包括以下動作接收同步自從服務器和客戶機之間的最后一次同步以來已改變的數(shù)據(jù)項的請求,其中數(shù)據(jù)項標識具有可被修改或以其它方式改變的多個屬性的完整消息;響應于所述同步數(shù)據(jù)的請求,確定自從最后一次同步以來至少一個數(shù)據(jù)項已改變,其中所述至少一個數(shù)據(jù)項包括多個屬性組,所述多個屬性組是基于行業(yè)常識和對所述多個屬性組中的每一個內的一個或多個屬性如何相關的語義的理解來預定義的;確定所述多個屬性組中的至少一個屬性組自從最后一次同步以來已改變;以及在不流傳送整個所述至少一個數(shù)據(jù)項的情況下同步所述至少一個屬性組,以減少在同步時所述客戶機和服務器之間的數(shù)據(jù)傳輸時間。
2. 如權利要求l所述的方法,其特征在于,所述數(shù)據(jù)項選自電子郵件、聯(lián)系 人消息、約會消息、日歷信息、任務消息或便箋消息。
3. 如權利要求l所述的方法,其特征在于,所述多個屬性組是正文屬性組、 收件人屬性組、回復數(shù)據(jù)屬性組、主題屬性組、附件屬性組、優(yōu)先級標志屬性組、 跟蹤屬性組、已讀狀態(tài)屬性組或雜項屬性組中的一個或多個。
4. 如權利要求1所述的方法,其特征在于,所述多個屬性組是基于所述多個 屬性組中的每一個內的一個或多個屬性的易失性、典型存儲器大小或兩者來預定義 的。
5. 如權利要求l所述的方法,其特征在于,所述預定義的多個屬性組是可擴 展的、可插入的以及可縮放的,使得基于行業(yè)常識,所述多個屬性組中的每一個內 的一個或多個屬性可被添加、刪除或以其它方式在其中重新定義,并使得所述多個 屬性組中的每一個可被添加、刪除或以其它方式重新定義。
6. 如權利要求l所述的方法,其特征在于,所述客戶機和所述服務器之間用 于同步所述數(shù)據(jù)項的數(shù)據(jù)鏈路是有線連接,并且其中所述客戶機上的顧客基于從所 述服務器下載的字節(jié)數(shù)來為所述數(shù)據(jù)項的同步付費。
7. 如權利要求l所述的方法,其特征在于,對所述至少一個數(shù)據(jù)項中的改變 以及所述至少一個屬性組中的改變的判定分別基于用于所述至少一個數(shù)據(jù)項和所 述至少一個屬性組的改變標識符。
8. 如權利要求1所述的方法,其特征在于,所述至少一個數(shù)據(jù)項和所述至少 一個數(shù)據(jù)項內的至少一個屬性組的映射在同步所述至少一個屬性組之前、期間或之 后被發(fā)送給所述客戶機,以使所述客戶機了解在所述至少一個屬性組中的每一個內 包括了什么屬性。
9. 如權利要求8所述的方法,其特征在于,第二數(shù)據(jù)項被確定為已改變,但是沒有至少一個屬性組,并且其中整個所述第二數(shù)據(jù)項被流傳送到所述客戶機。
10. 在包括被配置成本地高速緩存從服務器下載的項、并周期性地同步這些 項的改變的客戶機的分布式計算系統(tǒng)中,一種跟蹤對項的所選部分的改變以提高所 述客戶機和服務器之間的同步速率,而不監(jiān)視所述項內的每一個別屬性的改變的方法,所述方法包括以下動作為同步的目的監(jiān)視多個數(shù)據(jù)項,所述多個數(shù)據(jù)項中的每一個表示具有可被修 改或以其它方式改變的多個屬性的完整消息;確定自從服務器和客戶機之間的最后一次同步以來至少一個數(shù)據(jù)項已改變, 其中所述至少一個數(shù)據(jù)項包括多個屬性組,所述多個屬性組是基于行業(yè)常識和對所述多個屬性組中的每一個內的一個或多個屬性如何相關的語義的理解來預定義的; 基于所述數(shù)據(jù)項已改變的判定,更新與所述數(shù)據(jù)項相關聯(lián)的項改變標識符,所述項改變標識符將用于標識所述數(shù)據(jù)項已改變以便與所述客戶機同步;確定所述多個屬性組中的至少一個屬性組自從最后一次同步以來已改變;以及基于所述至少一個屬性組已改變的判定,更新與所述至少一個屬性組相關聯(lián) 的屬性組改變標識符,所述屬性組改變標識符將用于標識所述至少一個屬性組已改 變,使得僅所述至少一個屬性組將與所述客戶機同步以便減少所述客戶機和服務器 之間的數(shù)據(jù)傳輸時間。
11. 如權利要求IO所述的方法,其特征在于,所述項改變標識符與所述屬性 組改變標識符相同。
12. 如權利要求IO所述的方法,其特征在于,用于所述至少一個數(shù)據(jù)項和所 述至少一個屬性組的所述改變標識符是字母數(shù)字、全局唯一標識符、或散列值之一。
13. 如權利要求IO所述的方法,其特征在于,所述項改變標識符、所述屬性 組改變標識符或兩者是所述至少一個數(shù)據(jù)項、所述至少一個屬性組或兩者的散列 值。
14. 如權利要求10所述的方法,其特征在于,所述多個屬性組是基于所述多 個屬性組中的每一個內的一個或多個屬性的易失性、典型存儲器大小或兩者來預定 義的。
15. 如權利要求10所述的方法,其特征在于,所述預定義的多個屬性組是可擴展的、可插入的以及可縮放的,使得基于行業(yè)常識,所述多個屬性組中的每一個 內的多個屬性可被添加、刪除或以其它方式在其中重新定義,并使得所述多個屬性 組中的每一個可被添加、刪除或以其它方式重新定義。
16. 如權利要求IO所述的方法,其特征在于,所述客戶機和所述服務器之間 用于同步所述數(shù)據(jù)項的數(shù)據(jù)鏈路是無線連接。
17. —種或多種其上具有項數(shù)據(jù)結構的計算機可讀介質,所述項數(shù)據(jù)結構包括能夠被修改或以其它方式更改的多個屬性;用于指示所述多個屬性中的一個或多個自從與客戶機的最后一次同步以來是否已被修改或以其它方式改變的項改變標識符;多個屬性組,其每一個都包括所述多個屬性中的一個或多個屬性,其中所述 多個屬性組是基于行業(yè)常識以及對所述多個屬性組中的每一個內的一個或多個屬性如何相關的語義的理解來預定的;以及多個屬性組改變標識符,用于指示所述多個屬性組中的哪一個已改變以便僅 同步已改變的那些屬性組而不同步整個項。
18. 如權利要求17所述的計算機可讀介質,其特征在于,所述項改變標識符、 所述多個屬性組改變標識符或兩者是所述項數(shù)據(jù)結構、所述多個屬性組中的至少一 個或兩者的散列值。
19. 如權利要求17所述的計算機可讀介質,其特征在于,所述項數(shù)據(jù)結構選 自電子郵件消息、聯(lián)系人消息、約會消息、日歷信息、任務消息或便箋消息。
20. 如權利要求17所述的計算機可讀介質,其特征在于,所述多個屬性組是 正文屬性組、收件人屬性組、回復數(shù)據(jù)屬性組、主題屬性組、附件屬性組、優(yōu)先級 標志屬性組、跟蹤屬性組、巳讀狀態(tài)屬性組、或雜項屬性組中的一個或多個。
全文摘要
此處的實施例改變了在兩個設備之間處理和跟蹤項同步的方式。對項的改變根據(jù)良好定義的屬性組來跟蹤,并且每一組獨立于其它組來跟蹤。例如,一個組可包含大數(shù)據(jù)項,例如附件,而另一組可包括高度易失的屬性,如跟蹤標志。本發(fā)明通過僅同步已改變的項的所選部分而不監(jiān)視項內的每一個別屬性的改變來提高客戶機和服務器之間的同步速率。因此,如果對相對較大的電子郵件消息上的小數(shù)據(jù)屬性(例如,跟蹤標志)作出了改變,則這一改變將不會觸發(fā)向運行在高速緩存模式下的客戶機的大量下載,也不會有對用于跟蹤每一個別屬性的高存儲和處理的要求。
文檔編號G06F15/16GK101385017SQ200680029649
公開日2009年3月11日 申請日期2006年7月20日 優(yōu)先權日2005年8月15日
發(fā)明者A·C·鄧恩, J·R·沃倫, R·R·諾維特斯基 申請人:微軟公司