CN1977265A - 基于状态的同步 - Google Patents
基于状态的同步 Download PDFInfo
- Publication number
- CN1977265A CN1977265A CNA2005800217934A CN200580021793A CN1977265A CN 1977265 A CN1977265 A CN 1977265A CN A2005800217934 A CNA2005800217934 A CN A2005800217934A CN 200580021793 A CN200580021793 A CN 200580021793A CN 1977265 A CN1977265 A CN 1977265A
- Authority
- CN
- China
- Prior art keywords
- data
- data structure
- state
- narration
- historical
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
- G06F16/1837—Management specially adapted to peer-to-peer storage networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种用于同步的系统,通过该系统元数据库保持关于数据库中的数据项的历史和状态的信息。数据项响应于对其的改变而与状态和这种状态改变(例如,递增)相关联。与相同状态相关联的历史叙述描述了按照使多个数据项可与单个状态相关联的足够通配的方式描述这种改变(例如,如果多个数据项共享一共同历史,例如它们都由同一装置上的用户进行了编辑)。该历史存储装置与其他历史存储装置同步以在多个装置上反映数据项的状态。在同步期间采用同步的历史存储装置来识别并解决数据项历史世系中的数据冲突。
Description
技术领域
计算机程序列表
下表示出了22个源代码文件,这22个源代码文件是作为计算机程序列表提供在只读格式的光盘中的,在此通过引用将其并入。
表1计算机程序列表附录
最新修改日期 | 创建时间 | 字节 | 名称 |
02/01/2004 | 12:14p | 0 | typeattributes.dict |
01/25/2004 | 07:22p | 436 | clientnametransformer.h |
01/25/2004 | 07:33p | 1,255 | clientnametransformer.m |
03/11/2004 | 12:09a | 1,819 | extras.h |
03/10/2004 | 11:56p | 7,196 | extras.m |
03/10/2004 | 11:25p | 2,018 | mydocument.h |
03/11/2004 | 12:21a | 21,579 | mydocument.m |
03/10/2004 | 11:08p | 1,015 | myobject.h |
03/10/2004 | 11:08p | 6,987 | myobject.m |
03/10/2004 | 11:08p | 869 | myobjectview.h |
03/10/2004 | 11:47p | 6,946 | myobjectview.m |
02/21/2004 | 02:33p | 443 | syncsim.h |
03/08/2004 | 08:38a | 4,210 | syncsim.m |
05/18/2004 | 09:57a | <DIR> | syncsim.xcode |
01/01/1601 | 12:00a | <DIR> | |
01/01/1601 | 12:00a | <DIR> | |
03/11/2004 | 12:26a | 133,166 | bserlet.pbxuser |
03/09/2004 | 09:24a | 14,568 | bserlet0.pbxuser |
02/01/2004 | 02:29p | 53,220 | gjf.pbxuser |
03/11/2004 | 12:26a | 15,359 | project.pbxproj |
03/11/2004 | 12:14a | 4,537 | tuple.h |
03/11/2004 | 12:07a | 16,862 | tuple.m |
03/11/2004 | 12:14a | 2,885 | tuples.h |
03/11/2004 | 12:14a | 27,603 | tuples.m |
01/18/2004 | 12:43p | 257 | main.m |
22个文件 | 348,160字节 |
背景技术
同步是提供或保持数据集之间的一致性的功能。例如,台式计算机可具有涉及个人信息管理(“PIM”)的台式机数据集。该台式计算机的用户可能期望在她远离其台式计算机时也可使用该PIM数据。因此,她可能期望在使用膝上型计算机、或诸如电话的个人数字助理(“PDA”)或像微型装置的其他装置时,访问该PIM数据。为了满足该期望,她的膝上型计算机和PDA可各自携带与台式计算机上的PIM数据集相对应的PIM数据集。同步功能的作用在于使用户在各个装置上查看到的数据是共同的。该作用通常是通过在两个或更多个装置同步时的同步事件而实现的。
用于使装置同步的公知技术是,使用一时间点处的数据的快照并将当前数据与该快照进行比较来确定改变了什么。出于例示的目的,参照图1,图1中示出了台式计算机100和便携式计算机110这两个装置的模型。台式计算机具有PIM数据库101,该PIM数据库101保持在台式计算机100上所编辑或添加的PIM数据集的当前信息。台式计算机100还具有台式机快照数据库,该台式机快照数据库是在某时间点但通常是前一同步(可能为最近同步)时刻拍摄的PIM数据集的快照。类似地,便携式计算机110具有当前PIM数据的便携式机数据库111。有了这些结构,我们就可以尝试使台式机100和便携式机110同步了。典型的同步是通过将便携式机数据库111和台式机数据库101两者与快照数据库102进行比较而进行的。在比较操作期间,我们则可以集合动态数据库101和111中的、与数据库102相比为新的或改变过的数据项的列表。最后,为了完成同步,可以使用新的或改变过的数据的列表来更新全部三个数据库101、102和111。
当对应数据在台式机和便携式机两者中都发生改变时在所描述的同步处理中会出现问题。例如,在同步前的某时,Jane Doe的电话号码在台式机中变为877-555-5555,而在便携式机中变为800-555-5555。在比较操作期间(或其他时刻),同步系统将注意到该不一致,并识别为冲突。在现有技术中,通常没有确切地解决该冲突的合理方法。一些解决方案向用户提供界面,并请求用户在两个选项之间进行选择。遗憾的是,甚至用户也不记得哪条数据是正确的。其他的解决方案仅是在各数据库(具有各可能数据项的数据库)中创建副本条目。
如果有两个以上的装置携带对应数据集,则该问题进一步加重。例如,参照图1,假设在与便携式机110同步后,台式机100试图与PDA 120同步。在同步期间,我们可能发现PDA 120携带的Jane Doe的电话号码为888-555-555。遗憾的是,在现有技术中,我们还是没有确切地确定正确结果的合理解决方案。此外,即使此时我们可以确定正确结果(例如,由记得正确结果的用户),我们也不能防止系统在下一次使便携式机110同步时再次具有相同的问题。
最终,对于具有3个以上对端(peer)的对等系统来说,该问题可能是普遍的。该普遍性在于,如果在一个时刻对端可以彼此同步,并且出现了冲突,则无法知道是否其中一个对端携带有更加新的数据。应当注意,时间戳也不能确切地解决冲突。这是因为,在实际人们使用中,即使两个对应数据项在过去的天或月中发生了改变,也并不一定意味着第二次改变是正确的。这在如下情况下尤其如此:如果第二次改变是作为与另一对端同步的结果而发生的,而所述“另一对端”可能在很久以前接收到了其数据改变。因此,在对等情形下,我们一方面将无法确定检测到的冲突是否为真实冲突,或者另一方面,即使我们明了数据历史,也无法确定该检测到的冲突是可确实地解决的显著冲突。
在下面的美国专利5,710,922:用于在计算机系统间实现同步并存档信息的方法中,可以发现其他相关现有技术的同步技术,在此通过引用并入该专利。另外,在此通过引用并入下面的待审申请:TobyPaterson和Jerome Lebel于2004年5月24日提交的序号为__的“AMethod of Synchronising Between Three or More Devices”;以及,Toby Patterson和Jerome Lebel于2004年5月24日提交的序号为__的“A Method of Synchronising”。
鉴于上述讨论以及现有技术中存在的其他问题,本发明的一些实施例提出了具有以下三个目的一种同步系统:(i)正确地使全部非冲突数据同步;(ii)检测真实冲突,并仅在冲突为真实的情况下向用户提供界面来解决该冲突;(iii)避免两次请求用户解决同一数据的相同冲突。
将这些目的应用于现有技术,我们可以看到,现有同步系统满足第一目的,即它们通常可准确地使非冲突数据同步。然而,为了满足第二和第三目的,必须保持某种类型的元数据,例如,我们上面引用的时间戳。虽然一些现有技术系统试图使用元数据来实现这些目的,然而却不能完全实现。
发明内容
本文描述的实施例涉及使用历史信息作为同步系统和方法的辅助。在非常简单的实施例中,历史信息如同以每个数据(数据,在本文中,是指数据项或数据项集合)为基础保留的世代计数(generationcount)信息一样小。当数据同步时,世代计数信息被同步。世代计数还可用在同步过程中,以更好地明了冲突数据的优先级。
本发明的其他实施例使用更丰富形式的关于数据项的历史信息。在一些实施例中,存储在装置中的各数据项与状态(state)相关联。每当数据项改变时,状态改变(例如,递增)。通过将状态与数据的改变相关联,来保持历史信息。在一些实施例中,历史信息实际上是通用的,因此关于历史的单个叙述(statement)可与经历相同历史递增的许多数据项相关联。例如,如果用户创建10个数据项,则一些实施例仅采用一个状态来记录该历史(例如,装置X上的用户创建数据)。因此,所创建的10个数据项中的每一个都可与同一状态相关联。如果这10个数据项中的一个数据项发生了改变,则其状态将发生改变,而剩余九项保持旧状态。那么经改变的数据项将具有与关于该改变的另一历史叙述相关联的状态(例如,装置X上的用户编辑数据)。此外,第一次创建的状态保留为第二次创建的状态的祖先(ancestor)。按照这种方式,可以采用较少的状态(以及相关联的通用历史叙述)来跟踪极大量数据项的改变。
假设多个装置对于对应数据集采用示例性历史保持,这些装置可以同步历史信息,使得各装置了解关于全部装置上的数据项的状态信息(由于是时间同步,所以至少是在时间方面)。一旦历史信息被同步,就可将历史信息用作使数据项同步的基础,这是因为可以通过参照该历史信息来确定数据项的世系(ancestry)。例如,如果数据项在同步期间发生冲突,则通过检察历史信息以确定一个数据项是另一数据项的祖先还是后代可以解决该冲突。
附图说明
图1示出了可同步的装置。
图2是示例硬件。
图3是示例硬件。
图4是示例软件堆栈。
图5是世代计数示例表。
图6是历史数据示例表。
图7A是示例同步处理。
图7B是示例装置同步。
图7C是例示性数据结构布置。
图8是基于状态的同步的递归应用的示例系统。
图9是示例同步处理。
图10A、10B、10C和10D是示例数据和对应历史叙述。
图11A、11B和11C是示例数据和对应历史叙述。
图12是一图表,例示了使历史同步的实施例。
图12B是历史同步的例示。
图13A、13B和13C是对历史叙述的实例使用。
图14A、14B、14C、14D和14E是例示了历史叙述的无用数据收集(garbage collection)的实例。
图15是历史使用的示例。
具体实施方式
I.词汇及非限制性
在整个公开中,我们将使用一定的词汇来讨论同步技术和示例。所讨论的大部分例示将涉及PIM数据和对其的同步。然而,本发明的很多实施例显然可以应用于事实上任何类型的数据。使用本文教习的技术同步的一些示例数据如下:文本文件;文字处理文件;来自文件系统的文件,诸如jpegs、mp3、mpeg2、mpeg4或wav文件的媒体文件;来自数据库的记录;或者任何其他数据文件类型,无论其是否与特定应用关联。
随后返回到我们大部分例示性实施例的术语,我们将主要就PIM数据方面讨论本发明。总体而言,我们将讨论诸如计算机、PDA、电话或用来访问PIM数据的其他智能装置的装置。各装置通常与同步客户机(其通常是驻留在装置中的一个或更多个处理)相关联。在一些情况下,第一装置将使同步客户机驻留在另一装置(其被称为代理)中。这可能是因为安装第一装置的配置不足以主控(host)同步客户机。另选的,在多对端系统中,同步系统可以使用对于各个其他对端的本地代理,从而使所有对端同步,即使很多对端不在(代理代替不在的装置)。
PIM数据本身通常表现为个人联系方式、日历条目、笔记、日志条目等。当我们讨论一记录时,我们通常查阅互相关的多个数据项的集合。例如,可能查看到作为记录的John Doe的个人联络卡,其中电话号码、街道地址、呼机号码以及各种其他数据项通过它们与JohnDoe的共同关联而互相关。单个装置上的各个PIM数据项可能具有在一个或更多个其他装置上的一个或更多个对应数据项。例如,在JaneDoe的台式计算机、便携式计算机、PDA以及电话中的每一个上可能具有John Doe的街道地址的对应数据项。同样,如果我们的数据是数字照片,则台式机上John Doe的图片可能具有在PDA、便携式计算机以及其他地方上John的对应图片。同步功能的任务是使在多个装置之间查看到的对应数据是共同的(尽可能多)。
II.实例硬件和软件结构
尽管本文所描述的技术实际上可在任何构造环境下实现,但是出于例示的目的,我们将描述一些示例结构实施例。参照图2,示出了诸如PDA或电话手持机的实例便携式装置。如先前所述,客户机装置可以在任意方面被实现为足够智能化,以用于允许用户访问或编辑数据。因此,图2的装置旨在非限制地例示任何这种装置的实例。装置200的正视图201示出了屏幕204,该屏幕204可用来查看或访问数据以及输入数据(在触敏或配置有输入的屏的情况下)。还可使用键盘205来例如通过字母数字或其他方式进行数据输入,并且可使用有线连接206来进行供电和/或数据传输。无线端口203可以是用于将数据移入/移出装置200的红外、蓝牙、802.11或任何其他无线传输。下面转向装置200的内部202,我们看到存在处理器209来执行处理任务。发明的实施例可并入任何类型的装置,因此处理器209可以是任何类型的微处理器或控制器,或者是执行用于运行软件的功能以实现一个或更多个装置功能的组件的集合。装置200还可以具有如存储器207和208所示的用于存储数据和程序的两种或更多种类型的存储器。这些存储器可以是任何类型的存储器,例如磁存储器、光存储器,或者是诸如SRAM和DRAM的多种类型的硅基存储器中的任意类型。最后,装置200可具有用以支持I/O功能的组件210,该I/O功能为诸如可能在有线连接206和无线连接203中实现的功能。
下面参照图3,计算机300是用户结合多个所公开技术使用的装置的另一例示。计算机300是普通的计算机,像个人计算机,但并不旨在限于此。计算机300在系统的核心处具有一个或更多个微处理器315以及配件芯片组(未示出)。该芯片组可包括多项,例如网络单元310、音频单元311以及很多I/O功能,诸如可能在I/O单元314中实现的功能。当然,任何这些功能或子功能可单独地或共同地在芯片组内部或外部实现。计算机300还具有电源313,用于适配并供电。计算机300可具有任意多种光和磁驱动器以及使用这些驱动器的适当控制器,例如,IDE、ATA或SCSI控制器。为了用户可进行访问,计算机300具有监视器318、扬声器319、键盘321以及鼠标320,可选地,写字板/触摸屏。最后,计算机300可通过各种端口(网络301、无线302、USB 303、并口306、串口307、1394 308或调制解调器309)与任何形式的其他项(例如,携带有对应数据项的其他装置)相连接。
下面我们将讨论从实例硬件转移到通用软件背景。具体来说,参照图4,示出了软件堆栈,旨在例示本发明的一些实施例将驻留于的软件架构。类似于硬件示例,该结构并不旨在以任何方式进行穷举,而只是示例性的。对于层型图表尤其如此,软件开发商倾向于按照略微不同的方式来表示这些层型图表。在这种情况下,我们以O/S内核开始来表示多层,因此略去了下层软件和固件。注意,通常暗示的,层中所示的软件元件采用来自下层的资源并向上层提供服务。然而,实际上,并不是特定软件元件的所有组件都会完全按照这种方式工作。
通过这些限定,我们看到在图4中,分别专用于操作系统内核和核心服务的两个层424和423。通常,在核心服务层423之上,具有软件层(422和421),用于向应用层420中的应用提供更高级别资源和服务。将层图应用于本文中,我们通常希望在应用层420中找到PIM型软件。例如,在应用层中驻留有iCal应用402和地址簿应用403。iCal 402和地址簿403是管理PIM数据并向用户提供允许用户访问、编辑或操控该数据的界面的应用。这些应用层服务是一种类型的同步客户机,其中同步功能通过保持对指定客户机中的数据的共同查看(尽可能多)来向这些客户机提供服务。在很多实施例中,区域4100通常表示实现同步功能的处理可位于其中的地方。更具体地说,实现同步功能的处理可以是其应用客户机的对端,或者可位于该应用的下层中,甚至可能相对于应用程序隐藏自身(指的是这样的同步客户机,其不知道该处理为同步客户机)。同步功能还可以具有两层或更多层中的组件。然而,在很多实施例中,应用级别同步客户机向用户提供接口来配置并采用同步功能,因此同步处理表现为客户软件中的集成特性。另外,同步处理典型地可呈现自身的、用于配置和控制的用户接口,该接口与任何特定应用无关。最后,如前所述,同步客户机可存在为外部装置的代理。这种代理处理较少需要用户接口,并通常(但并非必须)位于软件堆栈的更高层中。
III.保留表示数据历史的元数据
a.世代计数
通过保持各数据集或数据项的数据历史信息可以发现对现有技术的许多问题的解决方案。按照一种简单形式,如在一些实施例中实践的,可以保持世代计数。具体来说,每当数据改变时,可以递增世代计数来表示该改变。更加具体来说,可以对于任何级别的数据集(即,每PIM数据库、每数据类数据库、每记录、或每数据项)保持世代计数。世代计数可被概念化为元数据,由此通过任何已知技术与数据相关联。例如,在很多实施例中,每个数据项地保持世代计数,并将该世代计数与数据一起存储。正如所述,其他实施例可使用其他技术,例如与数据项相关联的数据结构,或数据项的某种集合。
在表示历史的信息与数据同步的情况下,使用该表示历史的信息(例如,世代计数)的技术还可得到进一步提高。在一些实施例中,在同步处理期间,可以使世代计数同步,由此保持在多个客户机对端之间的少量的数据历史。作为示例,假设我们正使用与各数据项相关联的世代计数使三对端系统同步。参照图5,示出了一表,其例示了使客户机A、客户机B和客户机C同步的多个方面。具体来说,标记为“步骤”的第一列用于例示性引用,使得我们可以毫无混淆地谈及一行动作;标记为“动作”的第二列表示使得数据项改变的动作;标记为“数据”的第三列示出了从全知(omniscient)角度出发的预期数据值;第四、第五和第六列表示从各个客户机A、B和C的角度出发的、各所列动作之后的数据状态和世代计数。
随后参照图5,步骤0,我们看到装置A、B和C的对应数据项为空,对于该数据项没有动作。实际上,该状态可代表空数据项或者暂时不存在数据项。参照步骤1,用户在装置B上创建数据,该数据为“蓝”。世代计数为1(在B状态列中示出,并且装置A和C保持不知晓该改变)。在步骤2,用户将数据从“蓝”编辑为“蓝绿”(显然,是在装置B上);世代计数增加为2,并且装置A和C同样保持不知晓。在步骤3,装置B与装置C同步;数据的状态保持为“蓝绿”,并且装置B和C两者都知道正确的数据和正确的世代计数(2);装置A保持不知晓。下面,在步骤4,用户在装置C上编辑数据,使得状态递增为红,正确的数据从“蓝绿”变为“红”。装置A保持不知晓全部情况,装置B保持旧数据和旧状态(2)。接着在步骤5,装置A和C同步,使得装置A知晓正确的数据和世代计数(装置B保持旧数据和旧的世代计数)。在步骤6,用户在装置A上进行编辑,将“红”变为“橙”,并获得新的最高状态(4)。最后,在步骤7,装置A、B和C全都试图一起同步。结果是世代4和橙。然而,需要注意的是,在不携带世代计数的情况下,这种三向同步可能造成不必要的冲突。
b.保持数据历史的更丰富的表示
实际上,保持比简单的世代计数更丰富的历史表示有重要的用途。例如,在本发明的很多实施例中,保持详细的历史数据。参照图6,示出了如下的表,该表例示了使用更详细的基于每个数据项的历史使客户机A、客户机B与客户机C同步的多个方面。具体来说,标记为“步骤”的第一列用于例示性引用,使得我们可以毫无混淆地谈及一行动作;标记为“动作”的第二列表示使得数据项改变的动作;标记为“数据”的第三列示出了从全知角度出发的预期数据值;第四、第五和第六列表示从各个客户机A、B和C的角度出发的、各所列动作之后的数据状态和历史信息。
随后参照图6,步骤0,我们看到装置A、B和C的对应数据项为空,对于该数据项没有动作。实际上,该状态可代表空数据项或者暂时不存在数据项。参照步骤1,用户在装置B上创建数据,该数据为“蓝”。对于步骤1事务的事实被保留在装置B上。接着,在步骤2,如所表示的,用户在装置B上编辑数据。将历史记录在装置B上。在步骤3,装置B和C被同步,使得该数据项的数据(蓝绿)以及历史事实同步。在下一步骤(4)中,用户在装置C上编辑数据项,将数据变为“红”。然后,当在步骤5中装置A和C同步时,将数据项的整个历史传送到装置A。从该示例我们看到各个装置承载数据项历史的全部或一部分。
因此,该历史可被用来进行关于数据的智能判定。这种判定的一个示例是,在明显冲突的情况下,装置可确定数据项的一个版本是否为另一版本的祖先。这在很多情况下都是非常有用的,例如在被删节数据的情况下。在诸如台式计算机的大型装置与诸如电话的小型装置同步时可能出现被删节的数据。如果电话不足以携带全部数据项(或诸如记录的集合的全部),则对来自台式计算机的数据进行删节以便包含在电话数据库中。之后,电话可与诸如PDA的其他装置同步并传送被删节的数据。如果PDA和台式机试图随后同步,则它们将遇到仅特定历史数据可解决的冲突。
c.基于历史的同步的实例平台
我们已经总体讨论了使用基于历史的元数据来改善或提高同步技术。出于例示的目的,我们将讨论将这些技术置于构造环境中的一些发明实施例实例。这些发明实施例的一个优点在于,它们在先前同步之后不必要求对数据快照的独立保持。更具体地并如前所述,很多现有同步系统在各同步之后保留数据快照。该快照必须与用户编辑无关地被保持,这是因为该快照被用于在下一同步期间确定添加、改变或删除了什么数据。相比之下,本发明的很多实施例不要求对这种快照进行持久保持。具体来说,如果系统动态地更新数据项的历史信息和对应元数据,则无需单独的快照。这可能是因为历史数据提供了另选的且更全面的方法来确定什么数据确实是新的。另选的,本发明的一些实施例仅通过恰在同步之前生成快照并在完成同步之后除去该快照,就可避免保持持久快照。
下面参照图7C,示出了同步客户机装置790。在装置790内,示出了可用来实现本发明实施例的可能数据结构的概念化。数据结构可存储在可访问客户机装置的任何适当地方。如前所述,一些示例为SRAM、DRAM、磁或光存储器。不必将数据结构存储在同一存储器类型或地方中。下面参照装置790,数据存储装置791旨在代表用于与用户界面交互的活动数据库。现有技术中有很多方式来实现这种结构。这些实现可以是在单个文件或多个文件中。文件可以是平面表(flattable)、汤型(soup-type)文件或组合,或者适合的其他类型文件。例如,在PIM数据的情况下,对于由相关联的PIM程序管理的各数据类,通常存在独立的汤文件或平面文件。在任意这些事件中,数据存储装置791保持实际数据和一些元数据。元数据数据可如同ID码一样小,或者如同数据的整个历史一样多。使用术语“元数据”并不旨在排除使用该数据来使用户访问或操纵。在一些实施例中,在数据存储装置791中伴随数据项的元数据是状态标识,可选地为数据项ID。
历史存储装置792旨在代表用于保持关于数据存储装置791中的数据集或数据项的历史信息的数据结构。该历史信息可为与本文的讨论一致的任何形式。另外,名称“历史信息”并不旨在排除使用为非相关历史的信息。历史信息可包括在所公开技术下有用的任何元数据。此外,历史信息可以与使用诸如ID码的任何适当技术的数据项、虚拟或物理位置,或者诸如表或数据库的单独存储的关联装置相关联。在一些实施例中,历史存储装置中的信息与使用状态标识和/或数据项ID的数据集或数据项相关联。更具体来说,在一些实施例中,数据项与状态(例如,作为元数据保持在数据存储装置791中)相关联。在这些实施例中的一些实施例中,很多数据项可具有相同的状态。通过使用历史存储装置792中的对应状态ID,使历史信息与状态0相关联。例如,在一些实施例中,装置A的用户可以在其他空数据存储装置中创建10(或者甚至10,000)个数据项。所添加的数据项可以仅代表单个状态——与由用户在装置A上所编辑的数据的历史信息一起的状态的ID。进一步以此为例,如果装置A的用户要编辑10个所创建数据项中的三个,则第二状态将被反映在历史存储装置792中,以反映这三个数据项的历史。(它们例如处于状态,而未编辑的7项将处于状态1。)
下面移向快照793,其代表可用于所述全部或一部分数据存储装置的暂时快照的数据结构。如先前所述,一些实施例可在同步期间或同步之前采用独立的快照。正如先前针对数据存储装置791所述,历史存储装置792和快照793对于关于数据结构和物理存储器的实现都是灵活的。此外,数据存储装置791、历史存储装置792以及快照793可按相同的数据结构来实现;或者按照三个单独数据结构来实现;或者按照一个或更多个数据结构来实现;或者按照上述的任意组合来实现。
IV.基于状态的同步
如先前所述,本发明的许多实施例采用基于状态的同步技术,利用该技术将状态标识与各数据项或数据集相关联。在这些实施例中,数据存储装置中表示的状态也被表示在历史存储装置中。在历史存储装置内,状态与关于数据项的事实(这些事实包括但并不限于关于数据项的历史的事实)相关联。在多对端系统中,各客户机装置保持数据存储装置和/或历史存储装置。当在特定装置上添加或编辑(包括删除)数据项时,向该数据项分配新的状态,并在历史空间中进行可能的输入以反映该项的状态改变。历史空间中的输入仅为“可能的”的原因在于,所添加或编辑的数据项的新状态可能已经通过结合另一数据项的状态改变而创建的叙述反映在历史存储装置中了。因此显然,历史存储装置中的状态及其一起的元数据可同时应用于若干数据项。此外,在这些实施例中期望使历史存储装置中的信息量最小化。
a.通用同步示例
假设对端同步客户机如上所述进行工作,最终可能期望使这些同步客户机中的任意两个同步。在一些实施例中,按照非对称方式执行同步。具体来说,第一装置使其数据存储装置与第二装置同步,接着第二装置可能单独地使其数据存储装置与第一装置同步。对于很多实施例,实际同步处理包括图7A中示出的两个极为通用的步骤。第一步骤701是使历史存储装置中的信息(例如,描述数据项的状态改变的元数据)同步。第二步骤702是使数据存储装置中的数据项同步。因为首先使历史信息同步,所以可使用历史存储装置中的新历史信息来辅助数据存储装置的同步。
通常,可按照若干不同方式来使历史信息同步。参照图7B,示出了执行从装置704到装置703的单向同步的一对装置。可能使历史项同步的最简单的方式是将全部历史项从装置704传送至装置703。可在装置703上评估所传送的历史项,来确定这些项中的哪些项要求历史存储装置705中的表示。用于使历史信息同步的另一技术是使装置704和703通过任何适当通信机制(例如,无线链接708)输入对话。按照一种对话方式,装置703可向装置704查询关于装置704的历史信息的内容或关于该历史信息的事实。响应于这些查询,装置703接着在存储器705中创建必要的历史信息,或者请求来自装置704的必要信息并将其置于存储器705中。按照另一种对话方式,装置704可关于存储器705中的历史信息向装置703进行查询。接着装置704可确定并发送(如果有的话)装置703所要求的历史信息。
用于使历史信息同步的第三种技术是对历史信息递归地采用基于状态的同步技术。参照图8,示出了执行从装置802到装置801的单向同步的一对装置。如图8所示,对基于状态的同步的递归使用可能要求多个历史存储装置。装置801具有主历史存储装置805、次级历史存储装置804以及三级历史存储装置803。装置802具有主历史存储装置809、次级历史存储装置808以及三级历史存储装置807。正如针对其他数据结构所述的,各装置上的历史存储装置可以任意类型的存储器存在,并可实现为一种或若干种各种类型的数据结构。为了执行递归的基于状态的同步,向主历史存储装置805或809中的各元素(例如,事实叙述或事实叙述组)分配一状态;这种状态还(在次级历史存储装置804或808中)与关于对于主历史存储装置805和809中的元素所发生的状态改变的信息相关联。这是用于保持主元数据的次级元数据。当然,可以递归地多次嵌套该技术,所述次数如效率所指示的。例如,三级历史存储装置803和807可携带三级元数据来辅助对历史存储装置804和808中的次级元数据的同步。当利用被嵌套的历史存储装置来同步一实现时,同步的顺序可能与历史存储装置的分级相反。例如,如果采用图8中的全部历史存储装置,则可首先使三级对803和807同步。然后使用该同步的结果来辅助对次级历史存储装置804和808的同步,继而使用次级历史存储装置804和808的同步结果辅助对主历史存储装置805和809的同步。
一旦历史信息已被同步,就本地地知道远程数据的全部元数据状态。这样,数据存储装置同步可以开始于新历史信息的可能辅助。参照图8和图9,通用处理可以如下。在步骤901,一些实施例可比较来自本地装置801和远程装置802的对应数据项。在这些实施例中,如果判定902确定数据项相同,则步骤903指示不必对本地数据进行动作,并且我们准备下一数据。如果在步骤902中确定数据不相同,则控制移至步骤904来比较状态。需要注意的是,很多实施例将略去步骤901和902,因此通过对于所关注数据,比较本地状态和远程状态,来在步骤904开始该例示的处理。如果判定905确定状态不同,则控制进行到判定907来确定本地状态是否为远程状态的祖先。如果判定907为是,则这表示本地数据是旧的,并且应当更新本地数据来反映远程数据的值。如果判定907确定为否,则控制移至判定909来确定远程状态是否为本地状态的祖先。如果步骤909处的判定为是,则我们确认本地状态是最新的,并且控制进行到对于下一数据项的步骤911。如果判定909为否,则控制进行到步骤910,并且产生冲突。有很多可能机制来解决冲突。在一些实施例中,呈现用户界面,使得用户可以在冲突的数据项之间进行选择。不同的实施例可在此时显示一些元数据来辅助用户。一些可能有用的元数据可以是各数据项的历史,包括数据操纵中涉及的时间、装置以及用户(如果可用)。该元数据可携带在历史存储装置、数据存储装置中或其他地方。然而,如果在历史存储装置中携带有针对特定项的元数据,则将趋向于造成大量历史叙述。
虽然本领域技术人员无需提示就可理解,但是应当注意的是,针对图9所描述的处理可应用于被同步的世代计数,然而可能更有可能发生冲突。
b.历史叙述的可扩展语义语言
我们详细地讨论了使用历史和历史叙述。下面我们将讨论用作历史信息的信息示例类型。在形成历史叙述的语义时,很多实施例要求使其自身适于机器使用的语法。因此,在这些实施例中,可使用源代码类型格式来提供计算机读取和/或编译。一些实施例采用以下的通用语法:
新状态、功能/命令、客户机、旧状态
“新状态”是在本地装置上分配的状态标识。“旧状态”反映以本地状态表示的数据的先前状态。对于给定的历史叙述,新状态和旧状态两者都可用来跟踪世系,如先前所述在同步期间是必要的。不必按照递增顺序来分配状态标识。这些标识仅需要对其采用的环境是唯一的。例如,在很多实施例中,状态标识可对于每个客户机装置是唯一的,这是因为在该装置中仅有单个历史存储装置。然而,就可单独保持对于一些数据类的数据和元数据来说,状态标识则仅需要对于数据类/同步客户机组合是唯一的。另外,在一些实施例中,状态是永恒的,即一旦创建就不变。当然,对这些实施例来说,避免创建不必要的新状态以及清除被确定为永远无用的状态是更为重要的。
在我们的通用语法中,“客户机”是在历史叙述所反映的改变中所涉及的同步客户机的标识。在一些实施例中,客户机标识是必须的,以准确地跟踪世系并将冲突限定到那些真实的冲突。
在我们的通用语法中,“功能/命令”仅仅是表示状态改变的特性的词(通常为动词)。在本应用中,发明人构想了用在各种实施例中的若干功能。这些功能如下:
命令“外部”可用来建立本地与远程客户机之间的对应。例如,叙述{12,外部,家用机,34}表示本地机上的状态12对应于“家用机”同步客户机上的状态34。这在同步过程中是非常有用的,因为在所描述的比较操作期间,如果远程的数据项为状态34且本地状态为12,则我们知道状态是一样的。
命令“用户编辑”可用来表示用户改变了数据。例如,{17,用户编辑,“客户机B”,14}表示客户机B的用户将数据编辑为状态14,而在本地装置中,经编辑数据的状态为状态17。当然,客户机B可以是本地客户机,在这种情况下该叙述反映本地数据改变。
命令“冲突解决”可用来表示冲突解决的结果。例如,{101,冲突解决,家用机,37,38}表示和状态37相关联的数据被发现与和状态38相关联的数据冲突;并且表示在家用机上解决了该冲突;在本地状态101中表示了该解决。冲突状态的顺序可用来表示更多信息,诸如获赢状态和输掉状态(如,获赢状态,输掉状态)。对于以上示例,优选实施例按照该顺序列出了获赢状态和输掉状态。正如先前所讨论的,有多种技术用来解决冲突,诸如提供用户界面以接收用户决定。
命令“已知相等”用来表示两个对应数据项被发现是相等的。为清晰起见,我们参照被视为数据而非该数据的元数据(诸如状态标识)的内容。这种类型的发现可出现在先前所述的比较操作期间。例如,{100,已知相等,家用机,37,38}表示状态为37和38的数据项被发现在同步客户家用机上是相等的,并且创建了新的本地状态100来反映该发现。再次说明,旧状态的顺序可以(但并非必须)用来通过提供该功能的语法(例如,指定“本地状态,远程状态”)以传送更多信息。
命令“删节”用来表示出于某种原因(诸如先前所述)已删节了数据项。例如,{69,删节,办公机,68}表示状态为68的远程数据项在状态为68的办公机上被删节,并与本地装置上的状态69相关联。
命令“删除”表示删除了数据项。例如,{27,删除,PDA,26}表示在同步客户PDA上删除了状态为26的数据项,并且本地地创建了状态27来反映该事实。
命令“软删除”用来表示由于除用户删除之外的一些事情(例如,装置的最大容量)而删除的数据项。例如,{17,软删除,电话A,16}表示在同步客户电话A上软删除了状态为16的数据项,并且本地状态17用来反映该事实。
“等同状态”命令用来记录两个状态是副本的事实。尽管大部分实施例应被设计为不允许副本状态,但是在设计较差的系统中或者由于讹误(corruption)或其他未计划的问题还是可能出现副本状态。然而,当发现这种状态时可将其记录下来。例如,{38,等同状态,家用机,101,22}表示本地状态101和22是等同的,并且表示在同步客户家用机上发现了该事实。状态38被用来记录该事实,并且可能用来稍后将其清除。
命令“使用中”表示在装置的数据存储装置中状态处于使用中。例如,{0,使用中,家用机,3,5,11,25 26}表示同步客户家用机的数据存储装置中存在的数据项全都对应于状态3,5,11,25或26中的一个。在很多实施例中,“0”用作使用中命令叙述的主题(subject)状态。在这些实施例中,“0”仅用来保持利用其他历史叙述的语法。在功能方面,无需新的状态来记录使用中的当前状态。此外,在一些实施例中,使用中命令主要用于被称作无用数据收集(稍后对其进行描述)的处理。最后,在一些实施例中,使用中命令将携带表示其生成日期的世代计数。在一个或更多个实施例中,所示世代计数置于紧跟在客户机名称之后的方括号中,如下:{0,使用中,家用机[1],3,5,11,25 26}。
这里描述的命令并不旨在通过其名称或功能而进行穷举。例如,代替“已知相等”,通过被称为“相同数据”的命令或程序员希望的任何其他命令可实现相同的功能。另外,这里提供的实例命令旨在例示可能有用的命令类型。各种实施例可采用这些命令的子集或者甚至超集。具体来说,很多实施例是用于系统的扩展。具体来说,一旦建立,就可(利用其他的软件)升级系统,以在不破坏遗传数据或遗传历史信息的情况下包括其他命令。例如,可以替代可执行态或库或它们两者来添加新的命令和功能。新的库或可执行态可能能够解析新命令以及旧命令。这允许销售商在不破坏数据或不必重新处理全部数据或历史信息的情况下增强或增加特征集。
c.实例
图10是根据编写为用来示范和测试本发明的一些实施例的程序而创建的实例集。尽管程序还处于开发中,但是这些示例例示了使用先前例示的句法语言创建历史叙述。为了引用以及更具体地公开,附上示范程序的源代码作为对其的展示。
参照图10A,示出了用于具体实施一个或更多个数据项的对象1001(可按照两种方式来看该对象:将其看作通过改变形状或内部字母来改变其值的一个数据项;或者将其看作具体实施由形状和内部字母可视地表示的两个数据项的数据集)。对象1001上反映的编号“1”代表数据的状态。向创建的对象,诸如对象1001,分配一状态(“1”)。将数据和状态标识(“1”)存储在数据存储装置中,并在历史存储装置中创建历史叙述1002。在这种情况下,历史叙述1002表示通过用户编辑数据项1001从状态0到状态1的转变。显然,一些实施例使用状态0来表示没有信息是已知的。
下面参照图10B,示出了对图10A的继续表示。情况发生了改变,添加了四个对象(1003至1006)。注意,因为通过单个叙述(用户编辑以从状态0转变到状态1)来描述全部五个对象,所以无需新的历史叙述。
下面参照图10C,示出了对图10B的继续表示。情况发生了改变,其中对象1001从椭圆形变为了矩形。该数据项改变反映在了历史存储装置中的行1007中,这表明用户编辑造成从状态1到状态2的转变。所有其他对象都保持在状态1。
下面参照图10D,示出了对图10C的继续表示。情况发生了改变,其中对象1005改变了形状并移至状态2。这反映在历史存储装置中的行1007中。注意,行1007现在反映对于两个对象1001和1005的相同转变。类似的,我们将编辑剩余三个对象,并且将不创建新的状态,这是因为两个所列状态将描述对于全部已有对象从状态0到状态2的转变。
下面参照图11A,示出了根据前述示范程序的图形用户界面。UI具有两个窗口1101和1102,表示由程序仿真的客户装置“未命名”和“未命名2”(装置名称在各窗口的顶部)。图11A示出了装置“未命名”1101在其数据库中具有单个对象1103,而在其历史存储装置中具有单个对应的历史叙述1110。
下面参照图11B,示出了对图11A的继续表示。情况发生了改变,其中,装置1102执行了从装置1101的单向同步。我们看到该同步使得装置1102将相同的对象置于其历史存储装置中。另外,历史叙述1120至1122反映了先前所讨论的功能。具体来说,使用中命令1120告诉我们状态1是装置1102的数据存储装置中的唯一使用状态。外部命令1121反映了本地状态1对应于远程状态1(其被本地地表示为状态1)。用户编辑命令1122反映了在装置“未命名”1101上从状态0来编辑对象1130。
下面参照图11C,示出了对图11B的继续表示。情况发生了改变,其中装置1101执行了从装置1102的单向同步。我们看到数据存储装置未改变,即,对象1103和1130保持相同,并且是它们各自装置中的唯一对象。然而,在同步历史存储装置时,我们看到向装置1101(其在同步的接收侧上)的历史存储装置添加了三个叙述。具体来说,行1111至1113是新的,并是根据先前的定义描述来实现的。行1111和1113中使用的使用中命令反映了各装置上的数据库中所使用的状态。外部命令1112反映了:本地状态1等同于装置“未命名2”1102中的状态1。
d.使历史信息同步的更具体示例
已经总体地讨论了同步历史叙述,下面我们将提出使用该所引入的示例历史叙述的示例性同步技术。在使历史叙述同步时,很多实施例将在每次单向同步。因此,参照图7B,如果我们试图在装置704与装置703之间执行对历史信息的双向同步,则我们可能(i)首先将装置704的信息并入装置703中,并且(ii)其次,将装置703的信息并入装置704中。当然,也可采用逆序。然而,由于这些实施例通过多次采用单向同步技术来执行双向同步,所以我们将讨论单向同步。
参照图12,为了进行例示,假设我们使名为“Alpha”和“Beta”的两个装置中的历史信息同步。在该示例中,装置Alpha为本地目标客户机,而装置Beta为远程资源客户机。该示例的效果在于将Beta的历史叙述并入Alpha中(即,在该处理期间,Beta的历史存储装置为只读的)。概念上,该同步仅仅是确保Beta中的全部状态具有与Alpha中的对应状态的处理。这是通过在Alpha中创建新的状态以与Beta(当前对其没有对应状态)中的任何状态相对应来实现的。实际上,当Beta状态被标识为并入Alpha时,相关联的历史叙述(Beta中)被转译为本地使用并被添加到Alpha的历史存储装置中。可针对图12B中的流程图来使该通用处理概念化。
参照图12B,第一步骤1201用来考虑Beta历史存储装置中表示的历史叙述。接着,在判定步骤1202,我们必须确定所查历史叙述是否已经反映在Alpha的历史存储装置中。通常,该确定涉及是存在等同历史叙述还是相同的信息以某种方式另外存在于Alpha历史存储装置中。如果确定1202为是,则对于该状态/历史叙述的处理结束。如果在Alpha中没有发现对应状态,则处理移至干路1204,其中所关注的Beta叙述转译为Alpha中的本地使用。在步骤1205中,将本地化的叙述插入到Alpha历史存储装置或临时保持的映射表中。
e.对历史的五步同步
用于将远程历史存储装置中的历史叙述同步到本地历史存储装置中的同步处理可按照如下仅三个步骤来清楚地表示:(i)创建新的本地状态以响应于全部远程状态(使用外部或等同状态类型命令);(ii)将全部远程历史叙述转译为本地历史叙述,并将其置于本地存储器中(步骤(i)确保存在全部必要状态),并转换全部远程历史叙述;以及(iii)试图消除本地存储器中的副本。然而在一些实施例中,当与略微复杂的五步历史叙述同步相比时,该三步处理效率较低。我们将五个步骤讨论为五遍(pass)通过目标(如,Beta历史存储装置)。每遍都被设计为提供不同类型的历史叙述或不同的情形。因此,每遍可创建新的历史叙述以并入Alpha历史存储装置中。然而,在开始实质工作之前,必须在工作环境下进行后勤供应(logistical provision)。例如,在公共计算环境下,可分配存储器,并可创建映射表或类似的数据结构。随着这些叙述的列表的增长或随着所述五遍而发生改变,这种“映射表”可用来保持新的Alpha的新历史叙述。另外,表或类似结构可用来保持与Alpha的新历史叙述相对应的信息,例如数据、其他元数据或Beta源历史叙述。
在第一遍中,我们考察所有基于“外部”命令的历史叙述,并将其转译到源(Beta)历史存储装置中。因此,在一些实施例中,对于Beta历史存储装置中的每个基于“外部”的历史叙述(或其快照),我们将确保我们在Alpha中具有对应的状态关联。例如,参照图12,行1,如果存在Beta中所反映的五个基于“外部”的状态,B1至B5,则我们进行检查以确保我们在Alpha中具有“外部”命令,其针对5个状态B1至B5中的每一个在Alpha中建立了等同状态。假设我们在Alpha历史存储装置中仅发现了使用先前描述的命令术语的B1至B3,这些叙述可表现为
A1,外部,beta,B1
A2,外部,beta,B2
A3,外部,beta,B3。
在我们的示例中,因为我们发现没有B4和B5的“外部”对应,所以我们可创建这些状态的叙述,并将它们置于我们的表中。参照图12,实例新叙述出现在行1,“装置Alpha”列中。如图12所见,我们正在创建将Beta的状态映射到Alpha的状态的外部命令。在第一遍期间,很多实施例忽略了具有(i)命令使用中和(ii)目标客户机(Alpha)两者的源(Beta)中的历史叙述。例如,在这些实施例中,我们将忽略具有以下形式的叙述:任何状态,使用中,Alfpa,任何状态。在这些实施例中,如果执行无用数据收集,则将在处理结束时创建Alpha的新状态“使用中”。
在第二遍中,我们处理源(Beta)中的可按目标(Alpha)的现有状态表示的全部历史叙述。关于词汇表,如果可利用当前现有目标状态来表示源(Beta)历史叙述,则我们说可“本地化”这种历史叙述。对于可本地化的任何源(Beta)历史叙述,我们可执行本地化(使用现有本地状态来表示叙述),并将新的本地化历史叙述添加到目标(Alpha)映射表中(或者在其他实施例中添加到历史存储装置中)。当然,如果Alpha的存储器中已有本地化历史叙述,则不必将其添加到映射表中。此外,根据所用的精确算法,在实现历史存储装置中已有本地版本之前可不必完全使叙述“本地化”。在这种情况下,一旦达到了这种实现,就可中止本地化处理。以下示例例示了这一处理。出于该示例的目的,假设Alpha具有现有状态A1至A15,Beta具有现有状态B1至B18,并且另一对端装置Kappa具有现有状态K1至K13。另外假设Alpha、Beta以及Kappa的状态以标号相对应(即,A1、A2、A3分别对应于B1、B2、B3,对应于K1、K2、K3),并且假设Alpha、Beta以及Kappa中的每一个具有建立全部现有对应的“外部”命令叙述。接着参照图12,行2,在“状况”列中示出了第二遍的该示例的两个历史叙述。出于该示例的目的,这两个叙述位于Beta数据存储装置中。第一叙述是用户编辑命令,示出了B5是反映用户已在Beta装置上编辑了状态B4对象的状态。如在映射表列的行2中所见,该叙述容易地转译到Alpha状态等同。这是因为Beta状态B4、B5和B10已在装置Alpha上建立了对应(如先前所述,可通过基于“外部”命令的历史叙述来建立对应)。类似的是,图12,行2示出了包括冲突解决命令的历史叙述的示例。
在一些实施例中,第二遍还试图转换如上所述未被简单地本地化的源(Beta)历史叙述。因此,如果无法使Beta历史叙述本地化,则该叙述变为该处理的候选。该处理用于(确定地)推导出源(Beta)中的历史叙述与目标(Alpha)中的历史叙述之间的关系。当然,用于进行这些推导的技术随历史叙述中心处的命令而改变。例如,参照图12中的行3,(i)如果存在源(Beta)冲突解决叙述(例如,{B16,冲突解决,Kappa,B3,B5});(ii)如果存在目标冲突解决叙述(例如,{A9,冲突解决,Kappa,A3,A5});以及(iii)如此处,存在获赢状态(A3和B3)与输掉状态(A5和B5)之间的识别对应;则(iv)我们可推导出主题状态B16和B9是相同的。进行了这种推导,我们最终可将映射叙述添加到映射表中(或者,在其他实施例中,添加到目标(Alpha)历史存储装置)。具体来说,我们讨论了两种类型的映射历史叙述:“外部”命令叙述;和“等同状态”命令叙述。在这种情况下,如果作为第一遍的结果,在映射表(回想该映射表是新的历史叙述的临时保存地方)中已有对应,则我们使用“外部”命令。如果在映射表中还没有对应,则我们采用“等同状态”命令。
在完成第二遍之前,如果存在由推导出的关系造成的任何新映射,则重复第二遍来确定这些新映射是否提供了用于使更多源(Beta)历史叙述本地化的信息。
在第三遍中,我们处理除主题之外与现有目标(Alpha)历史存储器中的历史叙述匹配的、源(Beta)历史存储装置中的历史叙述。另选的,我们处理来自Beta历史存储装置的可为其推断主题状态的历史叙述。这些历史叙述已在Alpha存储装置中有等同叙述,但是由于没有“外部”或创建主题状态之间的对应的其他叙述,所以并不容易识别出这些等同叙述。例如,参照图12,行4,存在具有不同主题(结果状态A13和B16)但具有其他等同状态的两个已知等同命令。因为获赢状态(B3,A3)相同且输掉状态(B5,A5)相同,所以我们知道主题状态A13和B16也必须是等同的。因此,我们可添加对应的“外部”命令,如行4的映射表列中所示(对于一些实施例使用外部命令表示在映射表中未发现对应)。在完成第三遍之前,如果存在由第三遍的推断关系造成的任何新映射,则重复第二遍以确定这些新映射是否提供用于使更多源(Beta)历史叙述本地化的信息。
在第四遍中,我们处理除主题外可被本地化的全部Beta历史叙述,即,在这些Bata历史叙述中,可按照Alpha的当前状态表示Beta历史叙述中除主题外的全部状态。在这一方面,我们知道对于任何这种Beta历史叙述:(i)其主题不能被本地化(因为这可能已在第二遍中发生);和(ii)Beta历史叙述不与任何现有Alpha历史叙述匹配(从任何观点来说,包括推断或推导)。我们通过创建新的Alpha状态并将其作为主题附于本地化的Beta历史叙述来处理这些叙述。作为示例,参见图12中的行5,其中新状态“ANEW”附于其他匹配冲突解决历史叙述。此外,我们创建新映射叙述,其建立新创建的状态(ANEW)与先前无法本地化的Beta主题状态(参见图12中的行4)之间的对应。我们使用“外部”或“等同状态”命令的协定(convention)保持与先前所建议的相同(如果在映射表中还没有关联,则使用外部命令)。另外,如前所述,如果我们在遍4中创建了任何新映射,则我们重试遍2,这是因为新映射可能使得我们能够对新Beta历史叙述进行本地化。
在第五遍和最后一遍中,我们如下处理各个剩余源(Beta)历史叙述:(i)忽略具有主题(其为0或者已映射到映射表中)的剩余叙述;(ii)忽略剩余的“外部”命令(因为我们不想浪费处理时间或空间来学习不必要的状态);(iii)针对源(Beta)历史中还未映射的各状态创建新的目标(Alpha)状态;以及(iv)创建类似于Beta叙述但使用新创建的Alpha状态的目标(Alpha)历史叙述。例如,参见图12,行6,其中示出了关于如下Beta历史叙述的遍5转换,{B18,冲突解决,Kappa,B17,B16}(假设Alpha对于B16、B17或B18没有对应状态)。如行5所示,分别对B16至B18创建新的Apha状态ANEW1、ANEW2和ANEW3。另外,使用新创建的Alpha状态来转译Beta冲突已解决的叙述。
如在其他情况下,如果遍5创建了任何新映射,则我们重试遍2,这是因为新映射可能使我们能够对新Beta历史叙述进行本地化。
在遍5结束时,应当已处理了所关注的全部Beta历史叙述。
f.无用数据收集
如前所述,可能期望使历史叙述数最小化来保留系统资源并提高性能。因此,一些实施例使用无用数据收集处理来消除不必要的历史叙述。无用数据收集是评估历史存储装置中的历史叙述以确定是否可以删除任何无用数据(因为它们对于系统功能来说是不必要的)的处理。通常为了实现无用数据收集,各客户机在跟踪每个其他客户机上的使用中的状态,并且仅对已知在全部已知客户机上都无用的状态进行无用数据收集。更为具体地,实例处理如下:
(i)跟踪使用状态
首先,各客户机可跟踪其自身和各已知对端同步客户机中的使用中的全部状态。简要的说,如果一状态被用来表示数据存储装置中的对象,则该状态处于使用中。例如,参照图13A,在数据存储装置中有单个对象(Dog)1302。如图形1301所示,对象Dog处于状态5,这是因为如在历史存储装置1303中所示,创建对象(造成第一历史叙述)接着用户编辑4次(每次编辑都造成新的历史叙述)。然而,出于无用数据收集的目的,在数据存储装置1305中仅状态5处在使用中。假设对象Dog 1302此时是我们的扩展系统(全部数据,全部同步客户机)中的唯一对象,则直观的,历史叙述1310到1313都是不必要的(如果我们从未告诉另一客户机关于这些编辑,则我们编辑对象Dog多少次都无所谓)。因此,参照图13B,示出了在所假设的系统中在13A的同步客户机上的无用数据收集结果。如我们在图13B中所见,删除了历史叙述1310到1313,仅留下叙述1314(其具有主题5——在数据库中使用的唯一主题状态)。此外,添加了历史叙述1315来记录以下事实,即在客户机“未命名”1320中状态5处在使用中,并且对于未命名的“用户编辑”命令处在其第一代中(“[1]”)。
参照图13C,示出了用于例示正在使用的状态的另一示例。具体来说,图13C示出了数据存储装置中的两个对象1351和1352。在这种情况下,创建第一对象1351,然后对其编辑七次(由此其处于状态8)。然后,创建对象1352,并对其编辑两次(由此其处于状态3)。因此,对于客户机“未命名”1350,状态8和3处于使用中。
最后,对于跟踪使用中的状态,存在关于如何或可能是何时跟踪这种信息的问题。每当数据存储装置中发生改变时,客户机可通过重新计算信息来跟踪其正在使用的状态。另选的,客户机可在其执行无用数据收集时或在其执行同步时计算其使用中的状态。
(ii)必要历史叙述
除了跟踪使用中的状态,还必须有如下机制:在给定正在使用的状态的特定集合情况下,明了哪些历史叙述对其哪些客户机是必要的。每当在给定客户机上有数据改变时,可以计算哪些历史叙述对于各个以及每个已知客户机是必要的。如果历史叙述对于任何已知客户机都是必要的,则必须保持其。例如,参照图14A,示出了具有3个客户机1410、1430和1450的同步系统。参照图14A以及图15中的表的第一和第二行,在客户机1410上创建了单个对象,并且在全部客户机间进行同步。然后参照图14B以及图15的行3,客户机1410编辑数据1411,并且该编辑被反映在数据存储装置和历史存储装置两者中(1410中的状态2)。正如我们在图15的注释(行3)中所见,全部客户机需要了解该数据编辑(至状态2),因此必须将其保持。然而,客户机1410不再需要状态1历史叙述,但是必须保持该状态1历史叙述,这是因为客户机1410知道客户机1430和1450的存在,但是不知道它们是否需要该改变。参照图14C和图15,行4,我们下面再次编辑数据对象1411,将其移至状态3并创建对应历史叙述。接着参照图15,行4中的注释,全部客户机1410、1430和1450都要求该改变(状态3),因此将其保持。然而,客户机1410实际上不再需要状态2(改变到A’)但是必须保持相关历史叙述,这是因为客户机1430和1450可能需要该叙述。下面参照图14D和图15的行5。下面我们使客户机1410和1430同步。我们在行5的注释中看到,1410和1430两者不再要求状态2或状态1,但是由于它们知道1430存在而且可能1430需要该状态,所以必须保持该状态。最终,我们移至图14E和图15的行6,下面我们使全部三个客户机同步并进行无用数据收集。因为我们现在确定排除了状态1和2,因此可消除具有主题状态1或2的历史叙述。因此,我们看到,只要客户机确定全部其他已知客户机都不需要一状态,该客户机就可以释放该状态(以该状态为主题的任何历史叙述)。
(iii)共享/同步使用中的信息
最后,我们可具有如下机制,即与其他客户机共享该信息(特定客户机如何了解各个其他客户机可能需要什么)。如在图14A至14E中所见,该机制是使用“使用中”命令的历史叙述。如前所述,使用中历史叙述可携带全部下述信息:主题状态指示符(其通常为“0”);使用中命令,世代计数(示例中的方括号中所示),因为对于给定同步客户机仅最新的使用中命令是相关的;以及最后,使用中的状态的列表。通过保持这些使用中叙述并使其同步,各客户机可以了解在上次它们连接(经大概双向同步及无用数据收集)的其他已知装置上哪些状态处在使用中。这就是客户机1410(在上述示例中)如何知道不丢弃状态1和2,直到其确认装置1430和1450两者都确实不需要这些状态。因此,在一些实施例中,必须使使用中历史叙述同步到其他同步客户机上,使得这些其他同步客户机不设置另一客户机上需要的状态。
因此,一般来说,对于连接到(即,了解)N个其他客户机(可能过渡地)的给定客户机,具有反映在使用中叙述中的N组使用中的状态。这些使用中的状态及其后代(相反于祖先)是可能对于N个客户机的组相关的状态。可以丢弃全部其他状态。通常,当与其他客户机相连接时,可以确定某组互不相关的祖先(例如,在图15的行6中)——其中有可能进行无用数据收集。
除非明确说明,以上实施例旨在为例示性的而非限制性的。本领域技术人员可按照多种方式修改这些实施例和历史。这种修改期望并旨在作为本文的讨论的一部分。
Claims (71)
1、一种保持数据和元数据以进行同步的方法,该方法包括以下步骤:
在第一装置上创建第一数据,并将第一状态与所述第一数据相关联;
创建第一历史叙述以反映关于所述第一数据的创建的元数据;
将所述第一历史叙述与所述第一状态相关联;并且
在所述第一装置上创建第二数据,并将所述第一状态与所述第二数据相关联。
2、根据权利要求1所述的方法,其中,所述第一数据是诸如记录的数据集。
3、根据权利要求1所述的方法,其中,所述第一数据是数据项。
4、根据权利要求1所述的方法,其中,所述第一数据代表照片。
5、根据权利要求1所述的方法,其中,所述第一数据代表声音。
6、根据权利要求1所述的方法,其中,所述第一历史叙述包括关于所述第一装置的识别以及创建所述第一数据所依据的特性的信息。
7、根据权利要求1所述的方法,所述方法还包括以下步骤:
在所述第一装置上编辑所述第一数据;
将第二状态与所述第一数据相关联;
创建第二历史叙述来反映关于所述编辑的元数据;
将所述第二状态与所述第二历史叙述相关联。
8、一种保持待同步的数据的装置,所述装置包括:
用户输入,用于创建第一数据和第二数据;
处理器和软件,用于创建第一历史叙述来反映关于所述第一数据的创建和所述第二数据的创建的元数据,并且用于将所述第一数据、所述第二数据以及所述第一历史叙述与第一状态相关联;
第一存储器,用于存储第一数据结构,所述第一数据结构用于保持所述第一数据与所述第一状态之间的所述关联以及所述第二数据与所述第一状态之间的所述关联两者;
第二存储器,用于存储第二数据结构,所述第二数据结构用于保持所述第一历史叙述与所述第一状态之间的所述关联。
9、根据权利要求8所述的装置,其中,所述第一数据是数据项。
10、根据权利要求8所述的装置,其中,所述第一数据代表声音。
11、根据权利要求8所述的装置,其中,所述第一数据代表照片。
12、根据权利要求8所述的装置,其中,所述第一历史叙述包括关于所述第一装置的识别以及创建所述第一数据所依据的特性的信息。
13、根据权利要求8所述的装置,其中,所述第一存储器是磁的。
14、根据权利要求8所述的装置,其中,所述第一存储器是动态存储器。
15、根据权利要求8所述的装置,其中,所述第一存储器是静态存储器。
16、根据权利要求8所述的装置,其中,所述第一存储器和所述第二存储器相同。
17、根据权利要求8所述的装置,其中,所述第一数据结构和所述第二数据结构被并入到单个汤型数据结构中。
18、根据权利要求8所述的装置,其中,所述第一数据结构和所述第二数据结构被并入到单个平面数据结构中。
19、根据权利要求8所述的装置,其中,所述第一数据结构和所述第二数据结构是分立的对象。
20、一种使数据库同步的方法,该方法包括以下步骤:
在第一数据结构中,将第一状态标识与一个或更多个数据集相关联;
在第二数据结构中,将所述第一状态标识与关于和所述状态标识相关联的所述一个或更多个数据集的信息相关联;
对所述一个或更多个数据集中的第一数据集进行改变;
在所述第一数据结构中,将第二状态与所述一个或更多个数据集中的所述第一数据集相关联;
在所述第二数据结构中,如果在所述第二数据结构中关于所述改变的信息尚未与所述第二状态相关联,则将所述第二状态与关于所述改变的所述信息相关联。
21、根据权利要求20所述的方法,其中,所述第一数据结构是汤型数据库。
22、根据权利要求20所述的方法,其中,所述第一数据结构是平面文件。
23、根据权利要求20所述的方法,其中,所述第一数据结构包括两个或更多个子数据结构。
24、根据权利要求20所述的方法,其中,所述第二数据结构是汤型数据库。
25、根据权利要求20所述的方法,其中,所述第二数据结构是平面文件。
26、根据权利要求20所述的方法,其中,所述第二数据结构包括两个或更多个子数据结构。
27、根据权利要求20所述的方法,其中,第三数据结构包括所述第一数据结构和所述第二数据结构两者。
28、根据权利要求20所述的方法,其中,数据集是记录。
29、根据权利要求20所述的方法,其中,数据集是数据项。
30、根据权利要求20所述的方法,其中,所述改变是编辑。
31、根据权利要求20所述的方法,其中,所述改变是删除。
32、一种使信息同步的装置,该装置包括:
第一存储器,用于存储第一数据结构,所述第一数据结构用于将第一状态标识与一个或更多个数据集相关联;
第二存储器,用于存储第二数据结构,所述第二数据结构用于将所述第一状态标识与关于和所述状态标识相关联的所述一个或更多个数据集的信息相关联;
用户输入,用于对所述一个或更多个数据集中的第一数据集进行改变;
处理器和软件,用于
在所述第一数据结构中,将第二状态与所述一个或更多个数据集中的所述第一数据集相关联;并且用于
如果在所述第二数据结构中关于所述改变的信息尚未与所述第二状态相关联,则在所述第二数据结构中将所述第二状态与关于所述改变的所述信息相关联。
33、根据权利要求32所述的装置,其中,所述第一存储器和所述第二存储器相同。
34、根据权利要求32所述的装置,其中,所述第一数据结构是汤型数据库。
35、根据权利要求32所述的装置,其中,所述第一数据结构是平面文件。
36、根据权利要求32所述的装置,其中,所述第一数据结构包括两个或更多个子数据结构。
37、根据权利要求32所述的装置,其中,数据集是记录。
38、根据权利要求32所述的装置,其中,所述数据集是数据项。
39、根据权利要求38所述的装置,其中,所述数据项代表声音。
40、根据权利要求38所述的装置,其中,所述数据项代表照片。
41、根据权利要求20所述的装置,其中,所述改变是编辑。
42、一种使保持在第一数据结构中的第一数据与保持在第二数据结构中的第二数据同步的方法,该方法包括以下步骤:
在所述第一数据结构中将第一数据的各数据项与第一状态标识相关联;
在第三数据结构中将各个第一状态标识与历史叙述相关联;
在所述第二数据结构中将第二数据的各数据项与第二状态标识相关联;
在第四数据结构中将各第二状态标识与历史叙述相关联;
使来自所述第三数据结构的历史叙述同步到所述第四数据结构中以创建同步的第四数据结构;
通过使用来自所述同步的第四数据结构的信息,使来自所述第一数据结构的数据同步到所述第二数据结构。
43、根据权利要求42所述的方法,其中,所述第一数据结构和所述第三数据结构相同。
44、根据权利要求42所述的方法,其中,所述第一数据结构和所述第三数据结构驻留在一个装置中,而所述第二数据结构和所述第四数据结构驻留在另一装置中。
45、根据权利要求42所述的方法,其中,在第三数据结构和第四数据结构的每一个中的一个或更多个所述历史叙述包括第一状态标识与第二状态标识之间的互相关。
46、根据权利要求42所述的方法,其中,第一数据包括N个数据项,并且这N个数据项与M个状态相关联,并且M<N。
47、一种与远程装置同步的本地装置,所述本地装置包括:
第一本地数据存储装置,用于存储本地数据项和相关联的本地数据状态,多个所述本地数据项与存储在所述远程装置中的远程数据项互相关,所述远程数据项与远程状态相关联;
第二本地数据存储装置,用于存储历史叙述,所述历史叙述包括将本地数据状态与远程数据状态相关联的叙述以及关于对一个或更多个本地数据项和一个或更多个远程数据项的编辑的叙述。
48、根据权利要求47所述的装置,其中,编辑是创建。
49、根据权利要求47所述的装置,其中,编辑是删除。
50、根据权利要求47所述的装置,其中,编辑是删节。
51、根据权利要求47所述的装置,其中,存在N个本地数据项,并且这N个本地数据项与M个本地状态相关联,并且M<N。
52、一种跟踪数据改变的方法,其中数据包括多个数据项,所述方法包括以下步骤:
将第一状态与第一多个数据项相关联,所有所述第一多个数据项都具有第一共同历史;
将所述第一状态与描述所述第一共同历史的第一历史叙述相关联。
53、根据权利要求52所述的方法,其中,所述第一共同历史是所述数据项的创建。
54、根据权利要求53所述的方法,其中,所述第一历史叙述表示创建了数据以及数据如何创建的。
55、根据权利要求53所述的方法,其中,所述第一历史叙述表示创建了数据以及使用了什么装置来创建数据。
56、根据权利要求53所述的方法,其中,所述第一历史叙述表示创建了数据以及与所述数据创建相关联的同步客户机。
57、根据权利要求52所述的方法,其中,所述第一共同历史是数据的编辑,所述编辑与特定同步客户机相关联。
58、根据权利要求52所述的方法,其中,所述第一多个项包括地址和电话号码。
59、根据权利要求52所述的方法,其中,所述第一多个项包括两个地址。
60、根据权利要求52所述的方法,该方法还包括以下步骤:对第一数据项子集进行第一改变,所述第一数据项子集包括所述第一多个数据项中的一个或更多个;将第二状态与所述第一数据项子集相关联;以及将第二历史叙述与所述第一改变相关联。
61、根据权利要求60所述的方法,其中,将第二历史叙述与所述第一改变相关联的所述步骤包括创建所述第二历史叙述。
62、根据权利要求60所述的方法,其中,所述第一改变是删除所述第一数据项子集。
63、根据权利要求60所述的方法,其中,所述第一改变是独立地编辑所述第一数据项子集中的各所述数据项。
64、根据权利要求60所述的方法,其中,所述多个数据项和所有相关联的历史叙述被保持在第一共同数据结构中。
65、根据权利要求64所述的方法,该方法还包括以下步骤:将来自第二共同数据结构的历史叙述同步到所述第一共同数据结构。
66、根据权利要求65所述的方法,其中,所述第一共同数据结构驻留在第一装置中,而所述第二共同数据结构驻留在第二装置中。
67、根据权利要求64所述的方法,该方法还包括以下步骤:从同步的第一共同数据结构中减除不必要的历史叙述。
68、根据权利要求67所述的方法,其中,所述减除步骤包括保持历史叙述具有以下主题状态,该主题状态是使用中的状态的后代。
69、根据权利要求66所述的方法,该方法还包括以下步骤:从同步的第一共同数据结构中减除不必要的历史叙述。
70、根据权利要求69所述的方法,其中,所述减除步骤包括保持历史叙述具有以下主题状态,该主题状态是在所述第一装置或所述第二装置上的使用中的状态的后代。
71、一种计算机可读介质,该计算机可读介质具有用于执行在权利要求1、20、42、50、62或67中的任一项中所述的方法的计算机可执行指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/883,541 | 2004-07-01 | ||
US10/883,541 US7730026B2 (en) | 2004-07-01 | 2004-07-01 | Method and system using reusable state information for synchronization and maintenance of data |
PCT/US2005/022930 WO2006007498A1 (en) | 2004-07-01 | 2005-06-27 | State based synchronization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1977265A true CN1977265A (zh) | 2007-06-06 |
CN1977265B CN1977265B (zh) | 2011-06-22 |
Family
ID=35033662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800217934A Expired - Fee Related CN1977265B (zh) | 2004-07-01 | 2005-06-27 | 基于状态的同步 |
Country Status (6)
Country | Link |
---|---|
US (3) | US7730026B2 (zh) |
EP (1) | EP1766543B1 (zh) |
JP (1) | JP4685869B2 (zh) |
CN (1) | CN1977265B (zh) |
HK (1) | HK1104099A1 (zh) |
WO (1) | WO2006007498A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010145457A1 (zh) * | 2009-06-17 | 2010-12-23 | 华为终端有限公司 | 处理数据冲突的方法、装置、网络侧服务器及终端 |
CN109992628A (zh) * | 2019-04-15 | 2019-07-09 | 深圳市腾讯计算机系统有限公司 | 数据同步的方法、装置、服务器及计算机可读存储介质 |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360100B1 (en) * | 1998-09-22 | 2002-03-19 | Qualcomm Incorporated | Method for robust handoff in wireless communication system |
US7668541B2 (en) | 2003-01-31 | 2010-02-23 | Qualcomm Incorporated | Enhanced techniques for using core based nodes for state transfer |
US6862446B2 (en) * | 2003-01-31 | 2005-03-01 | Flarion Technologies, Inc. | Methods and apparatus for the utilization of core based nodes for state transfer |
US7730026B2 (en) | 2004-07-01 | 2010-06-01 | Apple Inc. | Method and system using reusable state information for synchronization and maintenance of data |
WO2006053019A2 (en) | 2004-11-08 | 2006-05-18 | Sharpcast, Inc. | Method and apparatus for a file sharing and synchronization system |
US7680835B2 (en) * | 2005-02-28 | 2010-03-16 | Microsoft Corporation | Online storage with metadata-based retrieval |
US7979468B2 (en) * | 2005-06-14 | 2011-07-12 | Enterprise Elements, Inc. | Database data dictionary |
US8495015B2 (en) | 2005-06-21 | 2013-07-23 | Apple Inc. | Peer-to-peer syncing in a decentralized environment |
US7523146B2 (en) * | 2005-06-21 | 2009-04-21 | Apple Inc. | Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment |
US7970017B2 (en) * | 2005-07-13 | 2011-06-28 | At&T Intellectual Property I, L.P. | Peer-to-peer synchronization of data between devices |
US9066344B2 (en) * | 2005-09-19 | 2015-06-23 | Qualcomm Incorporated | State synchronization of access routers |
US8509799B2 (en) * | 2005-09-19 | 2013-08-13 | Qualcomm Incorporated | Provision of QoS treatment based upon multiple requests |
US8983468B2 (en) | 2005-12-22 | 2015-03-17 | Qualcomm Incorporated | Communications methods and apparatus using physical attachment point identifiers |
US9078084B2 (en) * | 2005-12-22 | 2015-07-07 | Qualcomm Incorporated | Method and apparatus for end node assisted neighbor discovery |
US9736752B2 (en) * | 2005-12-22 | 2017-08-15 | Qualcomm Incorporated | Communications methods and apparatus using physical attachment point identifiers which support dual communications links |
US20070064948A1 (en) * | 2005-09-19 | 2007-03-22 | George Tsirtsis | Methods and apparatus for the utilization of mobile nodes for state transfer |
US8982778B2 (en) * | 2005-09-19 | 2015-03-17 | Qualcomm Incorporated | Packet routing in a wireless communications environment |
US8982835B2 (en) * | 2005-09-19 | 2015-03-17 | Qualcomm Incorporated | Provision of a move indication to a resource requester |
TW200715108A (en) * | 2005-10-04 | 2007-04-16 | Carry Computer Eng Co Ltd | Storage apparatus and method with function of showing use history |
US9083355B2 (en) | 2006-02-24 | 2015-07-14 | Qualcomm Incorporated | Method and apparatus for end node assisted neighbor discovery |
US7725431B2 (en) * | 2006-06-30 | 2010-05-25 | Nokia Corporation | Method and apparatus for the synchronization and storage of metadata |
US7860826B2 (en) * | 2006-08-04 | 2010-12-28 | Apple Inc. | Method and system for using global equivalency sets to identify data during peer-to-peer synchronization |
US7921189B2 (en) * | 2006-11-20 | 2011-04-05 | Microsoft Corporation | Single virtual client for multiple client access and equivalency |
US7805420B2 (en) * | 2006-11-20 | 2010-09-28 | Microsoft Corporation | Versioning and concurrency control for multiple client access of data |
US7760767B2 (en) * | 2007-01-05 | 2010-07-20 | Apple Inc. | Wide area peer-to-peer synching in a decentralized environment |
US7657769B2 (en) * | 2007-01-08 | 2010-02-02 | Marcy M Scott | N-way synchronization of data |
US8949339B2 (en) * | 2007-01-08 | 2015-02-03 | Apple Inc. | System and method for automatic opportunistic data and image sharing |
US8606854B2 (en) * | 2007-01-08 | 2013-12-10 | Apple Inc. | System and method for opportunistic image sharing |
US7738503B2 (en) * | 2007-02-02 | 2010-06-15 | Palm, Inc. | Multi-way, peer-to-peer synchronization |
US7715444B2 (en) * | 2007-02-02 | 2010-05-11 | Palm, Inc | Resuming a previously interrupted peer-to-peer synchronization operation |
US9155008B2 (en) * | 2007-03-26 | 2015-10-06 | Qualcomm Incorporated | Apparatus and method of performing a handoff in a communication network |
US8830818B2 (en) * | 2007-06-07 | 2014-09-09 | Qualcomm Incorporated | Forward handover under radio link failure |
US9094173B2 (en) * | 2007-06-25 | 2015-07-28 | Qualcomm Incorporated | Recovery from handoff error due to false detection of handoff completion signal at access terminal |
US8185494B2 (en) * | 2007-09-14 | 2012-05-22 | Microsoft Corporation | Data-driven synchronization |
US9614685B2 (en) * | 2009-03-09 | 2017-04-04 | Nokia Technologies Oy | Methods, apparatuses, and computer program products for facilitating synchronization of setting configurations |
US8650498B1 (en) | 2009-05-04 | 2014-02-11 | SugarSync, Inc. | User interface for managing and viewing synchronization settings in a synchronization system |
KR101080532B1 (ko) * | 2010-01-29 | 2011-11-04 | 주식회사 팬택 | 통신단말 및 그의 데이터 전송 방법 |
WO2012001763A1 (ja) * | 2010-06-28 | 2012-01-05 | 株式会社日立製作所 | 計算機システムの管理方法及びクライアントコンピュータ |
US8615241B2 (en) | 2010-04-09 | 2013-12-24 | Qualcomm Incorporated | Methods and apparatus for facilitating robust forward handover in long term evolution (LTE) communication systems |
US8489775B2 (en) * | 2010-07-21 | 2013-07-16 | Dell Products L.P. | System-wide time synchronization across power management interfaces and sensor data |
US8996469B2 (en) * | 2010-08-30 | 2015-03-31 | Adobe Systems Incorporated | Methods and apparatus for job state tracking in cluster computing |
US8640137B1 (en) | 2010-08-30 | 2014-01-28 | Adobe Systems Incorporated | Methods and apparatus for resource management in cluster computing |
US9804889B2 (en) | 2010-08-30 | 2017-10-31 | Adobe Systems Incorporated | Methods and apparatus for state objects in cluster computing |
US8868500B2 (en) | 2011-01-14 | 2014-10-21 | Apple Inc. | Data synchronization |
US8738925B1 (en) * | 2013-01-07 | 2014-05-27 | Fitbit, Inc. | Wireless portable biometric device syncing |
US9760586B1 (en) | 2011-08-11 | 2017-09-12 | IVP Holdings III LLC | Multiple searcher use of search result snapshot histories |
US9846694B1 (en) | 2011-08-11 | 2017-12-19 | IVP Holdings III LLC | Patent related literature assisted user profiling, matching, and classification |
US9798753B1 (en) * | 2011-08-11 | 2017-10-24 | IVP Holding III, LLC | Search result snapshot histories |
US9195653B2 (en) * | 2011-10-24 | 2015-11-24 | Google Inc. | Identification of in-context resources that are not fully localized |
US8452814B1 (en) * | 2011-10-24 | 2013-05-28 | Google Inc. | Gathering context in action to support in-context localization |
US8965847B1 (en) * | 2011-10-28 | 2015-02-24 | Oxygen Cloud, Inc. | Independent synchronization of file data and file metadata |
US9031909B2 (en) | 2011-11-29 | 2015-05-12 | Microsoft Technology Licensing, Llc | Provisioning and/or synchronizing using common metadata |
KR101935357B1 (ko) * | 2012-05-21 | 2019-01-04 | 엘지전자 주식회사 | 홈 디바이스 웹 브라우저를 이용한 웹 페이지 제공 방법 및 이를 위한 홈 디바이스 |
US10057318B1 (en) | 2012-08-10 | 2018-08-21 | Dropbox, Inc. | System, method, and computer program for enabling a user to access and edit via a virtual drive objects synchronized to a plurality of synchronization clients |
US9124637B2 (en) | 2013-01-18 | 2015-09-01 | Apple Inc. | Data protection for keychain syncing |
US9197700B2 (en) * | 2013-01-18 | 2015-11-24 | Apple Inc. | Keychain syncing |
US9977820B1 (en) * | 2013-03-15 | 2018-05-22 | Tasktop Technologies, Incorporated | System and method for synchronizing states in associated data records |
US9998555B2 (en) | 2014-04-08 | 2018-06-12 | Dropbox, Inc. | Displaying presence in an application accessing shared and synchronized content |
US10270871B2 (en) | 2014-04-08 | 2019-04-23 | Dropbox, Inc. | Browser display of native application presence and interaction data |
US10091287B2 (en) | 2014-04-08 | 2018-10-02 | Dropbox, Inc. | Determining presence in an application accessing shared and synchronized content |
US10171579B2 (en) | 2014-04-08 | 2019-01-01 | Dropbox, Inc. | Managing presence among devices accessing shared and synchronized content |
US10387451B2 (en) | 2014-05-30 | 2019-08-20 | Apple Inc. | Synchronization system for multiple client devices |
US9846528B2 (en) | 2015-03-02 | 2017-12-19 | Dropbox, Inc. | Native application collaboration |
US10303697B1 (en) * | 2015-06-25 | 2019-05-28 | National Technology & Engineering Solutions Of Sandia, Llc | Temporal data system |
US20170054790A1 (en) * | 2015-08-21 | 2017-02-23 | Neatly Co. | System and Method for Object Compression and State Synchronization |
US10248933B2 (en) | 2015-12-29 | 2019-04-02 | Dropbox, Inc. | Content item activity feed for presenting events associated with content items |
US10620811B2 (en) | 2015-12-30 | 2020-04-14 | Dropbox, Inc. | Native application collaboration |
US10382502B2 (en) | 2016-04-04 | 2019-08-13 | Dropbox, Inc. | Change comments for synchronized content items |
USD796542S1 (en) | 2016-04-20 | 2017-09-05 | E*Trade Financial Corporation | Display screen with a graphical user interface |
USD795921S1 (en) * | 2016-04-20 | 2017-08-29 | E*Trade Financial Corporation | Display screen with an animated graphical user interface |
US10565168B2 (en) | 2017-05-02 | 2020-02-18 | Oxygen Cloud, Inc. | Independent synchronization with state transformation |
US10021588B1 (en) | 2017-05-04 | 2018-07-10 | Motorola Solutions, Inc. | Methods and systems for reducing inbound request traffic in a wireless network |
US10706038B2 (en) | 2017-07-27 | 2020-07-07 | Cisco Technology, Inc. | System and method for state object data store |
FR3076034B1 (fr) * | 2017-12-22 | 2022-12-02 | Oberthur Technologies | Collecte de donnees d'historique de transaction sur un terminal |
US11334596B2 (en) | 2018-04-27 | 2022-05-17 | Dropbox, Inc. | Selectively identifying and recommending digital content items for synchronization |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US602415A (en) * | 1898-04-12 | Bicycle-stand | ||
US568370A (en) * | 1896-09-29 | Electric alarm for steam-gag es | ||
US606274A (en) * | 1898-06-28 | Seed-bag holder | ||
US650215A (en) * | 1899-07-24 | 1900-05-22 | Frank T Fletcher | Wall-paper trimming and pasting machine. |
US657262A (en) * | 1899-08-29 | 1900-09-04 | George Anderson | Method of setting diamonds, &c., in metal holders. |
US4792909A (en) | 1986-04-07 | 1988-12-20 | Xerox Corporation | Boolean logic layout generator |
US5287496A (en) | 1991-02-25 | 1994-02-15 | International Business Machines Corporation | Dynamic, finite versioning for concurrent transaction and query processing |
US5481721A (en) | 1991-07-17 | 1996-01-02 | Next Computer, Inc. | Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects |
US5355483A (en) | 1991-07-18 | 1994-10-11 | Next Computers | Asynchronous garbage collection |
DE69225544T2 (de) | 1991-08-13 | 1998-12-03 | Xerox Corp | Elektronische Bilderzeugung |
US5710922A (en) | 1993-06-02 | 1998-01-20 | Apple Computer, Inc. | Method for synchronizing and archiving information between computer systems |
US5806078A (en) | 1994-06-09 | 1998-09-08 | Softool Corporation | Version management system |
AUPM704194A0 (en) | 1994-07-25 | 1994-08-18 | Canon Information Systems Research Australia Pty Ltd | Efficient methods for the evaluation of a graphical programming language |
US5687370A (en) | 1995-01-31 | 1997-11-11 | Next Software, Inc. | Transparent local and distributed memory management system |
US6571262B2 (en) | 2000-02-14 | 2003-05-27 | Apple Computer, Inc. | Transparent local and distributed memory management system |
US5706509A (en) * | 1995-04-28 | 1998-01-06 | Intel Corporation | Application independent record level synchronization |
WO1997004389A1 (en) * | 1995-07-20 | 1997-02-06 | Novell, Inc. | Transaction synchronization in a disconnectable computer and network |
US5710900A (en) | 1995-10-12 | 1998-01-20 | Ncr Corporation | System and method for generating reports from a computer database |
US5884323A (en) | 1995-10-13 | 1999-03-16 | 3Com Corporation | Extendible method and apparatus for synchronizing files on two different computer systems |
US5727202A (en) | 1995-10-18 | 1998-03-10 | Palm Computing, Inc. | Method and apparatus for synchronizing information on two different computer systems |
US5765171A (en) | 1995-12-29 | 1998-06-09 | Lucent Technologies Inc. | Maintaining consistency of database replicas |
US5758358A (en) | 1996-01-29 | 1998-05-26 | Microsoft Corporation | Method and system for reconciling sections of documents |
US6006231A (en) | 1996-09-10 | 1999-12-21 | Warp 10 Technologies Inc. | File format for an image including multiple versions of an image, and related system and method |
US6044381A (en) * | 1997-09-11 | 2000-03-28 | Puma Technology, Inc. | Using distributed history files in synchronizing databases |
AU5254698A (en) * | 1996-11-13 | 1998-06-03 | Puma Technology, Inc. | Synchronization of databases |
JPH10161916A (ja) | 1996-11-28 | 1998-06-19 | Hitachi Ltd | データベースの複製に伴う更新競合の検出方法 |
US6401112B1 (en) | 1997-01-29 | 2002-06-04 | Palm, Inc. | Method and apparatus for synchronizing an Email client on a portable computer system with an Email client on a desktop computer |
US6006274A (en) | 1997-01-30 | 1999-12-21 | 3Com Corporation | Method and apparatus using a pass through personal computer connected to both a local communication link and a computer network for indentifying and synchronizing a preferred computer with a portable computer |
US6021413A (en) | 1997-04-01 | 2000-02-01 | The University Of Illinois Board Of Trustees | Application-directed variable-granularity caching and consistency management |
WO1998045815A1 (en) | 1997-04-04 | 1998-10-15 | Intergraph Corporation | Apparatus and method for applying effects to graphical images |
US6188995B1 (en) | 1997-07-28 | 2001-02-13 | Apple Computer, Inc. | Method and apparatus for enforcing software licenses |
US6240414B1 (en) * | 1997-09-28 | 2001-05-29 | Eisolutions, Inc. | Method of resolving data conflicts in a shared data environment |
US6272558B1 (en) | 1997-10-06 | 2001-08-07 | Canon Kabushiki Kaisha | Application programming interface for manipulating flashpix files |
US6292803B1 (en) * | 1997-11-18 | 2001-09-18 | Honeywell International Inc. | Object state change and history management mechanism |
US6275831B1 (en) * | 1997-12-16 | 2001-08-14 | Starfish Software, Inc. | Data processing environment with methods providing contemporaneous synchronization of two or more clients |
US6295541B1 (en) | 1997-12-16 | 2001-09-25 | Starfish Software, Inc. | System and methods for synchronizing two or more datasets |
US6205448B1 (en) | 1998-01-30 | 2001-03-20 | 3Com Corporation | Method and apparatus of synchronizing two computer systems supporting multiple synchronization techniques |
US6925477B1 (en) * | 1998-03-31 | 2005-08-02 | Intellisync Corporation | Transferring records between two databases |
US6098079A (en) | 1998-04-02 | 2000-08-01 | Mitsubishi Electric Information Technology Center America, Inc. (Ita) | File version reconciliation using hash codes |
US6317754B1 (en) * | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
JP3004008B1 (ja) | 1998-10-20 | 2000-01-31 | 三菱電機株式会社 | 更新履歴管理装置及び更新履歴管理方法 |
US6516327B1 (en) | 1998-12-24 | 2003-02-04 | International Business Machines Corporation | System and method for synchronizing data in multiple databases |
US6757896B1 (en) | 1999-01-29 | 2004-06-29 | International Business Machines Corporation | Method and apparatus for enabling partial replication of object stores |
US6457062B1 (en) | 1999-04-08 | 2002-09-24 | Palm, Inc. | System and method for synchronizing multiple calendars over wide area network |
US6553037B1 (en) | 1999-04-08 | 2003-04-22 | Palm, Inc. | System and method for synchronizing data among a plurality of users via an intermittently accessed network |
US6308201B1 (en) | 1999-04-08 | 2001-10-23 | Palm, Inc. | System and method for sharing data among a plurality of personal digital assistants |
JP3254434B2 (ja) | 1999-04-13 | 2002-02-04 | 三菱電機株式会社 | データ通信装置 |
US6539381B1 (en) * | 1999-04-21 | 2003-03-25 | Novell, Inc. | System and method for synchronizing database information |
US6360272B1 (en) | 1999-05-28 | 2002-03-19 | Palm, Inc. | Method and apparatus for maintaining a unified view of multiple mailboxes |
US6401104B1 (en) * | 1999-07-03 | 2002-06-04 | Starfish Software, Inc. | System and methods for synchronizing datasets using cooperation among multiple synchronization engines |
US6859821B1 (en) | 1999-07-19 | 2005-02-22 | Groove Networks, Inc. | Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration |
US6717599B1 (en) | 2000-06-29 | 2004-04-06 | Microsoft Corporation | Method, system, and computer program product for implementing derivative operators with graphics hardware |
JP3750504B2 (ja) * | 2000-08-09 | 2006-03-01 | セイコーエプソン株式会社 | データ更新方法および情報処理装置 |
US7216289B2 (en) * | 2001-03-16 | 2007-05-08 | Microsoft Corporation | Method and apparatus for synchronizing multiple versions of digital data |
US6894093B2 (en) | 2001-05-10 | 2005-05-17 | George D. Bittner | Materials free of endorine disruptive chemicals |
JP2003006020A (ja) * | 2001-06-26 | 2003-01-10 | Hitachi Ltd | 複製データベースアクセス装置とそのアクセス方法 |
US7564460B2 (en) | 2001-07-16 | 2009-07-21 | Microsoft Corporation | Systems and methods for providing intermediate targets in a graphics system |
JP4204977B2 (ja) * | 2001-10-22 | 2009-01-07 | アップル インコーポレイテッド | メディアプレーヤーのためのインテリジェントなシンクロ操作 |
US7149761B2 (en) * | 2001-11-13 | 2006-12-12 | Tadpole Technology Plc | System and method for managing the synchronization of replicated version-managed databases |
US7085784B2 (en) * | 2002-01-10 | 2006-08-01 | International Business Machines Corporation | System and method for eliminating duplicate copies of activity history logs in bridging two or more backend database systems |
US20030161004A1 (en) * | 2002-02-28 | 2003-08-28 | Fernando Bolanos | Merging control panel images |
US7606881B2 (en) | 2002-04-25 | 2009-10-20 | Oracle International Corporation | System and method for synchronization of version annotated objects |
JP3888532B2 (ja) * | 2002-05-14 | 2007-03-07 | ソニー株式会社 | コンテンツ再生機器、サーバ接続方法、サーバ接続プログラムおよび記録媒体 |
JP2004086800A (ja) | 2002-08-29 | 2004-03-18 | Mitsubishi Electric Corp | データ同期システムおよびデータ同期方法 |
US7506007B2 (en) | 2003-03-03 | 2009-03-17 | Microsoft Corporation | Interval vector based knowledge synchronization for resource versioning |
US7290019B2 (en) | 2003-03-03 | 2007-10-30 | Microsoft Corporation | Garbage collection of tombstones for optimistic replication systems |
US7181521B2 (en) * | 2003-03-21 | 2007-02-20 | Intel Corporation | Method and system for selecting a local registry master from among networked mobile devices based at least in part on abilities of the mobile devices |
US20040193952A1 (en) * | 2003-03-27 | 2004-09-30 | Charumathy Narayanan | Consistency unit replication in application-defined systems |
US7406499B2 (en) | 2003-05-09 | 2008-07-29 | Microsoft Corporation | Architecture for partition computation and propagation of changes in data replication |
US7610387B1 (en) | 2003-11-12 | 2009-10-27 | Cisco Technology, Inc. | Method and apparatus for providing sticky bindings using version vectors |
FI20040697A (fi) | 2004-05-19 | 2005-11-20 | Nokia Corp | Menetelmä, laite ja ohjelmisto kannettavien laitteiden tietojen päivittämiseksi |
US7814231B2 (en) | 2004-05-24 | 2010-10-12 | Apple Inc. | Method of synchronizing between three or more devices |
US7809682B2 (en) * | 2004-05-24 | 2010-10-05 | Apple Inc. | Data synchronization between multiple devices |
US7680834B1 (en) * | 2004-06-08 | 2010-03-16 | Bakbone Software, Inc. | Method and system for no downtime resychronization for real-time, continuous data protection |
US7730026B2 (en) | 2004-07-01 | 2010-06-01 | Apple Inc. | Method and system using reusable state information for synchronization and maintenance of data |
US7728823B2 (en) | 2004-09-24 | 2010-06-01 | Apple Inc. | System and method for processing raw data of track pad device |
US7778963B2 (en) | 2005-04-26 | 2010-08-17 | Microsoft Corporation | Constraint-based conflict handling for synchronization |
US7523146B2 (en) | 2005-06-21 | 2009-04-21 | Apple Inc. | Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment |
US20080005195A1 (en) | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Versioning synchronization for mass p2p file sharing |
US7917471B2 (en) | 2006-07-14 | 2011-03-29 | Nokia Corporation | Method for obtaining information objects in a communication system |
US7860826B2 (en) | 2006-08-04 | 2010-12-28 | Apple Inc. | Method and system for using global equivalency sets to identify data during peer-to-peer synchronization |
US7760767B2 (en) | 2007-01-05 | 2010-07-20 | Apple Inc. | Wide area peer-to-peer synching in a decentralized environment |
US7657769B2 (en) | 2007-01-08 | 2010-02-02 | Marcy M Scott | N-way synchronization of data |
-
2004
- 2004-07-01 US US10/883,541 patent/US7730026B2/en active Active
-
2005
- 2005-06-27 EP EP05775809.6A patent/EP1766543B1/en not_active Not-in-force
- 2005-06-27 WO PCT/US2005/022930 patent/WO2006007498A1/en active Application Filing
- 2005-06-27 JP JP2007520350A patent/JP4685869B2/ja active Active
- 2005-06-27 CN CN2005800217934A patent/CN1977265B/zh not_active Expired - Fee Related
-
2007
- 2007-08-06 HK HK07108543.8A patent/HK1104099A1/zh not_active IP Right Cessation
-
2010
- 2010-04-13 US US12/759,463 patent/US8332352B2/en not_active Expired - Lifetime
-
2012
- 2012-11-19 US US13/680,467 patent/US8868493B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010145457A1 (zh) * | 2009-06-17 | 2010-12-23 | 华为终端有限公司 | 处理数据冲突的方法、装置、网络侧服务器及终端 |
CN109992628A (zh) * | 2019-04-15 | 2019-07-09 | 深圳市腾讯计算机系统有限公司 | 数据同步的方法、装置、服务器及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20130218839A1 (en) | 2013-08-22 |
US7730026B2 (en) | 2010-06-01 |
US20060069809A1 (en) | 2006-03-30 |
HK1104099A1 (zh) | 2008-01-04 |
US8332352B2 (en) | 2012-12-11 |
JP4685869B2 (ja) | 2011-05-18 |
US20100198784A1 (en) | 2010-08-05 |
US8868493B2 (en) | 2014-10-21 |
EP1766543A1 (en) | 2007-03-28 |
JP2008505419A (ja) | 2008-02-21 |
EP1766543B1 (en) | 2015-12-30 |
CN1977265B (zh) | 2011-06-22 |
WO2006007498A1 (en) | 2006-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1977265A (zh) | 基于状态的同步 | |
US8775426B2 (en) | Interface to navigate and search a concept hierarchy | |
RU2417401C2 (ru) | Пользовательский интерфейс переноса и фиксации по новому месту с широкими возможностями | |
CN1231843C (zh) | 信息处理装置 | |
CN1276375C (zh) | 用于显示和选择层次数据库段和字段的系统和方法 | |
CN1641645B (zh) | 用于控制可视结果集合的系统和方法 | |
US7882122B2 (en) | Remote access of heterogeneous data | |
CN1299223C (zh) | 提供关系数据的一致性层次抽象化 | |
EP2144177B1 (en) | System and method for a log-based data storage | |
CN102819585B (zh) | 一种xml数据库文档控制方法 | |
CN1577287A (zh) | 与物理存储表示无关地同步逻辑视图 | |
CN1806241A (zh) | 数据库查询用户界面 | |
CN1855009A (zh) | 可搜索控制模板功能的基于任务的界面 | |
CN1910579A (zh) | 在文件系统保持活动状态的同时转换文件系统的方法 | |
CN1811765A (zh) | 文字处理应用程序中的数据绑定 | |
CN1113396A (zh) | 储存器目标系统 | |
CN1961313A (zh) | 用于索引文件并将相关元数据添加到索引和元数据数据库的方法和系统 | |
CN1713180A (zh) | 结合多维表达式和数据挖掘扩展来挖掘olap立方体 | |
CN1110067A (zh) | 面向目标的网络资源电话簿 | |
CN1841379A (zh) | 将文件系统模型映射到数据库对象 | |
CN1410914A (zh) | 自动创建上下文信息提供配置的系统 | |
AU2006226957A1 (en) | Modular applications for mobile data system | |
CN1653448A (zh) | 搜索数据源的系统和方法 | |
CN1758252A (zh) | 自动视图选择 | |
CN1742271A (zh) | 使用静态列表管理数据的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110622 |
|
CF01 | Termination of patent right due to non-payment of annual fee |