[go: up one dir, main page]

CN102207957A - Partial item change tracking and synchronization - Google Patents

Partial item change tracking and synchronization Download PDF

Info

Publication number
CN102207957A
CN102207957A CN2011101000857A CN201110100085A CN102207957A CN 102207957 A CN102207957 A CN 102207957A CN 2011101000857 A CN2011101000857 A CN 2011101000857A CN 201110100085 A CN201110100085 A CN 201110100085A CN 102207957 A CN102207957 A CN 102207957A
Authority
CN
China
Prior art keywords
item
changed
attribute
attributes
data item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011101000857A
Other languages
Chinese (zh)
Other versions
CN102207957B (en
Inventor
A·C·邓恩
J·R·沃伦
R·R·诺维特斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=37758031&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN102207957(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102207957A publication Critical patent/CN102207957A/en
Application granted granted Critical
Publication of CN102207957B publication Critical patent/CN102207957B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/234Monitoring or handling of messages for tracking messages
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)

Abstract

本发明涉及部分项改变跟踪和同步。此处的实施例改变了在两个设备之间处理和跟踪项同步的方式。对项的改变根据良好定义的属性组来跟踪,并且每一组独立于其它组来跟踪。本发明通过仅同步已改变的项的所选部分而不监视项内的每一个别属性的改变来提高客户机和服务器之间的同步速率。因此,如果对相对较大的电子邮件消息上的小数据属性(例如,跟踪标志)作出了改变,则这一改变将不会触发向运行在高速缓存模式下的客户机的大量下载,也不会有对用于跟踪每一个别属性的高存储和处理的要求。

Figure 201110100085

The present invention relates to partial item change tracking and synchronization. Embodiments herein change the way item synchronization is handled and tracked between two devices. Changes to items are tracked according to well-defined sets of properties, and each set is tracked independently of the others. The present invention increases the rate of synchronization between a client and server by only synchronizing selected portions of items that have changed without monitoring every individual attribute within the item for changes. Therefore, if a change is made to a small data attribute (for example, a trace flag) on a relatively large e-mail message, this change will not trigger a large download to a client running in cached mode, nor will the There would be high storage and processing requirements for tracking each individual attribute.

Figure 201110100085

Description

部分项改变跟踪和同步Partial item change tracking and synchronization

本申请为申请日为2008年2月14日申请号为第200680029649.X号发明名称为“部分项改变跟踪和同步”的中国专利申请的分案申请。This application is a divisional application of a Chinese patent application with an application date of February 14, 2008, application number No. 200680029649.X, and the title of the invention is "tracking and synchronization of partial item changes".

背景background

膝上型、手持式和其它便携式计算机或计算设备随着其尺寸变得更小并且变得更便宜而日益普及。另外,便携式计算机的操作速度和处理能力的提高也增加了其普及性。许多便携式计算机能够储存诸如地址簿、游戏、计算器等多个应用程序。这些应用程序可在制造期间被永久安装在便携式计算机中(例如,安装到只读存储器(ROM)上)。或者,一个或多个应用程序可在购买便携式计算机之后由用户安装。Laptop, handheld and other portable computers or computing devices are increasing in popularity as they become smaller in size and less expensive. In addition, improvements in the operating speed and processing power of portable computers have also increased their popularity. Many portable computers are capable of storing multiple applications such as address books, games, calculators, etc. These application programs may be permanently installed in the portable computer (eg, onto read-only memory (ROM)) during manufacture. Alternatively, one or more applications may be installed by the user after purchasing the portable computer.

随着这些设备的普及性和计算能力的增加,人们开始不仅仅使用单个计算设备来储存数据和应用程序。例如,除了常规的台式计算机之外,许多人通常还使用膝上型计算机。诸如蜂窝电话、个人数字助理(PDA)、因特网服务等其它设备也用于储存数据和应用程序。As the popularity and computing power of these devices increased, people began to use more than a single computing device to store data and applications. For example, many people commonly use laptop computers in addition to conventional desktop computers. Other devices such as cellular phones, personal digital assistants (PDAs), Internet services, etc. are also used to store data and applications.

这些计算设备中的每一个可以是分布式计算系统的一部分,其中有关信息可以是相关的并被储存在多个这样的设备上。例如,以高速缓存模式运行的电子邮件客户机被设计成在该客户机上本地保存邮箱的副本。由此,如果用户具有PDA和台式工作计算机,则每一设备将具有本地储存在其上的电子邮件项。理想地,PDA的电子邮件信息应当匹配台式工作计算机处的电子邮件信息。Each of these computing devices may be part of a distributed computing system, where relevant information may be correlated and stored on multiple such devices. For example, an e-mail client running in cached mode is designed to keep a copy of the mailbox locally on the client. Thus, if a user has a PDA and a desktop work computer, each device will have email items stored locally on it. Ideally, the PDA's email information should match the email information at the desktop work computer.

当相同或相关的信息被储存在两个地方时,数据可能在一个位置上改变而在另一位置上没有改变。这一问题可通过同步来克服,同步是试图确保分布式系统内的每一设备具有最新的信息或数据的一种自动化过程。然而,同步具有其自己的一组问题。例如,当两个设备彼此同步时,这些系统通常在每一项的基础上,例如,每一电子邮件消息、每一联系人、每一约会等,来跟踪改变。因此,当两个设备或计算系统试图同步时,会下载整个项,而不管改变的属性(例如,标志、附件、正文、收件人等)的大小如何。尽管对于某些高带宽传输系统而言,这一全项跟踪和同步过程即使有也只有极少的问题,然而采用例如无线连接等较慢的链路,整个项的下载或流传送可能会严重限制数据的传输速率。When the same or related information is stored in two places, data may change in one location but not in another. This problem can be overcome through synchronization, which is an automated process that attempts to ensure that each device within a distributed system has the latest information or data. However, synchronization has its own set of problems. For example, when two devices are synchronized with each other, these systems typically track changes on a per-item basis, eg, per email message, per contact, per appointment, etc. Thus, when two devices or computing systems attempt to synchronize, the entire item is downloaded regardless of the size of the changed attributes (eg, logo, attachments, body, recipients, etc.). While this full item tracking and synchronization process is rarely, if ever, problematic for some high-bandwidth transfer systems, over slower links such as wireless connections, downloading or streaming of entire items can be a serious problem. Limit the transfer rate of data.

例如,考虑包括跟踪标志属性、收件人属性、正文属性和一个或多个附件属性等的电子邮件消息。如果跟踪标志的颜色改变,则必须在与另一设备同步时下载整个项。如果该电子邮件内的附件和其它数据相对较大,则跟踪标志的这一相对较小字节大小的改变导致整个项被下载;由此产生了慢数据链路上的大数据传输时间。For example, consider an email message that includes a traceflag attribute, a recipient attribute, a body attribute, one or more attachment attributes, and so on. If the color of the tracking flag changes, the entire item must be downloaded when syncing with another device. If the attachments and other data within the e-mail are relatively large, this relatively small byte-size change of the trace flag causes the entire item to be downloaded; thereby creating a large data transfer time over a slow data link.

即使使用高带宽数据链路,下载整个项仍可能是不合需要的。例如,当顾客基于下载的字节数来为下载项付费时,如果一个项上仅有少量数据改变,例如上述的跟踪标志,则顾客仍必须为下载整个项付费。这一金钱的浪费可能会导致用户非常受挫。Even with high bandwidth data links, downloading entire items may still be undesirable. For example, when a customer pays for a downloaded item based on the number of bytes downloaded, if only a small amount of data changes on an item, such as the tracking flags described above, the customer must still pay for the entire item to be downloaded. This waste of money can be very frustrating for the user.

某些复制系统可能是对在每一项的基础上跟踪并同步设备的系统的上述缺陷的一种解决方案。尽管某些复制系统能够在属性的基础上跟踪改变,但是这些系统仍具有其自己的内在问题。例如,对于大量的项的每一个别属性的跟踪造成了高存储和高处理要求两者。由此,这些跟踪和同步系统对于大多数用户而言是不实用的。Certain replication systems may be a solution to the above-mentioned deficiencies of systems that track and synchronize devices on a per-item basis. Although some replication systems are able to track changes on an attribute basis, these systems have their own inherent problems. For example, tracking of each individual attribute for a large number of items creates both high storage and high processing requirements. As such, these tracking and synchronization systems are not practical for most users.

概述overview

现有同步系统的上述缺陷和缺点通过本发明的示例性实施例得以克服。请注意,提供以下概述是为了用简化的形式来介绍将在以下详细描述中进一步描述的一些概念。然而,本概述并不旨在标识出所要求保护的主题的关键或必要特征,也不旨在用于确定所要求保护的主题的范围。The above-mentioned deficiencies and shortcomings of existing synchronization systems are overcome by the exemplary embodiments of the present invention. Please note that the following summary is provided to introduce in simplified form a selection of concepts that are further described below in the detailed description. This Summary is not intended, however, to identify key or essential features of the claimed subject matter, nor is it intended for use in determining the scope of the claimed subject matter.

在一个实施例中,提供了用于通过仅同步所改变项的所选部分而不监视该项内的每一个别属性的改变来提高客户机和服务器之间的同步速率的方法、系统和计算机程序产品。在该实施例中,接收同步自从服务器和客户机之间的最后一次同步以来所改变的数据项的请求,其中数据项表示具有可被修改或以其它方式改变的多个属性的完整消息。响应于同步数据的请求,首先确定一数据项自从最后一次同步以来是否改变。这一数据项包括多个属性组,该多个属性组基于行业常识和对多个属性组中的每一个内的属性如何相关的语义的理解来预定义。接着,确定多个属性组中的至少一个属性组自从最后一次同步以来是否改变。因此,该至少一个属性组可在不流传送整个至少一个数据项的情况下同步,以减少在同步时客户机和服务器之间的数据传输的时间。In one embodiment, a method, system, and computer are provided for increasing the rate of synchronization between a client and server by synchronizing only selected portions of changed items without monitoring changes to every individual attribute within the item program product. In this embodiment, a request to synchronize a data item that has changed since the last synchronization between the server and client is received, wherein the data item represents a complete message with a number of attributes that may be modified or otherwise changed. In response to a request to synchronize data, it is first determined whether a data item has changed since the last synchronization. This data item includes a plurality of attribute groups that are predefined based on common industry knowledge and an understanding of the semantics of how attributes within each of the plurality of attribute groups are related. Next, it is determined whether at least one attribute group of the plurality of attribute groups has changed since the last synchronization. Thus, the at least one attribute group can be synchronized without streaming the entire at least one data item, to reduce the time of data transfer between the client and the server when synchronizing.

在另一实施例中,提供了用于跟踪项的所选部分的改变以提高客户机和服务器之间的同步速率,而不监视项内的每一个别属性的改变的方法、系统和计算机程序产品。在该实施例中,出于同步的目的监视多个数据项,其中多个数据项中的每一个表示具有可被修改或以其它方式改变的多个属性的完整消息。在这一监视期间,确定一数据项自从客户机和服务器之间的最后一次同步以来是否改变,其中该数据项包括多个属性组,该多个属性组基于行业常识和对多个属性组中的每一个内的属性如何相关的语义的理解来预定义。In another embodiment, a method, system, and computer program are provided for tracking changes to selected portions of an item to increase the rate of synchronization between a client and a server without monitoring changes to each individual attribute within the item product. In this embodiment, multiple data items are monitored for synchronization purposes, where each of the multiple data items represents a complete message with multiple attributes that may be modified or otherwise changed. During this monitoring period, it is determined whether a data item has changed since the last synchronization between the client and the server, wherein the data item includes a plurality of attribute groups based on industry common sense and knowledge of the plurality of attribute groups The understanding of how the semantics of each of the attributes are related to predefined.

基于数据项已改变的判定,更新与数据项相关联的项改变标识符,该标识符将用于标识该数据项已改变以便与客户机进行同步。因此,还确定多个属性组中的至少一个属性组自从最后一次同步以来是否改变。基于至少一个属性组已改变的判定,更新与该至少一个属性组相关联的属性组改变标识符,该标识符将用于标识该至少一个属性组已改变,使得仅该至少一个属性组将与客户机同步以便减少客户机和服务器之间的数据传输的时间。Based on the determination that the data item has changed, an item change identifier associated with the data item is updated, which will be used to identify that the data item has changed for synchronization with the client. Accordingly, it is also determined whether at least one attribute group of the plurality of attribute groups has changed since the last synchronization. Based on a determination that at least one attribute group has changed, updating an attribute group change identifier associated with the at least one attribute group that will be used to identify that the at least one attribute group has changed such that only the at least one attribute group will be associated with Client synchronization to reduce data transfer time between client and server.

在另一实施例中,本发明还提供了其上储存有项数据结构的一个或多个计算机可读介质。该项数据结构包括以下:能够被修改或以其它方式改变的多个属性;用于指示多个属性中的一个或多个自从与客户机的最后一次同步以来是否被修改或以其它方式改变的项改变标识符;各自包括多个属性中的一个或多个属性的多个属性组,其中多个属性组基于行业常识和对多个属性组中的每一个内的一个或多个属性如何相关的语义的理解来预定;以及多个属性组改变标识符,用于指示多个属性组中的哪一个已改变以便仅同步这些已改变的属性组而不同步整个项。In another embodiment, the present invention also provides one or more computer-readable media having item data structures stored thereon. The item data structure includes the following: a number of attributes that can be modified or otherwise changed; an item change identifier; a plurality of attribute groups each comprising one or more of a plurality of attributes, wherein the plurality of attribute groups are based on industry common knowledge and how the one or more attributes within each of the plurality of attribute groups are related and a plurality of attribute group change identifiers to indicate which of the plurality of attribute groups has changed so that only these changed attribute groups are synchronized and not the entire item.

本发明的其它特征和优点将在以下描述中阐明,并且其一部分将从该描述中显而易见,或者可通过对本发明的实践来获知。本发明的特征和优点可借助所附权利要求书中具体指出的工具和组合来实现和获得。本发明的这些和其它特征将从以下描述和所附权利要求书中变得更完全清楚,或者可通过如下所述对本发明的实践而获知。Additional features and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. Features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by practice of the invention as described below.

附图简述Brief description of the drawings

为了描述可获得本发明的上述和其它优点和特征的方式,将参考附图中所示的其具体实施例来呈现以上简要描述的本发明的更具体描述。要理解这些附图仅描绘了本发明的典型实施例,并且因此并不被认为是限制其范围,本发明将通过使用附图以附加的特征和细节来描述和解释,在附图中:In order to describe the manner in which the above and other advantages and features of the invention may be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are shown in the appended drawings. With the understanding that these drawings depict only typical embodiments of the invention and are therefore not to be considered as limiting its scope, the invention will be described and explained with additional characteristics and details by using the accompanying drawings, in which:

图1A示出了根据示例实施例的用于仅同步属性组的分布式系统;FIG. 1A shows a distributed system for synchronizing only attribute groups according to an example embodiment;

图1B示出了根据示例实施例的对于项的属性组的映射;FIG. 1B illustrates a mapping for attribute groups of items, according to an example embodiment;

图1C示出了根据示例实施例的一个示例同步项流;Figure 1C illustrates an example synchronization item flow according to an example embodiment;

图2A示出了根据示例实施例的提高客户机和服务器之间的同步速率的方法的流程图;FIG. 2A shows a flowchart of a method of increasing a synchronization rate between a client and a server according to an example embodiment;

图2B示出了根据示例实施例的跟踪项的所选部分的改变的方法的流程图;以及2B shows a flow diagram of a method of tracking changes to a selected portion of an item, according to an example embodiment; and

图3示出了提供用于实现本发明的各特征的合适的操作环境的示例计算系统。Figure 3 illustrates an example computing system that provides a suitable operating environment for implementing the features of the invention.

详细描述A detailed description

本发明涉及用于通过仅同步已改变的项的所选部分来提高同步速率的方法、系统和计算机程序产品。本发明的各实施例可包括专用或通用计算机,其包括各种计算机硬件或模块,如以下更详细讨论的。The present invention relates to methods, systems and computer program products for increasing synchronization rates by synchronizing only selected parts of items that have changed. Embodiments of the invention may include special purpose or general purpose computers comprising various computer hardware or modules, as discussed in more detail below.

在详细讨论此处的实施例之前,定义将在整个申请中使用的一些术语将是有用的。首先,此处使用“数据项”或“项”来表示具有可被修改或以其它方式改变的属性的完整消息。例如,数据项可以是完整的电子邮件消息、完整的联系人、完整的约会、完整的任务、完整的便笺或可在两个计算设备之间同步的任何其它类型的消息。项的“属性”表示消息中可独立于其它属性被修改或以其它方式改变的一部分。这些属性的示例包括如跟踪标志、优先级标志、项的正文、各个附件、各个收件人、消息状态、消息优先级、或用于消息的任何其它公知的属性。示例实施例规定属性可被划分成“属性组”,如将在以下更详细描述的,属性组是基于行业常识以及对每一属性组内的属性如何相关的语义的理解来预定的。Before discussing the embodiments herein in detail, it will be useful to define some terms that will be used throughout the application. First, a "data item" or "item" is used herein to mean a complete message with attributes that can be modified or otherwise changed. For example, a data item may be a complete email message, a complete contact, a complete appointment, a complete task, a complete note, or any other type of message that can be synchronized between two computing devices. An "attribute" of an item represents a portion of a message that can be modified or otherwise changed independently of other attributes. Examples of these attributes include things like tracking flags, priority flags, the body of the item, individual attachments, individual recipients, message status, message priority, or any other well-known attribute for a message. Example embodiments provide that attributes may be divided into "attribute groups," which, as will be described in more detail below, are predetermined based on common industry knowledge and an understanding of the semantics of how attributes within each attribute group are related.

此处的实施例改变了在两个设备,例如服务器和客户机之间处理和跟踪项同步的方式。对项的改变被放置到上述定义良好的属性组中,并且每一组独立于其它组来跟踪。例如,一个组可包含项的正文,另一组可包含附件,而再一组可包括如跟踪标志、已读状态、优先级标志等高度易失的属性。注意,由于属性组是基于行业常识良好定义的,因此此处的实施例权衡了典型的复制系统所需的数据处理速率与存储和/或处理要求。换言之,本发明通过仅同步已改变的项的所选部分而不监视项内的每一个别属性的改变来提高客户机和服务器之间的同步速率。因此,如果对相对较大的电子邮件消息上的小数据属性(例如,跟踪标志)作出了改变,则这一改变不会触发向在高速缓存模式下运行的客户机的较大的下载,并且也不会有对于用于跟踪每一个别属性的高存储和处理的要求。Embodiments herein change the way synchronization of items is handled and tracked between two devices, such as a server and a client. Changes to items are placed into the aforementioned well-defined property groups, and each group is tracked independently of the others. For example, one group could contain the item's text, another group could contain the attachments, and yet another group could contain highly volatile attributes such as tracking flags, read status, priority flags, and so on. Note that the embodiments herein trade off the data processing rate versus the storage and/or processing requirements required by typical replication systems since attribute groups are well defined based on industry common sense. In other words, the present invention increases the rate of synchronization between a client and server by synchronizing only selected portions of items that have changed without monitoring each individual attribute within the item for changes. Therefore, if a change is made to a small data attribute (e.g., a trace flag) on a relatively large email message, this change will not trigger a large download to a client running in cached mode, and There are also no high storage and processing requirements for tracking each individual attribute.

在描述本发明的各实施例的进一步细节之前,将参考图3来描述可用于实现本发明的原理的一个合适的计算体系结构。在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操作的符号表示来描述本发明的各实施例。由此,可以理解,有时被称为计算机执行的这类动作和操作包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器系统中的位置上维护它,这以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是具有数据的格式所定义的特定属性的存储器的物理位置。然而,尽管在上述上下文中描述本发明,但它并不意味着是限制性的,如本领域的技术人员所理解的,后文所描述的动作和操作的各方面也可用硬件来实现。Before describing further details of various embodiments of the invention, reference will be made to FIG. 3 to describe one suitable computing architecture that may be used to implement the principles of the invention. In the following description, unless indicated otherwise, embodiments of the invention are described with reference to acts and symbolic representations of operations that are performed by one or more computers. It will thus be appreciated that such acts and operations, which are sometimes referred to as computer-implemented, include the manipulation of electrical signals representing data in a structured form by the processing unit of a computer. This manipulation transforms the data or maintains it at a location in the computer's memory system, which reconfigures or changes the operation of the computer in a manner well understood by those skilled in the art. A data structure that maintains data is a physical location in memory that has specific properties defined by the format of the data. However, although the present invention is described in the above context, it is not meant to be limiting, as those skilled in the art understand, the acts and aspects of operations described hereinafter may also be implemented in hardware.

转向附图,其中相同的参考标号指代相同的元素,本发明的原理被示为在一合适的计算环境中实现。以下描述基于所述的本发明的实施例,并且不应认为是关于此处未明确描述的替换实施例而限制本发明。Turning to the drawings, wherein like reference numerals refer to like elements, the principles of the invention are illustrated as implemented in a suitable computing environment. The following description is based on the described embodiments of the invention and should not be considered as limiting the invention with respect to alternative embodiments not explicitly described herein.

图3示出了可用于这些设备的一个示例计算机体系结构的示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本发明的使用范围或功能提出任何局限。也不应将该计算系统解释为对图3所示的任一组件或其组合具有任何依赖或需求。Figure 3 shows a schematic diagram of an example computer architecture that may be used with these devices. The architecture depicted is only one example of a suitable environment for descriptive purposes and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing system be interpreted as having any dependency or requirement relating to any one or combination of components shown in FIG. 3 .

本发明的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本发明的众所周知的计算系统、环境和配置的示例包括但不限于,移动电话、袖珍计算机、个人计算机、服务器、多处理器系统、基于微处理器的系统、小型机、大型计算机、以及包括任一上述系统或设备的分布式计算环境。The principles of the invention are operational with other general purpose or special purpose computing or communication environments or configurations. Examples of well-known computing systems, environments, and configurations suitable for use with the present invention include, but are not limited to, mobile phones, pocket computers, personal computers, servers, multiprocessor systems, microprocessor-based systems, minicomputers, mainframe computers, and A distributed computing environment comprising any of the above systems or devices.

在其最基本的配置中,计算系统300通常包括至少一个处理单元302和存储器304。存储器304可以是易失性(如RAM)、非易失性(如ROM、闪存等)或两者的某一组合。这一最基本配置在图3中由虚线306示出。在本说明书和权利要求书中,“计算系统”被定义为能够执行软件、固件或微码来实现功能的任何硬件组件或硬件组件的组合。计算系统甚至可以是分布式的以实现分布式功能。In its most basic configuration, computing system 300 generally includes at least one processing unit 302 and memory 304 . Memory 304 may be volatile (eg, RAM), non-volatile (eg, ROM, flash memory, etc.), or some combination of the two. This most basic configuration is shown by dashed line 306 in FIG. 3 . In this specification and claims, a "computing system" is defined as any hardware component or combination of hardware components capable of executing software, firmware, or microcode to implement a function. Computing systems can even be distributed to enable distributed functionality.

存储介质设备可具有另外的特征和功能。例如,它们可包括另外的存储(可移动和不可移动),包括但不限于,PCMCIA卡、磁盘和光盘、以及磁带。这类另外的存储在图3中由可移动存储308和不可移动存储310示出。计算机存储介质包括以用于储存如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法和技术实现的易失性和非易失性、可移动和不可移动介质。存储器304、可移动存储308和不可移动存储310都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存、其它存储器技术、CD-ROM、数字多功能盘、或其它光存储、磁盒、磁带、磁盘存储、其它磁存储设备、以及可以用来储存期望的信息并可由计算系统访问的任一其它介质。The storage media device may have additional features and functions. For example, they may include additional storage (removable and non-removable) including, but not limited to, PCMCIA cards, magnetic and optical disks, and magnetic tape. Such additional storage is illustrated in FIG. 3 by removable storage 308 and non-removable storage 310 . Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Memory 304, removable storage 308, and non-removable storage 310 are all examples of computer storage media. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory, other memory technologies, CD-ROM, digital versatile disk, or other optical storage, magnetic cartridges, tape, magnetic disk storage, other magnetic storage devices, and available Any other medium that stores desired information and that can be accessed by a computing system.

如此处所使用的,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不同组件、模块、引擎和服务可被实现为在计算系统上执行(例如,作为单独的线程)的对象或进程。尽管此处所描述的系统和方法较佳地以软件来实现,但是硬件或软件和硬件的组合的实现也是可能并被构想的。在本说明书中,“计算实体”可以是先前在此定义的任何计算系统,或在计算系统上运行的任何模块或模块的组合。As used herein, the terms "module" or "component" can refer to software objects or routines that execute on a computing system. The various components, modules, engines, and services described herein can be implemented as objects or processes that execute (eg, as separate threads) on a computing system. Although the systems and methods described herein are preferably implemented in software, implementations in hardware or a combination of software and hardware are also possible and contemplated. In this specification, a "computing entity" may be any computing system previously defined herein, or any module or combination of modules running on a computing system.

计算系统300还可包含允许主机如通过网络320与其它系统和设备进行通信的通信信道312。通信信道312是通信介质的示例。通信介质通常可以在诸如载波或其它传输机制等已调制数据信号中具体化计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。此处使用的术语计算机可读介质包括存储介质和通信介质两者。Computing system 300 may also contain a communication channel 312 that allows the host to communicate with other systems and devices, such as through network 320 . Communication channel 312 is an example of a communication medium. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer-readable media as used herein includes both storage media and communication media.

计算系统300还可具有输入组件314,如键盘、鼠标、笔、语音输入组件、触摸输入设备等等。输出设备316包括屏幕显示器、扬声器、打印机等等,以及用于驱动它们的呈现模块(通常称为“适配器”)。计算系统300具有电源318。所有这些组件在本领域中是公知的,并且无需在此详细讨论。Computing system 300 may also have input components 314 such as a keyboard, mouse, pen, voice input components, touch input devices, and the like. Output devices 316 include screen displays, speakers, printers, etc., as well as rendering modules (commonly referred to as "adapters") for driving them. Computing system 300 has power supply 318 . All of these components are well known in the art and need not be discussed in detail here.

图1A示出了根据示例实施例的用于在客户机105和服务器125之间同步属性组104的分布式系统100。分布式系统100可以类似于以上参考图3所描述的计算系统300,然而不必如此。如图1A所示,分布式系统100包括可以是多个计算设备110、115等中的任一个的客户机105。例如,客户机105可以是诸如电话110、PDA 110、膝上型计算机115或任何其它计算设备等无线设备。FIG. 1A illustrates a distributed system 100 for synchronizing a property set 104 between a client 105 and a server 125 according to an example embodiment. Distributed system 100 may be similar to computing system 300 described above with reference to FIG. 3 , but need not be. As shown in FIG. 1A, the distributed system 100 includes a client 105, which may be any one of a plurality of computing devices 110, 115, and the like. For example, client 105 may be a wireless device such as phone 110, PDA 110, laptop 115, or any other computing device.

注意,本发明在其中数据链路较慢的系统中,例如无线通信中是最有优势的。然而,本发明不限于这种链路,并且可在任何环境中使用。例如,如上所述,本发明可以在要求用户基于从服务器125传输到客户机105的数据量来为服务付费的系统中使用。因此,对服务器125和客户机105之间的特定数据链路的任何具体参考在此处仅是出于说明的目的而使用的,并且不意味着限制或以其它方式缩小本发明的范围,除非是明确声明的。Note that the present invention is most advantageous in systems where the data link is slow, such as wireless communications. However, the invention is not limited to such links and can be used in any environment. For example, as described above, the present invention may be used in systems that require users to pay for services based on the amount of data transferred from server 125 to client 105 . Accordingly, any specific reference to a particular data link between server 125 and client 105 is used herein for purposes of illustration only, and is not meant to limit or otherwise narrow the scope of the invention unless is clearly stated.

此外,还要注意,尽管将按照服务器125和客户机105来描述本发明,但是这些设备在此处描述实施例时的角色可以互换。例如,以下描述将按照对出现在服务器125上的项170的改变来描述,其中这种改变通过将改变流传送到客户机105来同步。然而,注意,也可跟踪客户机105上的改变并将其上传到服务器125。由此,以下对在服务器125和客户机105之间发生的事件的描述—以及此处用于客户机105或服务器125任一个的任何特定设备—在此仅是出于说明的目的而使用的,并且不意味着限制或以其它方式缩小本发明的范围,除非明确声明。Also, note that although the invention will be described in terms of server 125 and client 105, the roles of these devices may be reversed in describing embodiments herein. For example, the following description will be described in terms of changes to items 170 that occur on server 125 , where such changes are synchronized by streaming the changes to client 105 . Note, however, that changes on the client 105 may also be tracked and uploaded to the server 125. As such, the following description of events occurring between server 125 and client 105—and any specific device here for either client 105 or server 125—is used herein for purposes of illustration only , and are not intended to limit or otherwise narrow the scope of the invention unless expressly stated otherwise.

如图1A所示,服务器125包括多个文件夹165(例如,文件夹“A”),其中每一文件夹165可表示或包括特定类型的项170。例如,文件夹165可包含或包括电子邮件项消息,而另一文件夹165可包括联系人项信息。当然,如上所述,根据此处提供的示例实施例,可以有可被同步的各种各样的项类型。另外,可在实施本发明时使用除文件夹165之外的其它拓扑结构和数据配置。例如,表或不同地分割或储存不同类型的项170的其它方式也可用于本发明。因此,任何特定的拓扑结构、数据格式、和/或存储分层结构在此仅出于说明的目的而使用,并且不意味着限制或以其它方式缩小本发明的范围。As shown in FIG. 1A , server 125 includes multiple folders 165 (eg, folder “A”), where each folder 165 may represent or include items 170 of a particular type. For example, folder 165 may contain or include email item messages, while another folder 165 may include contact item information. Of course, as noted above, there may be a wide variety of item types that may be synchronized in accordance with the example embodiments provided herein. Additionally, other topologies and data configurations besides folders 165 may be used in implementing the present invention. For example, tables or other ways of partitioning or storing different types of items 170 differently may also be used with the present invention. Accordingly, any particular topology, data format, and/or storage hierarchy is used herein for purposes of illustration only, and is not meant to limit or otherwise narrow the scope of the invention.

如上所述,每一文件夹165将包含多个项170(例如,项“A”)。与每一项170相关联的是项改变标识符(ID)175,如以下更详细描述的,该标识符可用于标识自从服务器125与客户机105之间的最后一次同步以来项170及其属性何时已改变。每一项170中还包括属性组180(例如,属性组“A”)。如上所述,属性组180是基于行业常识和对多个属性组180中的每一个内的属性如何相关的语义的理解来预定义的。例如,属性组可基于属性的易失性、典型的存储器大小要求、和/或其它考虑事项来确定。此外,属性组180可以包括诸如消息状态、跟踪标志、优先级标志或频繁修改和/或改变的其它属性等高度易失的属性。As noted above, each folder 165 will contain a number of items 170 (eg, item "A"). Associated with each item 170 is an item change identifier (ID) 175, which can be used to identify the item 170 and its attributes since the last synchronization between the server 125 and the client 105, as described in more detail below. when has changed. Also included in each entry 170 is an attribute group 180 (eg, attribute group "A"). As noted above, attribute groups 180 are predefined based on common industry knowledge and an understanding of the semantics of how attributes within each of the plurality of attribute groups 180 are related. For example, attribute groups may be determined based on attribute volatility, typical memory size requirements, and/or other considerations. Additionally, attribute group 180 may include highly volatile attributes such as message status, trace flags, priority flags, or other attributes that are frequently modified and/or changed.

或者,或与其相结合地,属性组180可基于该属性与其它属性相比时的相对大小来定义。例如,附件的大小通常要大于其它属性,因此可驻留在一个属性组中,而诸如消息的收件人和/或正文等较小的数据大小可驻留在另一属性组180中。甚至可以有用于不与其它属性良好相关的那些属性的杂项属性组180。Alternatively, or in combination therewith, attribute groups 180 may be defined based on the relative size of the attribute when compared to other attributes. For example, the size of an attachment is typically larger than other attributes and thus may reside in one attribute group, while smaller data sizes such as the recipient and/or body of the message may reside in another attribute group 180 . There may even be a miscellaneous attribute group 180 for those attributes that do not correlate well with other attributes.

注意,尽管属性组180是基于现有的行业常识来预定义的,但是这些知识会经历改变。因此,各实施例规定属性组180是可扩展的、可插入的并且可缩放的。即,属性组180是以使得每一属性组180中的属性可被移除、删除、添加和/或以其它方式修改的方式来配置的。类似地,属性组180本身可被重定义、创建和/或删除。另外,属性组180的定义可取决于项170的类型来改变。例如,对电子邮件项170定义的属性组180可以与对联系人项170定义的属性组180不同。由此,如以下将更详细描述的,客户机105将需要知道要用于各个文件夹165内的每一项170的适当映射190。Note that although attribute set 180 is predefined based on existing industry knowledge, such knowledge is subject to change. Accordingly, embodiments provide that the attribute set 180 is extensible, pluggable, and scalable. That is, attribute groups 180 are configured in such a way that attributes in each attribute group 180 may be removed, deleted, added, and/or otherwise modified. Similarly, attribute groups 180 themselves may be redefined, created and/or deleted. Additionally, the definition of attribute group 180 may vary depending on the type of item 170 . For example, the set of attributes 180 defined for an email item 170 may be different than the set of attributes 180 defined for a contact item 170 . Thus, as will be described in more detail below, the client 105 will need to know the appropriate mapping 190 to use for each item 170 within the respective folder 165 .

不管属性组180是如何定义的,每一属性组180通常将被分配一属性组改变ID 185,它可用于标识何时对该特定属性组180发生了改变。例如,项/属性组模块150可监视对项170发生的改变,以及对于该项170内的每一属性组180的改变。当改变发生时,改变ID生成器160可改变项改变ID175和适当的属性组改变ID185。Regardless of how attribute groups 180 are defined, each attribute group 180 will generally be assigned an attribute group change ID 185, which can be used to identify when a change has occurred to that particular attribute group 180. For example, item/attribute group module 150 may monitor changes to an item 170 as well as changes to each attribute group 180 within that item 170 . Change ID generator 160 may change item change ID 175 and appropriate attribute group change ID 185 when a change occurs.

在某些实施例中,项改变ID 175和属性改变ID 185可以是相同的标识符,指示例如项和属性组被同时更新。然而,注意,在例如使用全局唯一标识符(GUID)的情况下不必如此。还应当注意,改变ID 175、185可以是任何公知的字母数字或其它标识数据对象。例如,改变ID 175、185可以分别是项170和/或属性组185的散列。当然,如上所述,改变标识符175、185可以基于简单的GUID计数来生成。还要注意,用于标识对项170和属性组180的改变的其它机制也可用于本发明。因此,此处描述的用于标识改变的任何特定类型的改变标识符175、185和/或其使用仅是出于说明的目的,并且不意味着限制或以其它方式缩小本发明的范围,除非明确声明。In some embodiments, item change ID 175 and attribute change ID 185 may be the same identifier indicating, for example, that an item and attribute group were updated at the same time. Note, however, that this is not necessarily the case where, for example, globally unique identifiers (GUIDs) are used. It should also be noted that the change ID 175, 185 may be any well-known alphanumeric or other identifying data object. For example, change ID 175, 185 may be a hash of item 170 and/or attribute group 185, respectively. Of course, as mentioned above, the change identifier 175, 185 could be generated based on a simple GUID count. Note also that other mechanisms for identifying changes to items 170 and attribute groups 180 may also be used with the present invention. Accordingly, any particular type of change identifier 175, 185 and/or use thereof described herein for identifying a change is for illustrative purposes only and is not meant to limit or otherwise narrow the scope of the invention unless Clear statement.

不论标识175、185的类型如何,也不论如何标识对属性组的改变,当服务器125内的项/属性模块150标识一个或多个项170的改变时,可将这一项改变的通知120发送给客户机105以试图提示客户机105与服务器125同步。当然,用于提示客户机105与服务器125同步的其它机制也可用于本发明。例如,客户机105可周期性地,即在特定的预定间隔查询服务器125以与其同步。因此,客户机105和服务器125之间的同步过程的任何特定启动此处仅是出于说明的目的而使用的,并且不意味着限制或以其它方式缩小本发明的范围。Regardless of the type of identification 175, 185, and regardless of how a change to an attribute group is identified, when the item/attribute module 150 within the server 125 identifies a change to one or more items 170, a notification 120 of this item change may be sent The client 105 is given an attempt to prompt the client 105 to synchronize with the server 125 . Of course, other mechanisms for prompting the client 105 to synchronize with the server 125 may also be used with the present invention. For example, the client 105 may periodically, ie, at certain predetermined intervals, query the server 125 to synchronize with it. Accordingly, any specific initiation of a synchronization process between client 105 and server 125 is used here for purposes of illustration only, and is not meant to limit or otherwise narrow the scope of the present invention.

尽管如此,在启动同步过程之后,服务器125应从客户机105接收同步请求130。示例性实施例规定同步请求130可包括可用于确定自从客户机105与服务器125之间的最后一次同步以来是否已发生了改变的一个或多个项令牌125(例如,项令牌“A”)。在详细讨论项令牌135之前,注意,项令牌135无需被包括在同步请求130内。例如,其它握手机制可另外提示客户机105向服务器125发送项令牌135。或者,项令牌135可能已经被储存在服务器125上。因此,将项令牌135包括在同步请求130内此处仅是出于说明的目的而使用的,并且不意味着限制或以其它方式缩小本发明的范围,除非明确声明。Nevertheless, after initiating the synchronization process, the server 125 should receive a synchronization request 130 from the client 105 . The exemplary embodiment provides that the synchronization request 130 may include one or more item tokens 125 (e.g., item token "A" ). Before discussing item token 135 in detail, note that item token 135 need not be included within synchronization request 130 . For example, other handshake mechanisms may additionally prompt the client 105 to send the item token 135 to the server 125 . Alternatively, item token 135 may already be stored on server 125 . Accordingly, the inclusion of item token 135 within synchronization request 130 is used here for illustrative purposes only, and is not meant to limit or otherwise narrow the scope of the invention unless expressly stated.

与每一项令牌135相关联的是项改变ID 140。对于每一项改变ID 140或项令牌135,也有多个属性组改变ID 145(例如,属性组“A”改变ID)。项改变ID 145和属性组改变ID 145表示与针对客户机105和服务器125之间的最后一次改变的项169和对应的属性组180相关联的那些标识符。换言之,项令牌135可能已作为数据团(blob)被传递给客户机105以便在与服务器125的最后一次同步期间储存。该数据团135然后可由改变标识符比较器155用于确定自从最后一次同步以来已改变的项170,尤其是每一项170内的那些属性组180。Associated with each item token 135 is an item change ID 140. For each item change ID 140 or item token 135, there are also multiple attribute group change IDs 145 (e.g., attribute group "A" change ID). Item Change ID 145 and Attribute Group Change ID 145 represent those identifiers associated with the item 169 and corresponding attribute group 180 for the last change between client 105 and server 125. In other words, item token 135 may have been passed to client 105 as a blob for storage during the last synchronization with server 125 . This data blob 135 can then be used by the change identifier comparator 155 to determine which items 170 have changed since the last synchronization, particularly those attribute groups 180 within each item 170 .

例如,每一项令牌135可以与每一项170进行比较。更具体而言,项令牌135与实际项170中的改变ID 175、140和属性组ID 185、145可使用改变标识符比较器155来比较。如果值不同,即对于项令牌135的项改变ID 140和属性组ID 145不匹配项改变ID 175和属性组ID 185,则发生了项170和属性组180的改变。如上所述,尽管将对于项令牌135的改变ID与服务器125上的项170和属性组180进行比较以确定自从最后一次同步以来项170和属性组180何时已改变,但确定对项170和属性组180的改变何时或是否发生的其它方法也可用于本发明。例如,服务器125可储存确定客户机侧105上需要什么改变所需的所有信息,而无需改变ID 140、145、175、185。因此,如此处所描述的对改变ID 140、145、175、185的具体使用仅是出于说明的目的,并且不意味着限制或以其它方式缩小本发明的范围,除非明确声明。For example, each item token 135 may be compared to each item 170 . More specifically, the change ID 175, 140 and attribute group ID 185, 145 in the item token 135 and the actual item 170 may be compared using the change identifier comparator 155. If the values are different, i.e. the item change ID 140 and the attribute group ID 145 for the item token 135 do not match the item change ID 175 and the attribute group ID 185, then a change to the item 170 and attribute group 180 has occurred. As mentioned above, although the change ID for item token 135 is compared with item 170 and attribute set 180 on server 125 to determine when item 170 and attribute set 180 have changed since the last sync, it is determined that the change ID for item 170 Other methods of when or whether changes to attribute groups 180 occur may also be used with the present invention. For example, the server 125 can store all the information needed to determine what changes are needed on the client side 105 without changing the IDs 140, 145, 175, 185. Accordingly, the specific use of change IDs 140, 145, 175, 185 as described herein is for illustrative purposes only and is not meant to limit or otherwise narrow the scope of the invention unless expressly stated.

不论如何标识已改变的属性组104,这一已改变的属性组104可被包括在同步项流102内,该流可根据以下描述的示例实施例被发送给客户机105。此外,如上所述,由特定的版本化ID 195标识的映射190也可在同步项流102之前、期间或之后被发送。如将在以下更详细讨论的,同步项流102内的属性组104应标识用于这一属性组104的版本195的特定映射190。Regardless of how a changed property set 104 is identified, this changed property set 104 may be included in a synchronized item stream 102, which may be sent to a client 105 according to example embodiments described below. In addition, as described above, the map 190 identified by the specific versioned ID 195 may also be sent before, during, or after the synchronization item stream 102. As will be discussed in more detail below, a property group 104 within a synchronized item stream 102 should identify a specific mapping 190 for a version 195 of this property group 104 .

图1B示出了用于特定版本标识符195的映射190的示例框图。如图所示,映射190包括多个项106和对于每一项106的属性组108、114。当然,可以有可在任何特定项106内标识的任何数目的属性组108、114。此外,对于每一特定属性组108、114,还映射属性112、116。例如,属性组“A”108可包括属性112“C”和“E”,而属性组“B”114可包括属性“A”106。FIG. 1B shows an example block diagram of a map 190 for a specific version identifier 195 . As shown, the map 190 includes a plurality of items 106 and for each item 106 an attribute set 108 , 114 . Of course, there may be any number of attribute groups 108 , 114 that can be identified within any particular item 106 . In addition, for each particular attribute group 108,114, attributes 112,116 are also mapped. For example, attribute group "A" 108 may include attributes 112 "C" and "E," while attribute group "B" 114 may include attribute "A" 106 .

考虑其中映射190标识具有针对相对较小的、易失性数据属性的属性组“A”108的电子邮件项106,而用于属性组“B”114的映射包括较大属性的示例。如此,属性组“A”108内的属性“C”112和属性“E”112可以分别是跟踪标志和优先级标志。另一方面,对属性组“B”114的属性“A”116可以是附件文件。当然,提供映射190的其它公知的方式也可用于本发明。因此,在图1B内提供的映射配置此处仅出于说明的目的而使用,并且不意味着限制或以其它方式缩小本发明的范围,除非明确声明。Consider an example where map 190 identifies email item 106 with attribute set "A" 108 for relatively small, volatile data attributes, while the map for attribute set "B" 114 includes larger attributes. As such, attribute "C" 112 and attribute "E" 112 within attribute group "A" 108 may be trace flags and priority flags, respectively. On the other hand, attribute "A" 116 to attribute group "B" 114 may be an attachment file. Of course, other known ways of providing the mapping 190 can also be used in the present invention. Accordingly, the mapping configuration provided within FIG. 1B is used here for purposes of illustration only, and is not meant to limit or otherwise narrow the scope of the present invention unless expressly stated.

注意,当前和先前的属性组映射190可以被持久保存在服务器数据库上,并且可通过版本ID 195来访问。如果遇到具有未知的版本标识符195的项170,或者该项没有组标识符,则应当如同该项没有任何属性分组180并且应当作为整体对待一样来对待该项。因此,如果诸如此类的项170需要被下载到客户机105,则流传送102整个项170。Note that current and previous attribute group maps 190 can be persisted on the server database and can be accessed via version ID 195. If an item 170 is encountered with an unknown version identifier 195, or the item has no group identifier, then the item should be treated as if it does not have any attribute grouping 180 and should be treated as a whole. Thus, if an item 170 such as this needs to be downloaded to the client 105, the entire item 170 is streamed 102.

一个实施例提供了通过以下称为快速传输的流传送机制的同步。这一过程允许服务器125通过分解所改变的属性组104并将其串行化成一原始二进制比特流来对同步请求130作出响应。服务器125将它能够打包的尽可能多的消息102打包到一固定大小的响应缓冲区中,并将数据102返回给客户机105。客户机105然后解析该数据,并通过解串行化字节流102来重构属性组104。字节流102的一个示例格式在以下参考图1C示出,该图示出了同步项流102的一个示例,即同步项流102可能看上去像什么的有线传输(或无线传输)数据表示。One embodiment provides synchronization through a streaming mechanism hereinafter referred to as fast transfer. This process allows the server 125 to respond to the synchronization request 130 by decomposing and serializing the changed property set 104 into a raw binary bit stream. The server 125 packs as many messages 102 as it can into a fixed-size response buffer and returns the data 102 to the client 105. Client 105 then parses the data and reconstructs attribute set 104 by deserializing byte stream 102 . An example format of the byte stream 102 is shown below with reference to FIG. 1C , which shows an example of a sync item stream 102 , a wired (or wireless) data representation of what the sync item stream 102 might look like.

同步项流102的第一部分是被添加到流102的开头的IncrSyncProgressItem(项的增量同步进展)118,用于提供关于响应流102中接下来的所有项的总大小的信息。接着,IncrSyncProgressPerItem(每一项的增量同步进展)122指示同步项流102中的下一项的总大小。同步流102内的下一分组124是如由标记IncrSyncPropGroupMap(增量同步属性组映射)指示的映射,它告诉客户机105流102中接下来的一个或多个项将使用什么属性组映射。因此,可使用IncrSyncPropGroup(增量同步属性组)标记以及每一属性组180内的属性ID的数组或列表来标识各种属性组180。换言之,同步项流102可包括如此处所描述的对于各种版本ID 195的映射190或一组映射190。然而,注意,如上所述,映射190无需被包括在同步项流102内,而是可以跟在同步流102之后或在其之前。The first part of the sync item stream 102 is an IncrSyncProgressItem (item's incremental sync progress) 118 that is added to the beginning of the stream 102 to provide information about the total size of all subsequent items in the response stream 102 . Next, IncrSyncProgressPerItem (incremental synchronization progress per item) 122 indicates the total size of the next item in the synchronized item stream 102 . The next packet 124 within the sync stream 102 is a map as indicated by the tag IncrSyncPropGroupMap (incremental sync property group map), which tells the client 105 what property group map is to be used for the next item or items in stream 102 . Accordingly, the various property groups 180 may be identified using the IncrSyncPropGroup (incremental synchronization property group) tag and an array or list of property IDs within each property group 180 . In other words, the synchronized item stream 102 may include a map 190 or a set of maps 190 for various version IDs 195 as described herein. Note, however, that map 190 need not be included within synchronization item stream 102, but may follow or precede synchronization stream 102, as described above.

接下来的一组标签126,即IncrSynPropGroup ID(增量同步属性组ID)表示流中接下来的一个或多个项使用什么属性组映射。即,该组126内的版本ID标识了用于接下来的项的版本标识195的映射190。接着,IncrSynChgItem(增量同步已改变项)128是表示改变的项的开头的标记,之后是要在该项内改变的属性组的数组。例如,如IncrSynChgPropGroup(增量同步已改变属性组)132中的标记所示,可标识已改变的各个属性组。例如,如在流134中所示,IncrSnyChgPropGroup通过首先使DelProp(删除属性)元素删除当前的ItemRecipients(项收件人),然后使用StartRecip(开始收件人)和EndRecip(结束收件人)标记来替换收件人属性,来改变收件人属性。作为另一示例,流136中的元素包括用于项附件的IncrSyncChgPropGroup,使得当前的ItemAttachments(项附件)将使用DelProp来删除,并使用NewAttach(新附件)和EndAttach(结束附件)标记来替换。当然,如由之后提供的省略号所指示的,可在流内包括其它属性组。The next set of tags 126, the IncrSynPropGroup ID (incremental synchronization property group ID), indicates what property group mapping is used for the next one or more items in the stream. That is, the version ID within the group 126 identifies the mapping 190 for the version identification 195 of the next item. Next, IncrSynChgItem (incremental sync changed item) 128 is a marker indicating the beginning of the changed item, followed by an array of attribute groups to be changed within the item. For example, individual property groups that have changed may be identified, as indicated by tags in IncrSynChgPropGroup (incremental sync changed property group) 132 . For example, as shown in flow 134, IncrSnyChgPropGroup deletes the current ItemRecipients (item recipients) by first having the DelProp (delete property) element, and then uses the StartRecip (start recipient) and EndRecip (end recipient) tags to Replace the recipient property to change the recipient property. As another example, elements in stream 136 include an IncrSyncChgPropGroup for item attachments, such that the current ItemAttachments (item attachments) will be deleted using DelProp and replaced with NewAttach (new attachments) and EndAttach (end attachments) tags. Of course, other attribute groups may be included within the stream as indicated by the ellipses provided thereafter.

其它示例性实施例能够将同步项的现有方法与此处提供的当前实施例相结合。例如,在不提供任何映射的传统系统中,可能在同步项流102内下载整个项。例如,如元素138中所示,IncrSyncProgressPerItem指示下一项的总大小,而IncrSyncChgItem标记了改变项的开始。接下来的标记,即用于IncrSyncDel(增量同步删除)、IncrSyncRead(增量同步已读)以及IncrSyncEnd(增量同步结束)的标记142分别表示:(1)要从客户机105删除的项的列表;(2)如下的已读状态转换;以及(3)表示同步会话结束的标记。最后,IncrSyncStateBegin(增量同步状态开始)表示字节流中接下来的最终同步状态,而IncrySyncStateEnd(增量同步状态结束)是表示同步状态完成的标记。Other exemplary embodiments can combine existing methods of synchronizing items with the current embodiments provided herein. For example, in conventional systems that do not provide any mapping, entire items may be downloaded within the synchronized item stream 102 . For example, as shown in element 138, IncrSyncProgressPerItem indicates the total size of the next item, while IncrSyncChgItem marks the beginning of the changing item. The next marks, the marks 142 for IncrSyncDel (incremental synchronization delete), IncrSyncRead (incremental synchronization read) and IncrSyncEnd (incremental synchronization end) represent respectively: (1) the item to be deleted from the client 105 list; (2) read state transitions as follows; and (3) a flag indicating the end of the sync session. Finally, IncrSyncStateBegin (incremental synchronization state start) represents the next final synchronization state in the byte stream, and IncrySyncStateEnd (incremental synchronization state end) is a marker representing the completion of the synchronization state.

本发明也可按照包括功能步骤和/或非功能动作的方法来描述。以下是可在实施本发明时执行的动作和步骤的描述。通常,功能步骤按照所实现的结果来描述本发明,而非功能动作描述了用于实现特定结果的更具体的行动。尽管可以按特定的顺序描述或要求保护功能步骤或非功能动作,然而本发明不限于任何特定的顺序或动作和/或步骤的组合。此外,对步骤和/或动作的使用是权利要求书的叙述,并且在以下图2A和2B的流程图的描述中用于指示对这些术语的期望的具体使用。The invention may also be described in terms of methods including functional steps and/or non-functional acts. The following is a description of acts and steps that may be performed in implementing the invention. Generally, functional steps describe the invention in terms of results being achieved, whereas non-functional acts describe more specific actions for achieving a particular result. Although functional steps or non-functional actions may be described or claimed in a particular order, the invention is not limited to any particular order or combination of actions and/or steps. Furthermore, the use of steps and/or actions is the recitation of the claims and is used in the following description of the flowcharts of FIGS. 2A and 2B to indicate the specific use of these terms intended.

图2A和2B示出了用于本发明的各示例性实施例的流程图。以下图2A和2B的描述将偶尔会涉及图1A-C中的对应元素。尽管可对这些图中的具体元素作出参考,但是这些元素仅出于说明的目的而使用,并且不旨在限制或以其它方式缩小本发明的范围,除非明确声明。2A and 2B show flowcharts for various exemplary embodiments of the present invention. The following description of FIGS. 2A and 2B will occasionally refer to corresponding elements in FIGS. 1A-C . Although reference may be made to specific elements in these figures, these elements are used for purposes of illustration only and are not intended to limit or otherwise narrow the scope of the invention unless expressly stated otherwise.

图2A示出了通过仅同步已改变的项的所选部分来提高客户机和服务器之间的同步速率,而不监视项内的每一个别属性的改变的方法200的流程图。方法200包括接收205同步数据项的请求的动作。例如,服务器125可接收同步自从服务器125和客户机105之间的最后一次同步以来已改变的数据项170的请求130,其中数据项170表示具有可被修改或以其它方式改变的各种属性的完整消息。例如,数据项170可以是电子邮件消息、联系人、约会、日历信息、任务、便笺等等。属性可包括收件人、地址、正文、附件、标志、状态标识符、或任何其它多种用于消息的属性。还要注意,服务器125和客户机105之间用于同步数据项170的数据链路可以是无线连接或有线连接,其中客户机105上的顾客基于从服务器125下载的字节数来为同步数据项170付费。FIG. 2A shows a flowchart of a method 200 of increasing the rate of synchronization between a client and a server by synchronizing only selected portions of items that have changed, without monitoring changes to every individual attribute within the item. Method 200 includes an act of receiving 205 a request to synchronize a data item. For example, server 125 may receive a request 130 to synchronize data items 170 that have changed since the last synchronization between server 125 and client 105, wherein data items 170 represent items with various attributes that may be modified or otherwise changed. full message. For example, data items 170 may be email messages, contacts, appointments, calendar information, tasks, notes, and the like. Attributes may include recipients, addresses, body, attachments, flags, status identifiers, or any other variety of attributes for a message. Also note that the data link between server 125 and client 105 for synchronizing data items 170 can be a wireless connection or a wired connection, where the customer on client 105 is synchronizing data items based on the number of bytes downloaded from server 125. Item 170 paid.

方法200还可包括用于减少225客户机和服务器之间的数据传输时间的步骤。更具体而言,用于225的步骤包括确定210一数据项自从最后一次同步以来已改变的动作。例如,服务器125可确定(使用改变ID比较器155或此处描述的其它方法)数据项170自从客户机105和服务器125之间的最后一次同步以来已改变。如上所述,数据项170包括基于行业常识和对每一属性组内的一个或多个属性如何相关的语义的理解来预定义的属性组170。例如,在电子邮件消息中,各属性组可包括正文属性、收件人属性组、主题属性组、附件属性组、优先级标志属性组、已读状态属性组、杂项属性组、和/或其任何组合。当然,可定义其它属性组,并且其它属性组是可扩展的、可插入的和可缩放的,使得属性组内的属性可被添加、删除或以其它方式在其中重新定义,并使得每一属性组可被添加、删除或基于行业常识的改变而以其它方式重新定义。The method 200 may also include steps for reducing 225 the data transfer time between the client and the server. More specifically, the step for 225 includes the act of determining 210 that a data item has changed since the last synchronization. For example, server 125 may determine (using change ID comparator 155 or other methods described herein) that data item 170 has changed since the last synchronization between client 105 and server 125 . As noted above, data items 170 include attribute groups 170 that are predefined based on common industry knowledge and an understanding of the semantics of how one or more attributes within each attribute group are related. For example, in an email message, attribute groups may include a body attribute, a recipient attribute group, a subject attribute group, an attachment attribute group, a priority flag attribute group, a read status attribute group, a miscellaneous attribute group, and/or other any combination. Of course, other property groups may be defined, and other property groups are extensible, pluggable, and scalable, such that properties within property groups may be added, deleted, or otherwise redefined within them, and such that each property Groups may be added, deleted, or otherwise redefined based on changes in industry knowledge.

用于225的步骤还可包括确定215数据项内的哪一属性组自从最后一次同步以来已改变。例如,项/属性组模块155和改变ID比较器155可用于确定哪些属性组180自从最后一次同步以来已改变。因此,用于225的步骤包括在不流传送整个数据项的情况下同步220已改变的一个或多个组的动作。具体地,同步项流102可与自从最后一次同步以来已改变的各属性组104一起被流传送到客户机105,而无需流传送整个数据项170,以便减少在同步时客户机和服务器之间的数据传输时间。The step for 225 may also include determining 215 which attribute group within the data item has changed since the last synchronization. For example, item/attribute group module 155 and change ID comparator 155 can be used to determine which attribute groups 180 have changed since the last synchronization. Accordingly, the step for 225 includes an act of synchronizing 220 the changed one or more groups without streaming the entire data item. In particular, the synchronized item stream 102 can be streamed to the client 105 along with the attribute groups 104 that have changed since the last synchronization, without streaming the entire data item 170, in order to reduce the time spent between the client and the server during synchronization. data transmission time.

对数据项170以及属性组180中的改变的确定可以基于用于数据项和属性组的改变标识符140、145、175、185。此外,用于数据项170和属性组180的改变标识符141、145、175、185可以相同。此外,用于数据项170和属性组180的改变标识符140、145、175、185可以是字母数字、全局唯一标识符或散列值。The determination of changes in data items 170 and attribute groups 180 may be based on change identifiers 140 , 145 , 175 , 185 for data items and attribute groups. Furthermore, the change identifiers 141, 145, 175, 185 for the data item 170 and the attribute group 180 may be the same. Furthermore, the change identifiers 140, 145, 175, 185 for the data items 170 and attribute groups 180 may be alphanumeric, globally unique identifiers or hash values.

其它实施例提供了数据项170和其中的属性组180的映射190。映射可在发送已改变的属性组104的同步项流之前、期间或之后发送。在任何情况下,客户机105可使用映射190来了解每一属性组180中包括了什么属性。此外,第二数据项170可被确定为已改变,但是没有属性组180。在这一情况下,可将整个第二数据170流传送到客户机105。Other embodiments provide a mapping 190 of data items 170 and attribute groups 180 therein. The mapping may be sent before, during or after sending the stream of synchronized items for the property group 104 that has changed. In any event, client 105 can use map 190 to learn what attributes are included in each attribute group 180 . Additionally, the second data item 170 may be determined to have changed, but without the attribute set 180 . In this case, the entire second data 170 may be streamed to the client 105 .

图2B示出了跟踪对项的所选部分的改变以提高客户机和服务器之间的同步速率,而不监视项内的每一个别属性的改变的方法250的流程图。方法250包括为同步的目的监视255多个数据项的动作。例如,项/属性组模块150或其它组件可监视数据项170,其中数据项170表示具有可被修改或以其它方式改变的多个属性的完整消息。这些属性包括但不限于先前在此描述的那些属性,如附件、标志、正文部分等等。2B shows a flowchart of a method 250 of tracking changes to selected portions of items to increase the rate of synchronization between the client and server without monitoring changes to every individual attribute within the item. Method 250 includes an act of monitoring 255 a plurality of data items for synchronization purposes. For example, item/attribute group module 150 or other component may monitor data item 170, where data item 170 represents a complete message with multiple attributes that may be modified or otherwise changed. These attributes include, but are not limited to, those previously described herein, such as attachments, flags, body parts, and the like.

方法250还包括确定260一数据项自从客户机和服务器之间的最后一次同步以来已改变的动作。例如,改变标识符比较器155可用于确定数据项170自从服务器125和客户机105之间的最后一次同步以来已改变。如上所述,数据项包括基于行业常识和对每一属性组内的属性如何相关的语义的了解来预定义的多个属性组180。基于数据项已改变的判定,方法250还包括更新265项改变标识符的动作。例如,改变标识符生成器160可用于更新与数据项170相关联的项改变ID 175,该ID将用于标识项170已改变以便与客户机105同步。The method 250 also includes the act of determining 260 that a data item has changed since the last synchronization between the client and the server. For example, change identifier comparator 155 may be used to determine that data item 170 has changed since the last synchronization between server 125 and client 105 . As noted above, the data item includes a number of attribute groups 180 that are predefined based on common industry knowledge and an understanding of the semantics of how the attributes within each attribute group are related. Based on the determination that the data item has changed, method 250 also includes an act of updating 265 the item change identifier. For example, change identifier generator 160 may be used to update an item change ID 175 associated with data item 170, which will be used to identify that item 170 has changed for synchronization with client 105.

类似地,方法250包括确定270数据项内的哪一属性组已改变的动作。即,项/属性组模块150内的改变标识符比较器155可用于确定哪些属性组180自从客户机105和服务器125之间的最后一次同步以来已改变。基于一属性组已改变的判定,方法250包括更新275属性组改变标识符的动作。例如,改变标识符生成器160可用于更新用于属性组180的改变ID 185,该ID将用于标识属性组180已改变,使得仅属性组180将与客户机105同步,以便减少客户机105和服务器125之间的数据传输时间。还要注意,以上描述的其它替换实施例也可用于方法250。Similarly, method 250 includes an act of determining 270 which attribute set within the data item has changed. That is, change identifier comparator 155 within item/attribute group module 150 may be used to determine which attribute groups 180 have changed since the last synchronization between client 105 and server 125 . Based on a determination that an attribute set has changed, method 250 includes an act of updating 275 the attribute set change identifier. For example, the change identifier generator 160 can be used to update the change ID 185 for the attribute group 180, which will be used to identify that the attribute group 180 has changed, so that only the attribute group 180 will be synchronized with the client 105, so as to reduce the number of clients 105 Data transmission time between server 125. Note also that other alternative embodiments described above may be used for method 250 as well.

本发明可以用其它具体形式来实施而不偏离其精神或本质特征。所描述的实施例在所有方面都被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非以上描述来指示。落入权利要求书的等效技术方案的意义和范围之内的所有改变都被包含在其范围之内。The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects as illustrative only and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes falling within the meaning and range of equivalent technical solutions of the claims are embraced within the scope thereof.

Claims (20)

1.一种同步第一设备与第二设备之间的数据项的方法,所述方法包括:1. A method of synchronizing data items between a first device and a second device, the method comprising: 在所述第一设备上缓存数据项,所述数据项包括多个属性组,所述属性组的每一个包括所述数据项的一个或多个属性,所述属性组的至少之一包括多个属性;以及Cache a data item on the first device, the data item includes a plurality of attribute groups, each of the attribute groups includes one or more attributes of the data item, at least one of the attribute groups includes multiple attributes; and 由所述第一设备执行同步所述数据项中的已改变组的动作而不流传送整个所述数据项,所述已改变组在所述数据项的属性组中,所述已改变组中的一个或多个属性自上次同步时起已经改变。an act of synchronizing, by the first device, a changed set of the data item, the changed set in the attribute set of the data item, the changed set in the data item without streaming the entire said data item One or more properties of have changed since the last sync. 2.如权利要求1所述的方法,其特征在于,所述多个属性组包括跟踪属性组和已读状态属性组。2. The method according to claim 1, wherein the plurality of attribute groups include a tracking attribute group and a read status attribute group. 3.如权利要求1所述的方法,其特征在于,还包括:3. The method of claim 1, further comprising: 从所述第一设备向所述第二设备发送同步请求;以及sending a synchronization request from the first device to the second device; and 从所述第二设备接收所述已改变组作为对所述同步请求的响应。The changed set is received from the second device in response to the synchronization request. 4.如权利要求3所述的方法,其特征在于,所述方法还包括:4. The method of claim 3, further comprising: 从所述第二设备接收所述上次同步期间的项令牌;以及receiving an item token from the second device during the last synchronization; and 在所述第一设备上储存所述项令牌;以及storing the item token on the first device; and 其中所述同步请求包括所述项令牌。Wherein the synchronization request includes the item token. 5.如权利要求4所述的方法,其特征在于,所述项令牌可用于确定所述数据项内自所述上次同步时起已经改变的属性组。5. The method of claim 4, wherein the item token is operable to determine a set of attributes within the data item that have changed since the last synchronization. 6.如权利要求1所述的方法,其特征在于,所述已改变组包括所述数据项的一个以上属性。6. The method of claim 1, wherein the changed set includes more than one attribute of the data item. 7.如权利要求1所述的方法,其特征在于,还包括:7. The method of claim 1, further comprising: 为同步目的监视多个数据项,所述多个数据项包括所述数据项;monitoring a plurality of data items for synchronization purposes, the plurality of data items including the data item; 确定所述上次同步后所述数据项已经改变;以及determining that the data item has changed since the last synchronization; and 在确定所述上次同步后所述数据项已经改变之后,确定所述数据项中的哪个属性组已经改变。After determining that the data item has changed since the last synchronization, it is determined which attribute group in the data item has changed. 8.如权利要求7所述的方法,其特征在于,8. The method of claim 7, wherein, 确定所述上次同步后所述数据项已经改变包括使用项改变标识符来确定所述上次同步后所述数据项已经改变;determining that the data item has changed since the last synchronization includes using an item change identifier to determine that the data item has changed since the last synchronization; 确定所述数据项中的哪个属性组已经改变包括:使用所述属性组的改变ID来标识所述数据项中的已改变组;以及Determining which attribute group in the data item has changed includes: using a change ID of the attribute group to identify the changed group in the data item; and 所述方法还包括:The method also includes: 在确定所述上次同步后所述数据项已经改变之后,更新所述项改变标识符;以及updating said item change identifier after determining that said data item has changed since said last synchronization; and 在使用所述属性组的改变ID来标识所述已改变组之后,更新所述已改变组的改变ID。After the changed group is identified using the change ID of the attribute group, the change ID of the changed group is updated. 9.如权利要求1所述的方法,其特征在于,9. The method of claim 1, wherein, 执行同步已改变组的动作包括在所述第一设备上接收同步项流,所述同步项流包括指示告诉所述第一设备所述数据项使用什么属性组映射的标记;以及performing the act of synchronizing the changed set includes receiving, at the first device, a stream of synchronized items, the stream of synchronized items including an indication telling the first device what attribute set mapping is used for the data item; and 所述属性组映射将所述数据项中的属性映射到所述属性组。The attribute group mapping maps attributes in the data item to the attribute groups. 10.如权利要求1所述的方法,其特征在于,还包括在所述第一设备上接收项改变的通知,所述项改变的通知提示所述第一设备与所述第二设备同步。10. The method of claim 1, further comprising receiving an item change notification on the first device, the item change notification prompting the first device to synchronize with the second device. 11.如权利要求1所述的方法,其特征在于,所述属性组基于所述属性的相对大小来确定。11. The method of claim 1, wherein the set of attributes is determined based on relative sizes of the attributes. 12.一种计算设备,包括:12. A computing device comprising: 储存指令和数据项的一个或多个计算机存储介质,所述数据项包括多个属性,所述多个属性分成多个属性组,所述属性组的每一个包含一个或多个所述属性,所述属性组的至少之一包含多个属性;以及one or more computer storage media storing instructions and data items, said data items comprising a plurality of attributes divided into a plurality of attribute groups, each of said attribute groups comprising one or more of said attributes, at least one of the attribute groups contains a plurality of attributes; and 读取和执行所述指令的处理单元,所述处理单元对指令的执行使所述计算设备同步所述数据项中的已改变组而不从另一计算设备流传送整个所述数据项,所述已改变组在所述数据项的属性组中,所述已改变组中的一个或多个属性自所述计算设备和所述另一计算设备之间的上次同步时起已经改变。a processing unit that reads and executes the instructions, execution of the instructions by the processing unit causes the computing device to synchronize changed groups of the data items without streaming the entire data item from another computing device, The changed set is in the set of attributes of the data item, one or more attributes in the changed set have changed since a last synchronization between the computing device and the another computing device. 13.如权利要求12所述的计算设备,其特征在于,所述处理单元对指令的执行使所述计算设备:在所述计算设备从所述另一计算设备接收到项改变的通知之后向所述另一计算设备发送同步请求,所述同步请求是对同步自所述计算设备和所述另一计算设备之间的上次同步时起已经改变的数据项的请求。13. The computing device of claim 12, wherein execution of the instructions by the processing unit causes the computing device to: after the computing device receives notification of an item change from the other computing device, send The other computing device sends a synchronization request, the synchronization request being a request to synchronize data items that have changed since a last synchronization between the computing device and the other computing device. 14.如权利要求12所述的计算设备,其特征在于,所述属性组基于所述属性的易失性。14. The computing device of claim 12, wherein the set of properties is based on volatility of the properties. 15.如权利要求12所述的计算设备,其特征在于,所述属性组以能重新定义所述属性组的方式来配置。15. The computing device of claim 12, wherein the set of properties is configured in a manner that enables the set of properties to be redefined. 16.如权利要求12所述的计算设备,其特征在于,所述处理单元对所述指令的执行使所述计算设备:16. The computing device of claim 12 , wherein execution of the instructions by the processing unit causes the computing device to: 确定特定属性组中的属性已经改变;determine that an attribute in a particular attribute group has changed; 在确定所述特定属性组中的所述属性已经改变之后,更新所述特定属性组的属性组改变标识符;以及updating an attribute group change identifier for the particular attribute group after determining that the attributes in the particular attribute group have changed; and 使用所述属性组改变标识符来标识何时已经发生了对特定属性组的改变。The property group change identifier is used to identify when a change has occurred to a particular property group. 17.如权利要求16所述的计算设备,其特征在于,所述处理单元对所述指令的执行使所述计算设备:17. The computing device of claim 16 , wherein execution of the instructions by the processing unit causes the computing device to: 基于所述数据项已经改变的确定更新与所述数据项相关联的项改变标识符;以及updating an item change identifier associated with the data item based on a determination that the data item has changed; and 当所述项改变标识符与从所述另一计算设备接收的项改变标识符不同时,确定所述数据项已经改变。The item of data is determined to have changed when the item change identifier is different from the item change identifier received from the other computing device. 18.如权利要求16所述的计算设备,其特征在于,所述计算设备是客户机,而所述另一计算设备是服务器。18. The computing device of claim 16, wherein the computing device is a client and the other computing device is a server. 19.一种储存指令的计算机存储介质,客户机的处理单元对所述指令的执行将所述客户机配置成:19. A computer storage medium storing instructions, execution of the instructions by a processing unit of a client configures the client to: 在所述客户机上本地地缓存数据项,所述数据项包括多个属性组,所述属性组的每一个映射到所述数据项的一个或多个属性,所述属性组的至少之一映射到所述数据项的多个属性,所述多个属性组至少包括跟踪属性组和已读状态属性组;Locally cache data items on the client, the data items include a plurality of attribute groups, each of the attribute groups maps to one or more attributes of the data item, at least one of the attribute groups maps to to a plurality of attributes of the data item, the plurality of attribute groups includes at least a tracking attribute group and a read status attribute group; 向服务器发送同步请求;以及send a sync request to the server; and 响应于所述同步请求从所述服务器接收同步项流,所述同步项流包括所述数据项中的已改变属性组而非整个所述数据项,映射到所述已改变属性组的一个或多个属性自所述客户机与所述服务器之间的上次同步起已经改变。receiving a stream of synchronized items from the server in response to the synchronization request, the stream of synchronized items comprising a set of changed attributes in the data item rather than the entire data item, mapped to one or more of the set of changed attributes A number of properties have changed since the last synchronization between the client and the server. 20.如权利要求19所述的计算机存储介质,其特征在于,20. The computer storage medium of claim 19, wherein 所述同步项流指定将所述数据项的属性映射到所述属性组的映射;以及said synchronized item stream specifies a mapping that maps attributes of said data items to said attribute groups; and 所述处理单元对所述指令的执行将所述客户机配置成使用所述映射来确定所述属性组的每一个中包括所述数据项的什么属性。Execution of the instructions by the processing unit configures the client to use the map to determine what attributes of the data item are included in each of the sets of attributes.
CN201110100085.7A 2005-08-15 2006-07-20 Partial item change tracking and synchronization Active CN102207957B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/204,067 US7962585B2 (en) 2005-08-15 2005-08-15 Partial item change tracking and synchronization
US11/204,067 2005-08-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200680029649XA Division CN101385017B (en) 2005-08-15 2006-07-20 Partial item change tracking and synchronization

Publications (2)

Publication Number Publication Date
CN102207957A true CN102207957A (en) 2011-10-05
CN102207957B CN102207957B (en) 2014-06-04

Family

ID=37758031

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201110100085.7A Active CN102207957B (en) 2005-08-15 2006-07-20 Partial item change tracking and synchronization
CN200680029649XA Active CN101385017B (en) 2005-08-15 2006-07-20 Partial item change tracking and synchronization

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN200680029649XA Active CN101385017B (en) 2005-08-15 2006-07-20 Partial item change tracking and synchronization

Country Status (16)

Country Link
US (2) US7962585B2 (en)
EP (2) EP1915670B1 (en)
JP (2) JP4959703B2 (en)
KR (1) KR101312810B1 (en)
CN (2) CN102207957B (en)
AU (1) AU2006280352B2 (en)
BR (1) BRPI0614287A8 (en)
CA (1) CA2616103C (en)
EG (1) EG25523A (en)
IL (1) IL188781A (en)
MX (1) MX2008002169A (en)
MY (2) MY188203A (en)
NZ (1) NZ565592A (en)
RU (1) RU2421780C2 (en)
TW (1) TWI454934B (en)
WO (1) WO2007021454A2 (en)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962585B2 (en) 2005-08-15 2011-06-14 Microsoft Corporation Partial item change tracking and synchronization
CN101159757B (en) * 2007-10-25 2011-11-30 中兴通讯股份有限公司 Dual-home synchronous data transmission method
CN101447886B (en) * 2007-11-26 2011-07-27 华为技术有限公司 Method for comparing mass data and device thereof
US20090203389A1 (en) * 2008-02-07 2009-08-13 Syncplanet Llc Systems and methods for synchronizing information using short message services and email services
US8280963B2 (en) * 2008-04-10 2012-10-02 Microsoft Corporation Caching and exposing pre-send data relating to the sender or recipient of an electronic mail message
TWI400623B (en) * 2008-11-06 2013-07-01 Acer Inc Remote computer synchronous transmission technology
US8463246B2 (en) * 2009-05-26 2013-06-11 Sony Corporation Contact management
US8346976B2 (en) * 2009-11-25 2013-01-01 T-Mobile Usa, Inc. Secured registration of a home network device
CN101719904B (en) * 2009-11-26 2012-07-04 华平信息技术股份有限公司 Method for reducing business communication volumes of server and client during Internet application
US8745037B2 (en) * 2009-12-17 2014-06-03 Microsoft Corporation Exploiting partitioning, grouping, and sorting in query optimization
US9141919B2 (en) 2010-02-26 2015-09-22 International Business Machines Corporation System and method for object migration using waves
CN102184375A (en) * 2010-04-30 2011-09-14 华为终端有限公司 Management method and terminal of data in subscriber identity module (SIM) card
US8392369B2 (en) 2010-09-10 2013-03-05 Microsoft Corporation File-backed in-memory structured storage for service synchronization
CN101989989A (en) * 2010-11-17 2011-03-23 中兴通讯股份有限公司 Method and system for synchronizing data of enterprise address book and personal address book
US8566336B2 (en) * 2011-03-30 2013-10-22 Splunk Inc. File identification management and tracking
GB2497793A (en) * 2011-12-21 2013-06-26 Ninian Solutions Ltd Pre-emptive caching of potentially relevant content from a collaborative workspace at a client device
US9110892B2 (en) 2012-03-13 2015-08-18 Microsoft Technology Licensing, Llc Synchronizing local and remote data
US10095672B2 (en) 2012-06-18 2018-10-09 Novaworks, LLC Method and apparatus for synchronizing financial reporting data
US20140331148A1 (en) * 2012-10-12 2014-11-06 Unify Gmbh & Co. Kg Method and apparatus for displaying e-mail messages
KR102058635B1 (en) * 2012-12-24 2019-12-24 삼성전자주식회사 Method for controlling file name and an electronic device thereof
CN104951238A (en) * 2014-03-24 2015-09-30 国际商业机器公司 Method and device for managing data storage in distributed virtual environment
US10721298B1 (en) 2015-06-18 2020-07-21 EMC IP Holding Company LLC Learning client preferences to optimize event-based synchronization
US10242024B1 (en) 2015-06-18 2019-03-26 EMC IP Holding Company LLC Dynamic reprioritization of content download during synchronization
US10992748B1 (en) 2015-06-18 2021-04-27 EMC IP Holding Company LLC Verification of event-based synchronization
US10235331B1 (en) 2015-06-18 2019-03-19 EMC IP Holding Company LLC Event-based synchronization in a file sharing environment
US10129357B2 (en) 2015-08-21 2018-11-13 International Business Machines Corporation Managing data storage in distributed virtual environment
US10237218B2 (en) 2016-08-29 2019-03-19 International Business Machines Corporation Message delivery management based on device accessibility
US10091148B2 (en) 2016-08-29 2018-10-02 International Business Machines Corporation Message delivery management based on device accessibility
US11061936B2 (en) 2019-04-24 2021-07-13 Microsoft Technology Licensing, Llc Property grouping for change detection in distributed storage systems
US11080265B2 (en) 2019-04-24 2021-08-03 Microsoft Technology Licensing, Llc Dynamic hash function composition for change detection in distributed storage systems
US11055274B2 (en) * 2019-04-24 2021-07-06 Microsoft Technology Licensing, Llc Granular change detection in distributed storage systems
CN114691782B (en) * 2022-04-12 2024-07-05 平安国际智慧城市科技股份有限公司 Database table increment synchronization method, device and storage medium

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1426190A (en) * 2001-12-13 2003-06-25 互慧科技股份有限公司 Data Synchronization System and Method

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966714A (en) * 1995-04-28 1999-10-12 Intel Corporation Method and apparatus for scaling large electronic mail databases for devices with limited storage
US5923848A (en) * 1996-05-31 1999-07-13 Microsoft Corporation System and method for resolving names in an electronic messaging environment
US5794254A (en) * 1996-12-03 1998-08-11 Fairbanks Systems Group Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets
US6036945A (en) 1997-04-11 2000-03-14 Shamrock Technologies, Inc. Delivery systems for active ingredients including sunscreen actives and methods of making same
US6052735A (en) * 1997-10-24 2000-04-18 Microsoft Corporation Electronic mail object synchronization between a desktop computer and mobile device
US6295541B1 (en) * 1997-12-16 2001-09-25 Starfish Software, Inc. System and methods for synchronizing two or more datasets
US6018762A (en) * 1998-03-31 2000-01-25 Lucent Technologies Inc. Rules-based synchronization of mailboxes in a data network
US6226650B1 (en) * 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
US6862617B1 (en) * 1998-10-12 2005-03-01 Microsoft Corp. System and method for synchronizing objects between two devices
US6463427B1 (en) * 1999-03-16 2002-10-08 Microsoft Corporation Use of object signature property as a search parameter during synchronization of objects on a computer
US6751634B1 (en) 1999-08-26 2004-06-15 Microsoft Corporation Method and system for detecting object inconsistency in a loosely consistent replicated directory service
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6941326B2 (en) * 2001-01-24 2005-09-06 Microsoft Corporation Accounting for update notifications in synchronizing data that may be represented by different data structures
US6993522B2 (en) * 2001-06-27 2006-01-31 Microsoft Corporation System and method for resolving conflicts detected during a synchronization session
TW579463B (en) * 2001-06-30 2004-03-11 Ibm System and method for a caching mechanism for a central synchronization server
US7149813B2 (en) 2001-08-14 2006-12-12 Microsoft Corporation Method and system for synchronizing mobile devices
US20030177171A1 (en) * 2002-01-22 2003-09-18 Brown Bruce Loring Electronic mail retrieval
US7024429B2 (en) * 2002-01-31 2006-04-04 Nextpage,Inc. Data replication based upon a non-destructive data model
US20040109025A1 (en) * 2002-08-28 2004-06-10 Jean-Marie Hullot Computer program comprising a plurality of calendars
US7650364B2 (en) * 2002-10-09 2010-01-19 Hewlett-Packard Development Company, L.P. Portable database system
US7386590B2 (en) * 2003-01-03 2008-06-10 Microsoft Corporation System and method for improved synchronization between a server and a client
US7768234B2 (en) * 2004-02-28 2010-08-03 Janik Craig M System and method for automatically synchronizing and acquiring content for battery powered devices
WO2005015882A1 (en) * 2003-07-25 2005-02-17 International Business Machines Corporation Method and system for sharing device - session data with multiple devices
KR100491541B1 (en) * 2003-08-01 2005-05-25 니트젠테크놀러지스 주식회사 A contents synchronization system in network environment and a method therefor
US20050033777A1 (en) * 2003-08-04 2005-02-10 Moraes Mark A. Tracking, recording and organizing changes to data in computer systems
US7512638B2 (en) * 2003-08-21 2009-03-31 Microsoft Corporation Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
US20050144044A1 (en) * 2003-09-29 2005-06-30 Samsung Electronics Co., Ltd. System and apparatus for efficiently utilizing network capacity in a healthcare setting
GB2406660A (en) 2003-09-30 2005-04-06 Ibm A system for retrieving data from a partially indexed data store
US7080104B2 (en) * 2003-11-07 2006-07-18 Plaxo, Inc. Synchronization and merge engines
JP4211982B2 (en) * 2003-12-19 2009-01-21 矢崎総業株式会社 Manufacturing method of wire harness branch
US7594022B2 (en) * 2004-04-21 2009-09-22 Microsoft Corporation Regulating client requests in an electronic messaging environment
US7383291B2 (en) * 2004-05-24 2008-06-03 Apple Inc. Method for sharing groups of objects
US20060123087A1 (en) * 2004-12-04 2006-06-08 Gibson David W Email storage format including partially ordered logs of updates to email message attributes
US7962585B2 (en) 2005-08-15 2011-06-14 Microsoft Corporation Partial item change tracking and synchronization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1426190A (en) * 2001-12-13 2003-06-25 互慧科技股份有限公司 Data Synchronization System and Method

Also Published As

Publication number Publication date
EP1915670B1 (en) 2018-12-05
MY188203A (en) 2021-11-24
CA2616103A1 (en) 2007-02-22
TW200712912A (en) 2007-04-01
CN102207957B (en) 2014-06-04
IL188781A0 (en) 2008-08-07
RU2421780C2 (en) 2011-06-20
US7962585B2 (en) 2011-06-14
HK1162711A1 (en) 2012-08-31
MY147049A (en) 2012-10-15
KR101312810B1 (en) 2013-09-27
EP2400405A1 (en) 2011-12-28
CN101385017A (en) 2009-03-11
EP1915670A2 (en) 2008-04-30
EP1915670A4 (en) 2011-10-05
EG25523A (en) 2012-02-01
BRPI0614287A2 (en) 2011-03-22
JP5356561B2 (en) 2013-12-04
MX2008002169A (en) 2008-04-22
KR20080039387A (en) 2008-05-07
US20110218963A1 (en) 2011-09-08
CN101385017B (en) 2011-06-08
RU2008105763A (en) 2009-08-20
NZ565592A (en) 2010-02-26
JP2012133795A (en) 2012-07-12
US9524329B2 (en) 2016-12-20
JP4959703B2 (en) 2012-06-27
AU2006280352B2 (en) 2011-03-17
TWI454934B (en) 2014-10-01
CA2616103C (en) 2017-06-20
WO2007021454A3 (en) 2008-10-02
JP2009507276A (en) 2009-02-19
BRPI0614287A8 (en) 2017-01-10
AU2006280352A1 (en) 2007-02-22
IL188781A (en) 2014-07-31
US20070078941A1 (en) 2007-04-05
WO2007021454A2 (en) 2007-02-22

Similar Documents

Publication Publication Date Title
CN101385017B (en) Partial item change tracking and synchronization
US9298794B2 (en) System and method for offline synchronization of exception items of shared services for client applications
CN101061475B (en) Maintenance of time-date information for low-fidelity devices used for synchronization
EP1497725A2 (en) Method of updating a display screen on a battery powered mobile computing device
US7284021B2 (en) Determining when a low fidelity property value has changed during a SYNC
US20130159389A1 (en) Utilizing Dynamic Heuristic Transitions between Local and Remote Data for Displaying Electronic Communications
US20180074867A1 (en) Provide copy of notebook document
AU2011202919B2 (en) Partial item change tracking and synchronization
HK1162711B (en) Partial item change tracking and synchronization
HK1165590A (en) Partial item change tracking and synchronization
CA2507424C (en) Maintaining time-date information for syncing low fidelity devices
KR101201075B1 (en) Maintaining time-date information for syncing low fidelity devices
WO2017100009A1 (en) Organize communications on timeline
GB2387687A (en) Method of replicating data between computing devices which use local clocks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1162711

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.