CN103299602A - 数据同步 - Google Patents

数据同步 Download PDF

Info

Publication number
CN103299602A
CN103299602A CN201280005184XA CN201280005184A CN103299602A CN 103299602 A CN103299602 A CN 103299602A CN 201280005184X A CN201280005184X A CN 201280005184XA CN 201280005184 A CN201280005184 A CN 201280005184A CN 103299602 A CN103299602 A CN 103299602A
Authority
CN
China
Prior art keywords
equipment
data
data item
version
sign
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
CN201280005184XA
Other languages
English (en)
Other versions
CN103299602B (zh
Inventor
D·B·加姆帕罗
J-G·莫拉尔德
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN103299602A publication Critical patent/CN103299602A/zh
Application granted granted Critical
Publication of CN103299602B publication Critical patent/CN103299602B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/273Asynchronous replication or reconciliation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据同步。用于数据同步的方法、系统和设备,包括编码在计算机存储介质上的计算机程序。一般而言,在本说明书中所描述的主题的一个方面可以下列方法来实现,所述方法包括:从一对设备中的第一设备接收知识矢量,所述知识矢量标识数据项以及对等设备已知的数据项最新改变;在该对设备中的第二设备处,将所接收到的知识矢量与所述第一设备未知的改变的本地知识矢量进行比较;以及向所述第一设备发送改变列表。

Description

数据同步
技术领域
本申请涉及数据同步。
背景技术
用户可以在设备之间传输数据。通常,用户通过文件传输或共享与其他人共享数据。例如,用户可以标识例如通过电子邮件或使用文件传输协议发送到其他人的特定文件。文件共享允许例如网络上的其他用户访问文件,然而文件通常仍在它们的原始位置。可另选地,文件可以由其他人从它们的原始存储位置签出,但是通常可以修改该文件的唯一用户是将该文件签出的那个人。
常规系统还允许用户在用户的设备(例如,膝上型计算机和移动设备)之间同步数据。通常,只有特定类型的数据在设备之间同步,或同步必须由用户启动。
发明内容
本说明书描述了涉及数据同步的技术。
一般而言,在本说明书中所描述的主题的一个方面可以下列方法来实现,所述方法包括:从一对设备中的第一设备接收知识矢量,所述知识矢量标识数据项以及对等设备已知的数据项的最新改变;在该对设备中的第二设备处,将所接收到的知识矢量与所述第一设备未知的改变的本地知识矢量进行比较;以及向所述第一设备发送改变列表。此方面的其他实施例包括对应的系统、设备、以及记录在计算机存储设备上的计算机程序,每一个都被配置成执行所述方法的操作。
这些及其他实施例中每一个都可以可任选地包括下列特征中的一个或多个。所述方法还包括接收来自所述第一设备的针对对应于所述改变列表中的一个或多个相应的改变的一个或多个数据项的请求;以及发送所请求的数据项。所述知识矢量包括本地顺序。所述知识矢量具有标识所述数据项的简洁表示以及所述第一设备已知的最新改变标识符。每当所述数据项被在其中同步所述数据项的多个设备中的一个设备修改时,就递增数据项的改变标识符。该对设备之间的同步由所述对中具有最低设备标识符的第一设备启动。
一般而言,在本说明书中所描述的主题的一个方面可以下列方法来实现,所述方法包括:标识要从第一设备同步的数据项的第一版本;标识要从第二设备同步的所述数据项的第二版本;确定在所述第一版本和所述第二版本之间是否有冲突;如果有冲突,则自动地解决所述冲突,包括选择冲突获胜者并存储冲突失败者的副本。此方面的其他实施例包括对应的系统、设备、以及记录在计算机存储设备上的计算机程序,每一个都被配置成执行所述方法的操作。
这些及其他实施例中每一个都可以可任选地包括下列特征中的一个或多个。确定是否有冲突还包括:标识所述数据项的所述第一版本和所述数据项的所述第二版本中的每一个版本的改变标识符;以及使用相应的改变标识符来确定在指定阈值内的每一个版本之间的创建时间。自动地解决所述冲突还包括:标识所述第一设备和所述第二设备中的每一个设备的设备标识符;以及以有利于与最低设备标识符相关联的数据项的版本的方式来解决所述冲突。
一般而言,在本说明书中所描述的主题的一个方面可以下列方法来实现,所述方法包括:标识多个设备,所述多个设备中的每一个设备都具有唯一数值标识符;形成所述多个设备的逻辑布局,使得对等设备根据相应的数值标识符按数值次序来排列;以及根据所述逻辑布局,在相邻的设备对之间同步数据。此方面的其他实施例包括对应的系统、设备、以及记录在计算机存储设备上的计算机程序,每一个都被配置成执行所述方法的操作。
这些及其他实施例中每一个都可以可任选地包括下列特征中的一个或多个。具有最低数值标识符的设备被视为与具有最高数值标识符的设备相邻。对于一对设备,由具有最低数值标识符的设备启动同步。
一般而言,在本说明书中所描述的主题的一个方面可以下列方法来实现,所述方法包括:标识与主要标识相关联的多个设备;标识与一个或多个次要标识相关联的一个或多个设备;将第一组数据与和所述主要标识相关联的所述多个设备中的每一个设备同步;以及将用户指定的第二组数据与和所述次要标识相关联的所述一个或多个设备中的每一个设备同步。此方面的其他实施例包括对应的系统、设备、以及记录在计算机存储设备上的计算机程序,每一个都被配置成执行方法的操作。
这些及其他实施例中每一个都可以可任选地包括下列特征中的一个或多个。所述第一组数据是第一用户指定的数据集合,以及所述第二组数据是不同的第二用户指定的数据集合。
在本说明书中所描述的主题的特定实施例可以被实现为以便实现下列优点中的一个或多个。当发生改变时,可以逐渐失去(trickledout)数据同步。同步可以在单个标识的设备(例如,用户的设备)之间以及在多个标识之间发生(例如,特定数据与其他用户的同步)。同步可以最初标识要被同步的数据项,这可以实际在稍后或按需同步,降低了网络数据业务量。设备之间的同步可以排序,以减少网络通信。冲突解决可以自动地执行,无需用户输入,同时允许存储冲突失败者,供用户稍后检索。
在附图和描述中阐述了在本说明书中所描述的主题的一个或多个实施例的详细信息。通过描述和附图以及权利要求,主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是示出了标识内以及标识之间同步的示例的图。
图2是示出了用于数据同步的示例设备圈的图。
图3是示出了一对设备之间的数据同步的示例的数据流程图。
图4是用于启动与另一设备的同步的示例过程的流程图。
图5是用于对同步请求作出响应的示例过程的流程图。
图6是用于在同步过程中进行冲突解决的示例过程的流程图。
图7示出了示例系统体系结构。
各种附图中的类似附图标记以及名称表示类似元件。
具体实施方式
数据可以在与相同用户标识相关联的设备(例如,在用户的膝上型计算机和移动电话)之间以及在与不同标识相关联的设备(例如,在不同的用户之间共享的同步的数据)之间同步。
在其之间同步数据的一组设备可以在逻辑上根据设备标识符值的顺序排列为一圈。数据可以在逻辑圈中的设备对之间同步。这会降低由每个设备都试图分别地与每一个其他设备同步所产生的数据业务量。另外,同步信息还可以使用改变标识符的简洁表示,例如,作为改变矢量来传输。如此,只有表示数据项的最新版本的标识符才需要传输以便于同步,而并非所有版本,这降低了同步过程中的网络业务量。
正在被同步的数据项的两个版本可以具有阈值时间内的创建时间。这会导致在数据项的两个版本之间产生冲突。基于与相应的版本相关联的设备标识符来自动地解决冲突。可以存储冲突失败者,使得在其被请求时可以对其检索。
图1是示出了标识内以及标识之间同步的示例的图100。图100示出了与第一标识106相关联的设备102和设备104,以及与第二标识112相关联的设备108和设备110。设备可包括例如台式或膝上型计算设备、移动设备、平板设备、个人数据助理、或其他计算设备。
设备102包括默认同步的数据114、其他同步的数据116、以及共享同步的数据118。默认同步的数据114可包括默认地在相同标识的设备之间同步的数据(例如,电子邮件)。其他同步的数据116可包括用户指定用于在与用户的标识相关联的设备之间同步的另外的数据(例如,音乐)。在某些实现中,用户指定与其他用户设备共享的数据集合。该集合可以在逻辑上表示为共享文件夹,或表示为指定为属于该集合的单个数据项。
共享同步的数据118包括由用户所标识的用于与和其他标识相关联的设备共享的数据。具体而言,用户可以指定与其同步共享数据的特定标识以及特定数据(例如,将来自第一标识106的图像与第二标识112同步)。在某些实现中,可以为不同的标识指定不同的共享数据。例如,用户可以与两个标识共享图像,但是单独地与单一标识共享视频。共享同步的数据118可默认地包括某些、所有数据或不包括任何数据,及其他同步的数据114和116。在某些实现中,用户指定与特定标识共享的数据集合。该集合可以在逻辑上表示为共享文件夹,或表示为指定为属于该集合的单个数据项。
设备104类似地包括默认同步的数据120,其他同步的数据122,以及共享同步的数据124。设备102和设备104与相同标识相关联。因此,设备102和设备104之间的同步用来同步所有这些数据(默认、其他同步的、以及共享的)。
设备108类似地包括默认同步的数据126,其他同步的数据128,以及共享同步的数据130。设备110包括默认同步的数据132,其他同步的数据134,以及共享同步的数据136。设备102和设备104与相同标识(即,第一标识106)相关联。因此,设备102和设备104之间的同步用来同步所有数据(默认、其他同步的,以及共享的)。
共享项目的同步可以在每一个相应的标识的一个或多个设备之间发生。具体而言,如图1所示,第一标识106的共享同步的数据124与第二标识112的设备108的共享同步的数据130同步。由于共享数据在与相同标识相关联的设备之间(例如,在设备102和104之间)同步,因此与第一标识106相关联的设备中的任何一个都可以与第二标识112同步。如此,数据可以在相同标识的设备(例如,设备104和106)之间以及在不同的标识的设备(例如,设备106和108)之间同步。在某些实现中,标识之间的同步在相同指定的设备之间发生。例如,在第一标识106和第二标识112之间的同步可以始终在设备104和设备108之间发生。
图2是示出了用于数据同步的示例设备圈200的图。设备圈200示出了在逻辑上排列成一圈或一个圆环的8个设备202a-h。物理布局和位置不与逻辑布局关联。设备202a-h中的每一个都是在其之间同步数据的设备。它可包括相同标识或不同标识内的设备。设备202a-h可以例如使用一个或多个网络与其他设备进行通信。
逻辑圈布局可以按照设备标识符来对设备进行排序。具体而言,每一个设备202a-h都具有唯一设备标识符值。每一个设备都具有唯一标识符值(例如,设备ID)。每一个设备都还可以具有向该设备与之同步的其他设备给予标识符的别名列表。别名可以是实际设备标识符(例如,从其他设备接收到的),或者也可以是由设备指定的供本地使用的,同时例如维护到实际设备标识符的映射。如此,在示例的设备圈200中,第一设备202a具有最低的设备标识符编号。设备按照增大的设备号排序,直到具有最高设备标识符编号的第八设备202h。圈布局具有带有最低设备号的设备与具有最高设备号的设备相邻。
数据同步在相邻的设备之间执行。例如,设备202c与设备202b和202d同步。类似地,设备202d与设备202c和202e同步。
设备不直接与圈中的不相邻的任何设备同步。如此,设备202b不直接与设备202f同步。然而,尽管设备对之间同步,但是所有数据都与设备圈200中的所有设备同步。尽管同步时可能会有某些延迟,但是网络业务量大大地降低。
在某些实现中,对于设备圈200中的一对设备之间的数据同步,一个设备被视为服务器,另一个设备被视为客户端。例如,具有最低设备标识符的设备可以被视为服务器,并启动与具有较低设备标识符的设备的同步。一旦“服务器”接收到任何请求的同步数据,角色就颠倒,使得该对的另一个设备也同步。
在图2所示出的示例设备圈中,设备202b和202c之间的同步由设备202b启动,因为它具有较低设备标识符。然而,设备202c在设备202c和202d之间启动同步,因为设备202c当时具有较低设备标识符。
设备202a和设备202h之间的同步由具有最低设备标识符的设备202a启动(因为设备202h具有最高设备标识符)。如此,设备202a在设备202b和202h之间启动同步。
图3是示出了一对设备之间的数据同步的示例的数据流程图300。具体而言,流程图300示出了由第一设备302启动的第一设备302(设备A)和第二设备304(设备B)之间的同步(例如,因为第一设备302具有较低设备标识符)。
第一设备302向第二设备发送(310)改变知识和本地顺序。知识标识第一设备已知的数据项的改变标识符的列表,本地顺序指示最后一次同步发生的时间。
改变知识可以通过矢量来表示。矢量可包括设备已知的每一个数据项的最新改变标识符。具体而言,每一个数据项(例如,文件)都具有项目标识符。项目标识符标识创建项目以及项目标识符的设备。在某些实现中,项目标识符是64比特项目标识符,包括16比特创建者标识符(例如,标识哪一个设备创建了数据项)和48比特项目标识符。这些标识符可以是例如十六进制值。为了方便起见,这在说明书中将以形式[A:101]来表示,指示数据项101是由设备A创建的。
当数据项由设备改变时,生成改变标识符。例如,用户可以修改文档以形成新版本。具体而言,改变标识符标识作出改变的设备以及该改变的改变标识符。在某些实现中,改变标识符通过包括16比特设备标识符(例如,哪一个设备改变了数据项)的64比特改变标识符和48比特改变标识符来表示。这些标识符可以是例如十六进制值。为了方便起见,设备和改变标识符的组合将以形式<[A:101],[B:127]>来表示,指示由设备A所创建的数据项101与由设备B作出的改变127相关联(例如,表示数据项101的特定版本)。
每当改变数据项时,增大的改变标识符与数据项相关联。数据项可以由多个设备多次改变。如此,随着时间的推移,数据项(例如,[A:101])可以与下列改变相关联:[A:112]、[B:120]、[C:137]、[B:140]和[B:141],表示由彼此同步的设备A、B以及C所生成的原始数据项[A:101]的五个不同的版本。
由于数据项在各设备之间同步,因此改变有可能由两个不同的设备在足够近几乎是同时作出,以致于由一个设备作出的改变在另一个设备作出改变之前还没有同步。使用冲突解决过程来标识要同步的数据项的各个版本。下面参考图5更详细地描述此冲突解决过程。
特定设备的改变知识可以通过数据项的改变矢量来表示。矢量只包括设备已知的最新改变(即,第一设备302已知的数据项的最新版本)。如此,并非所有改变的项目标识符(数据项的各个版本)都需要通过改变知识来提供,只是最新的改变需要,使得可以在各设备之间确定每一个数据项的最近版本。
由设备在同步过程中所发送的改变知识矢量(312)是一组项目标识符和该项的最新改变标识符。例如:
<[A:101],[A:127]><[A:103],[B:152]><[B:202],[C:321]>
此示例知识矢量包括三个数据项:[A:101]、[A:103]和[B:202],以及这些数据项中的每一个的相应的最后看见的改变。例如,数据项[A:103]具有改变标识符[B:152],指示由设备“看到”的最后一次改变(例如,来自以前的同步)是由设备B作出的改变152。
当由第二设备304接收到改变知识矢量和本地顺序时,第二设备304将改变知识与本地知识进行比较(314)。具体而言,第二设备304上的数据库可以存储第二设备304已知的项目标识符和改变标识符。对于在改变矢量中标识的每一个改变,第二设备304将改变标识符与该数据项的已知改变标识符进行比较,以确定是否有稍晚的改变可用。可另选地,第二设备304可包括标识全部项的知识矢量和第二设备304已知的改变标识符。
例如,第二设备304可以具有知识:
<[A:101],[A:127]><[A:103],[C:164]><[B:202],[C:335]><[B:206][B:102]>
通过基于各项的改变标识符,将此知识与接收到的改变知识矢量进行比较,第二设备304确定项[A:101]未改变,项[A:103]和[B:202]的更高版本对第二设备304已知。例如,第二设备304已知的项的改变标识符高于从第一设备302接收到的改变标识符。另外,第二设备304知道第一设备302未知的项[B:206]。例如,数据项[B:206]可能是由第二设备304(设备B)最近创建的,以致于它还没有与第一设备302同步。
第二设备304基于比较,生成(316)数据项的改变列表。然后,第二设备304向第一设备302发送(318)改变列表,作为改变元数据(320)。改变元数据标识哪些数据项具有更高版本或对第一设备302来说是未知的。改变元数据可包括项以及未知项/改变的改变标识符。由于第一数据项[A:101]未改变,因此关于该数据项,无信息需要返回。
第一设备302确定(322)是否请求改变元数据中所标识的数据中的任何数据。在某些实现中,第一设备302请求(324)与一个或多个所标识的改变相关联的数据。在某些实现中,请求与改变元数据相关联的所有改变数据(例如,数据项的稍后版本)。在某些其他实现中,请求某些数据,而不请求其它的数据。例如,改变元数据可包括标识要被传输的数据的大小的额外信息。大数据传输可以被延迟到稍晚的时间(例如,当网络利用率较低时,例如在晚上)。如此,整个知识被同步,尽管基础数据可能不被同步。
在某些实现中,传输被推迟,使得第一设备302可以从不同的设备检索相同数据。例如,第一设备与其同步的另一设备可以具有到第一设备302的较快的连接(例如,Wi-Fi或有线网络连接)。第一设备302可以从较快的设备检索此数据。在某些实现中,使用与被用来发送改变知识的协议不同的协议来从所标识的数据项传输数据。
在某些其他实现中,只在接收到来自第一设备302的用户的请求时请求数据。例如,请求访问数据项[A:103]的用户可以使第一设备302从第二设备304或从具有数据的另一个设备检索当前版本,例如[A:103]、C:164]。
对于要被传输到第一设备302的任何数据,请求被发送到第二设备304。第二设备304标识(326)与请求相关联的数据。在某些实现中,对应于请求的整个数据项被发送到第一设备302。在某些替换的实现中,只发送由第一设备从数据项的最后一个已知版本改变的数据项的某些部分。例如,在设备之间中转和存储过程中,数据项可以被拆分成多个块。所使用的分块技术可以最小化在各版本之间改变的块的数量。结果,只有那些新的或改变的块才需要传输到具有未改变的块的第一设备302。所标识的数据被发送(328)到第一设备302。在某些实现中,使用与用来在各设备之间执行知识的同步的协议不同的协议来执行对于数据和数据传输的特定请求。
图4是用于启动与另一设备的同步的示例过程400的流程图。过程400可以例如由从另一设备请求同步的用户设备来执行。
启动(402)同步。具体而言,第一设备可以启动与另一设备的同步。另一个设备可以与单一标识或与另一个标识相关联。在某些实现中,同步由设备基于相对于被同步到的设备的设备标识符来启动。例如,启动同步的设备可以具有较低的设备标识符。在某些实现中,设备只启动与具有次最高(或最低)设备标识符的设备的同步过程。在某些其他实现中,在与具有较低设备标识符的设备同步之后,设备作为返回同步来启动同步。
由设备(404)发送改变知识。在某些实现中,改变知识可以通过改变知识矢量来表示。矢量可包括设备已知的数据项的改变标识符。具体而言,改变标识符可只包括设备已知的项的最高改变标识,使得可以生成和传输改变知识的简洁表示。在某些实现中,本地顺序也作为改变知识的一部分来发送。
接收一个或多个项相对于改变知识的改变(406)。可以作为标识哪些数据项具有较新的改变标识符或设备未知的新的数据项的元数据传输的一部分来接收改变。
可任选地请求与接收到的改变相关联的数据(408)。设备可以请求与接收到的改变相关联的数据中的某些、全部数据、或不请求数据。与接收到的改变相关联的数据可包括数据项的整个版本或数据项的改变的一部分(例如,数据项的改变的或新的块)。可另选地,设备可以在稍后的时间从相同或不同的设备请求数据(例如,响应于对于有其新版本可用的数据项的用户请求)。
图5是用于对同步请求作出响应的示例过程500的流程图。过程500可以例如由从另一设备接收同步请求的用户设备来执行。
从设备接收改变知识(502)。例如,启动同步的另一设备可以向设备发送改变知识。如上文所描述的,可以作为改变知识矢量来发送改变知识。
将接收到的改变知识与本地知识进行比较(504)。具体而言,设备具有标识设备已知的全部改变标识符以及同步的数据项的知识(例如,由设备创建的以及从以前的同步接收到的)。在某些实现中,这被保存为设备的知识矢量。在某些其他实现中,这被保存在可搜索的数据库中。将项和改变标识符与本地知识进行比较,以标识对具有较高改变标识符值(指示数据项的更高版本)的项的改变。另外,将项目标识符进行比较,以标识对请求设备未知的新创建的项。
生成改变的列表(506)。例如,改变的列表可包括最近的或对请求设备未知的项和改变标识符值的列表。改变列表被发送到请求设备(508)。
可任选地接收对与标识的改变相关联的数据的请求,并发送所请求的数据(510)。请求设备可以在接收到与改变列表相关联的数据的改变列表之后发送随后的请求。数据可以是完整的数据项(例如,对于请求设备未知的新的数据项)或只是反映改变的数据项的某些部分(例如,相对于请求设备已经拥有的数据项的块已改变的数据项的特定块)。在某些实现中,使用与同步请求和改变列表传输不同的协议来执行请求和传输数据。
图6是用于在同步过程中进行冲突解决的示例过程600的流程图。过程600可以例如由从另一设备请求同步的用户设备来执行。
从一对数据项版本中标识数据项的最新版本(602)。具体而言,被同步的一对设备的每一个设备都具有相同的数据项版本。可以使用相应的项的改变标识符来确定该对中的哪一个项是最新的。具体而言,由于改变标识符基于来自以前同步的所有以前版本的知识,随着每一个新版本递增,因此可以根据最高改变标识符值来标识数据项的最新版本。
如果在指定的阈值时间内产生数据项版本,则标识冲突(604)。尽管一个数据项具有高于其他数据项的改变标识符,但是两个之间的区别可以在阈值量内。例如,阈值时间可以是一秒,意味着在一秒内,在相应设备上创建两个版本。当标识冲突时,确定要被同步的数据项的版本。
标识与每一个版本相关联的设备标识符(606)。每一个设备都具有如上文所描述的特定设备标识符。此设备标识符可以在设备作出导致数据项的新版本的修改时,被包括在改变标识符中。
基于相应的设备标识符,自动地选择冲突获胜者(608)。具体而言,比较设备标识符。在某些实现中,选择来自具有最低设备标识符的设备的数据项版本作为冲突获胜者。可另选地,可以使用最高设备标识符。
存储冲突失败者(610)。具体而言,冲突失败者可以被保存为数据项的一个版本。包括冲突失败者的旧版本可以存储在其中生成该版本的特定设备中,可以在所有设备之间同步,和/或可以存储在一个或多个设备的版本储存库中。存储的数据项可以与元数据相关联,或以其他方式被标记以提供有关冲突的信息。如此,如果用户请求冲突失败者,则它们可以检索有关冲突的信息。
在某些实现中,在传输之前,检查共享数据(例如,在相同标识的设备之间或在不同标识的设备之间)。具体而言,可以验证数据以确保数据包括数据或有效数据。在某些实现中,当共享数据的某些部分(例如,较大数据项的块)时,在同步块之前,可以验证块的签名。
图7示出了示例系统体系结构700。系统体系结构700能够执行用于对数据项执行基于内容的分块的操作。体系结构700包括一个或多个处理器702(例如,IBM PowerPC、Intel Pentium4等等)、一个或多个显示设备704(例如,CRT、LCD)、图形处理单元806(例如,NVIDIA GeForce等等)、网络接口708(例如,以太网、FireWire、USB等等)、输入设备710(例如,键盘、鼠标等等),以及一个或多个计算机可读介质712。这些组件使用一个或多个总线714(例如,EISA、PCI、PCI Express等等)来交换通信与数据。
术语“计算机可读介质”是指参与向处理器702提供指令以供其执行的任何介质。计算机可读介质712还包括操作系统716(例如,MacLinux等等。)、网络通信模块718、同步模块722,及其他应用724。
操作系统716可以是多用户、多处理、多任务、多线程,实时等等。操作系统716执行基本任务,包括但不限于:识别来自输入设备710的输入;向显示设备704发送输出;跟踪计算机可读介质712上的文件和目录(例如,存储器或存储设备);控制外围设备(例如,磁盘驱动器、打印机等等);以及管理一个或多个总线714上的业务量。网络通信模块718包括用于建立和维护网络连接的各种组件(例如,用于实现诸如TCP/IP、HTTP、以太网等等之类的通信协议的软件)。
同步模块722提供用于执行各种功能以用于如参考图1-6所描述的在设备之间执行同步的各种软件组件。
在本说明书中所描述的主题和操作的各实施例可以以数字电子电路,或以计算机软件、固件,或硬件来实现,包括在本说明书中所公开的结构以及它们的结构等价物,或以它们中的一个或多个的组合来实现。在本说明书中所描述的主题的各实施例可被实现为一个或多个计算机程序,即,在计算机存储介质上编码的供数据处理设备执行,或控制数据处理设备的操作的计算机程序指令的一个或多个模块。可另选地或另外,程序指令可以编码在人工生成的传播信号上,例如,机器生成的电气、光学或电磁信号,该信号被生成以编码信息,供传输到合适的接收器设备,供数据处理设备执行。计算机存储介质可以是或包括在计算机可读存储设备中、计算机可读存储设备的衬底中、随机或串行存取存储器阵列或设备中,或它们中的一个或多个的组合中。此外,尽管计算机存储介质不是传播的信号,但是计算机存储介质可以是以人工生成的传播的信号编码的计算机程序指令的源或目的地。计算机存储介质也可以是,或包括在一个或多个单独的物理组件或介质(例如,多个CD、光盘、或其他存储设备)中。
在本说明书中所描述的操作可被实现为由数据处理设备对存储在一个或多个计算机可读存储设备上的或从其他来源接收到的数据执行的操作。
术语“数据处理设备”包含用于处理数据的各种各样的设备、装置和机器,作为示例包括可编程处理器、计算机、系统芯片,或多个前述的各项或它们的组合。设备可包括特殊用途逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除硬件之外,设备还可以包括,为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议堆栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机,或它们中的一个或多个的组合的代码。设备和执行环境可以实现各种不同的计算模型基础结构,诸如web服务、分布式计算以及网格计算基础结构。
计算机程序(也称为程序、软件、软件应用、脚本、或代码)可以以任何形式的编程语言来编写,包括汇编或解释语言,声明性或过程语言、并且它可以以任何形式部署,包括作为独立程序或作为适用于计算环境中的模块、组件、子例程、对象或其他单元来部署。计算机程序可以,但是不必对应于文件系统中的文件。程序可以存储在保持其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所述程序的单个文件中,或存储在多个协调的文件(例如,存储一个或多个模块、子程序、或代码的某些部分的文件)中。计算机程序可以被部署到一台计算机上或位于一个站点的或跨多个站点分布并通过通信网络互连在一起的多台计算机上运行。
在本说明书中所描述的过程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,通过对输入数据进行操作并生成输出,来执行动作。过程和逻辑流也可以通过特殊用途逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路),来执行,以及设备也可以实现为特殊用途逻辑电路。
适合于执行计算机程序的处理器包括,作为示例,一般用途和特殊用途的微处理器,以及任何种类的数字计算机的任何一个或多个处理器。一般而言,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令来执行动作的处理器,以及用于存储指令和数据的一个或多个存储器设备。一般而言,计算机也将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或可操作地与它们连接,以从它们那里接收数据或向它们传输数据或两者。然而,计算机不必具有这样的设备。此外,计算机还可以嵌入在另一设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器,或便携式存储设备(例如,通用串行总线(USB)闪存驱动),仅举几个例子而已。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,作为示例包括半导体存储器设备,例如,EPROM、EEPROM、以及FLASH存储器设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。处理器和存储器可以通过特殊用途逻辑电路来补充,或集成在特殊用途逻辑电路中。
为与用户进行交互,可以在计算机上实现在本说明书中所描述的主题的各实施例,计算机具有用于向用户显示信息的显示设备,例如,CRT(阴极射线管)或LCD(液晶显示器)监视器,以及键盘和指示设备,例如鼠标或轨迹球,利用它们用户可以向计算机提供输入。也可以使用其他种类的设备来与用户进行交互;例如,向用户提供的反馈可以是任何形式的传感反馈,例如,可视反馈、听觉反馈或触觉反馈;用户的输入可以以任何形式接收,包括声音、语音或触觉输入。另外,计算机可以通过向用户所使用的设备发送文档以及从该设备接收文档;例如,通过响应于从web浏览器接收到的请求向用户的客户端设备上的web浏览器发送网页,来与用户进行交互。
在本说明书中所描述的主题的各实施例可以在包括后端组件,例如作为数据服务器或包括中间件组件(例如应用服务器),或包括前端组件(例如具有图形用户界面或web浏览器的客户端计算机)(用户可以通过其与本说明书中所描述的主题的实现进行交互),或一个或多个这样的后端、中间件或前端组件的任意组合的计算系统中实现。系统的组件可以通过数字数据通信(例如,通信网络)的任何形式或介质来进行互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互连网络(例如,因特网)、以及对等网络(例如,自组织对等网络)。
计算系统可以包括客户机和服务器。客户机和服务器一般彼此相距较远,通常通过通信网络进行交互。客户端和服务器的关系由于计算机程序在相应的计算机上运行并在彼此之间具有客户端-服务器关系而产生。在某些实施例中,服务器将数据(例如,HTML页面)传输到客户端设备(例如,为了向用户显示数据并从与客户端设备进行交互的用户接收用户输入)。可以在服务器中从客户端设备接收在客户端设备生成的数据(例如,用户交互的结果)。
尽管本说明书包含许多特定实现细节,但是这些不应该被解释为对任何发明的或要求保护的东西的范围的限制,而是作为对特定发明的特定实施例特定的特征的描述。在本说明书中在单独的实施例的上下文中所描述的某些特征也可以在单个实施例中组合地实现。相反,在单个实施例的上下文中所描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,虽然特征在上文可以被描述为以某些组合地起作用,甚至最初要求如此,来自要求保护的组合的一个或多个特征可以在某些情况下从组合中删除,要求保护的组合可以被定向到子组合或子组合的变体。
类似地,尽管操作在附图中是按特定顺序描绘的,但是这不应该被理解为要求这样的操作以所示出的特定顺序或按先后顺序执行,或所有所示出的操作都被执行,以实现所需结果。在某些情况下,多任务和并行处理可能是有利的。此外,在上文所描述的各实施例中各种系统组件的分离不应该被理解为在所有实施例中都要求这样的分离,应该理解,所描述的程序分量和系统可以一般性地集成在单个软件产品中或封装到多个软件产品中。
如此,描述了主题的特定实施例。其他实施例也在下面的权利要求的范围内。在某些情况下,权利要求中所列举的动作可以以不同的顺序执行,但仍能实现所需要的结果。另外,附图中所描绘的过程不一定要求所示出的特定顺序或按先后顺序来实现希望的结果。在某些实现中,多任务和并行处理可能是有利的。

Claims (22)

1.一种在一对设备之间同步数据的方法,包括:
从该对设备中的第一设备接收知识矢量,所述知识矢量标识数据项以及对等设备已知的数据项的最新改变;
在该对设备中的第二设备处,将所接收到的知识矢量与所述第一设备未知的改变的本地知识矢量进行比较;以及
向所述第一设备发送改变列表。
2.如权利要求1所述的方法,还包括:
接收来自所述第一设备的针对对应于所述改变列表中的一个或多个相应的改变的一个或多个数据项的请求;以及
发送所请求的数据项。
3.如权利要求1所述的方法,其中,所述知识矢量包括本地顺序。
4.如权利要求1所述的方法,其中,所述知识矢量具有标识所述数据项的简洁表示以及所述第一设备已知的最新改变标识符。
5.如权利要求4所述的方法,其中,每当数据项被在其中同步所述数据项的多个设备中的一个设备修改时,就递增所述数据项的改变标识符。
6.如权利要求1所述的方法,其中,该对设备之间的同步由所述对中具有最低设备标识符的第一设备启动。
7.一种方法,包括:
标识要从第一设备同步的数据项的第一版本;
标识要从第二设备同步的所述数据项的第二版本;
确定在所述第一版本和所述第二版本之间是否有冲突;
如果有冲突,则自动地解决所述冲突,包括选择冲突获胜者并存储冲突失败者的副本。
8.如权利要求7所述的方法,其中,确定是否有冲突进一步包括:
标识所述数据项的所述第一版本和所述数据项的所述第二版本中的每一个版本的改变标识符;以及
使用相应的改变标识符来确定在指定阈值内的每一个版本之间的创建时间。
9.如权利要求7所述的方法,其中,自动地解决所述冲突进一步包括:
标识所述第一设备和所述第二设备中的每一个设备的设备标识符;以及
以有利于与最低设备标识符相关联的数据项的版本的方式来解决所述冲突。
10.一种方法,包括:
标识多个设备,所述多个设备中的每一个设备都具有唯一数值标识符;
形成所述多个设备的逻辑布局,使得对等设备根据相应的数值标识符按数值次序来排列;以及
根据所述逻辑布局,在相邻的设备对之间同步数据。
11.如权利要求10所述的方法,其中,具有最低数值标识符的设备被视为与具有最高数值标识符的设备相邻。
12.如权利要求10所述的方法,其中,对于一对设备,由具有最低数值标识符的设备启动同步。
13.一种方法,包括:
标识与主要标识相关联的多个设备;
标识与一个或多个次要标识相关联的一个或多个设备;
将第一组数据与和所述主要标识相关联的所述多个设备中的每一个设备同步;以及
将用户指定的第二组数据与和所述次要标识相关联的所述一个或多个设备中的每一个设备同步。
14.如权利要求13所述的方法,其中,所述第一组数据是第一用户指定的数据集合,以及所述第二组数据是不同的第二用户指定的数据集合。
15.一种系统,包括:
可操作以执行包括下列各项的操作的一个或多个计算设备:
从一对设备中的第一设备接收知识矢量,所述知识矢量标识数据项以及对等设备已知的数据项的最新改变;
在该对设备中的第二设备处,将所接收到的知识矢量与所述第一设备未知的改变的本地知识矢量进行比较;以及
向所述第一设备发送改变列表。
16.一种编码有计算机程序的计算机存储介质,所述程序包括当由数据处理设备执行时使所述数据处理设备执行包括下列各项的操作的指令:
从一对设备中的第一设备接收知识矢量,所述知识矢量标识数据项以及对等设备已知的数据项的最新改变;
在该对设备中的第二设备处,将所接收到的知识矢量与所述第一设备未知的改变的本地知识矢量进行比较;以及
向所述第一设备发送改变列表。
17.一种系统,包括:
可操作以执行包括下列各项的操作的一个或多个计算设备:
标识要从第一设备同步的数据项的第一版本;
标识要从第二设备同步的所述数据项的第二版本;
确定在所述第一版本和所述第二版本之间是否有冲突;
如果有冲突,则自动地解决所述冲突,包括选择冲突获胜者并存储冲突失败者的副本。
18.一种系统,包括:
可操作以执行包括下列各项的操作的一个或多个计算设备:
标识多个设备,所述多个设备中的每一个设备都具有唯一数值标识符;
形成所述多个设备的逻辑布局,使得对等设备根据相应的数值标识符按数值次序来排列;以及
根据所述逻辑布局,在相邻的设备对之间同步数据。
19.一种系统,包括:
可操作以执行包括下列各项的操作的一个或多个计算设备:
标识与主要标识相关联的多个设备;
标识与一个或多个次要标识相关联的一个或多个设备;
将第一组数据与和所述主要标识相关联的所述多个设备中的每一个设备同步;以及
将用户指定的第二组数据与和所述次要标识相关联的所述一个或多个设备中的每一个设备同步。
20.一种编码有计算机程序的计算机存储介质,所述程序包括当由数据处理设备执行时使所述数据处理设备执行包括下列各项的操作的指令:
标识要从第一设备同步的数据项的第一版本;
标识要从第二设备同步的所述数据项的第二版本;
确定在所述第一版本和所述第二版本之间是否有冲突;
如果有冲突,则自动地解决所述冲突,包括选择冲突获胜者并存储冲突失败者的副本。
21.一种编码有计算机程序的计算机存储介质,所述程序包括当由数据处理设备执行时使所述数据处理设备执行包括下列各项的操作的指令:
标识多个设备,所述多个设备中的每一个设备都具有唯一数值标识符;
形成所述多个设备的逻辑布局,使得对等设备根据相应的数值标识符按数值次序来排列;以及
根据所述逻辑布局,在相邻的设备对之间同步数据。
22.一种编码有计算机程序的计算机存储介质,所述程序包括当由数据处理设备执行时使所述数据处理设备执行包括下列各项的操作的指令:
标识与主要标识相关联的多个设备;
标识与一个或多个次要标识相关联的一个或多个设备;
将第一组数据与和所述主要标识相关联的所述多个设备中的每一个设备同步;以及
将用户指定的第二组数据与和所述次要标识相关联的所述一个或多个设备中的每一个设备同步。
CN201280005184.XA 2011-01-14 2012-01-13 数据同步 Active CN103299602B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161433173P 2011-01-14 2011-01-14
US61/433,173 2011-01-14
US13/349,519 2012-01-12
US13/349,519 US8868500B2 (en) 2011-01-14 2012-01-12 Data synchronization
PCT/US2012/021310 WO2012097296A1 (en) 2011-01-14 2012-01-13 Data synchronization

Publications (2)

Publication Number Publication Date
CN103299602A true CN103299602A (zh) 2013-09-11
CN103299602B CN103299602B (zh) 2016-08-10

Family

ID=46491540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280005184.XA Active CN103299602B (zh) 2011-01-14 2012-01-13 数据同步

Country Status (7)

Country Link
US (2) US8868500B2 (zh)
EP (1) EP2664124B1 (zh)
JP (2) JP5826287B2 (zh)
KR (2) KR20140114073A (zh)
CN (1) CN103299602B (zh)
AU (2) AU2012205357B2 (zh)
WO (1) WO2012097296A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407846A (zh) * 2014-10-29 2015-03-11 中国建设银行股份有限公司 一种信息处理方法及装置
CN106101229A (zh) * 2016-06-15 2016-11-09 北京众享比特科技有限公司 数据同步网络和方法
CN107809326A (zh) * 2016-09-09 2018-03-16 阿里巴巴集团控股有限公司 数据一致性的处理方法、装置和设备
CN108076081A (zh) * 2016-11-09 2018-05-25 菜鸟智能物流控股有限公司 一种业务数据的同步方法、装置和系统
CN108290219A (zh) * 2015-11-16 2018-07-17 瑞尼斯豪公司 增材制造方法及设备
WO2022252791A1 (zh) * 2021-05-31 2022-12-08 华为技术有限公司 数据传输方法、电子设备及计算机可读存储介质

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10079864B2 (en) * 2012-01-06 2018-09-18 Microsoft Technology Licensing, Llc Communicating media data
US9195725B2 (en) * 2012-07-23 2015-11-24 International Business Machines Corporation Resolving database integration conflicts using data provenance
JP5840580B2 (ja) * 2012-08-24 2016-01-06 日本電信電話株式会社 分散情報同期システムおよび分散情報同期方法
KR101974899B1 (ko) * 2012-10-23 2019-05-03 삼성전자주식회사 디바이스간 직접 통신을 위한 동기화 방법 및 장치
US9197700B2 (en) * 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US9077759B2 (en) 2013-01-18 2015-07-07 Apple Inc. Conflict resolution for keychain syncing
EP2960803B1 (en) * 2013-02-22 2019-01-30 Nec Corporation Data sharing system
US9342531B2 (en) * 2013-05-09 2016-05-17 Dropbox, Inc. Managing conflicted copies
US9767023B2 (en) 2013-06-12 2017-09-19 Nec Corporation Method of controlling data writing to persistent storage device
US9053165B2 (en) * 2013-07-08 2015-06-09 Dropbox, Inc. Structured content item synchronization
US11356429B2 (en) 2013-07-23 2022-06-07 Blancco Technology Group IP Oy Systems and methods for device data transfer
US9336228B2 (en) * 2013-12-18 2016-05-10 Verizon Patent And Licensing Inc. Synchronization of program code between revision management applications utilizing different version-control architectures
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
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
US10387451B2 (en) 2014-05-30 2019-08-20 Apple Inc. Synchronization system for multiple client devices
US9503402B2 (en) * 2014-08-18 2016-11-22 Dropbox, Inc. Managing drafts of electronic documents across client devices
US9846528B2 (en) 2015-03-02 2017-12-19 Dropbox, Inc. Native application collaboration
KR101666313B1 (ko) * 2015-06-25 2016-10-13 주식회사 아이리버 유엠에스 방식의 단말기, 이에 사용되는 데이터베이스 갱신 시스템, 그 방법 및 이를 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램
US10425477B2 (en) * 2015-09-15 2019-09-24 Microsoft Technology Licensing, Llc Synchronizing file data between computer systems
US10187464B2 (en) 2015-12-27 2019-01-22 Dropbox, Inc. Systems and methods of re-associating content items
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
US11080242B1 (en) * 2016-03-30 2021-08-03 EMC IP Holding Company LLC Multi copy journal consolidation
US10382502B2 (en) 2016-04-04 2019-08-13 Dropbox, Inc. Change comments for synchronized content items
US11575732B1 (en) * 2017-06-23 2023-02-07 8X8, Inc. Networked device control using a high-level programming interface
JP2019079473A (ja) * 2017-10-27 2019-05-23 富士ゼロックス株式会社 情報処理装置及びプログラム
US11108862B2 (en) 2019-10-14 2021-08-31 Journey Mobile, Inc. Bi-directional data sync between a client device and an application server

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023619A1 (en) * 2001-07-27 2003-01-30 Siemens Information And Communication Networks, Inc. Apparatus and method for mobile device synchronization
US20050086272A1 (en) * 2003-07-31 2005-04-21 Lev Novik Et Al. To Microsoft Corporation Systems and methods for replicating data stores
US20060101081A1 (en) * 2004-11-01 2006-05-11 Sybase, Inc. Distributed Database System Providing Data and Space Management Methodology
US20080165807A1 (en) * 2007-01-05 2008-07-10 Apple Computer, Inc. Wide Area Peer-to-Peer Synching in a Decentralized Environment
US20090006498A1 (en) * 2005-06-21 2009-01-01 Apple Inc. Peer-to-Peer Syncing in a Decentralized Environment
US20090077002A1 (en) * 2007-09-14 2009-03-19 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272545B1 (en) * 1997-10-24 2001-08-07 Microsoft Corporation System and method for interaction between one or more desktop computers and one or more mobile devices
JP2000183966A (ja) * 1998-12-15 2000-06-30 Hitachi Cable Ltd Lanシステムにおけるスイッチの優先度付パケット転送方式
US6401104B1 (en) 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
WO2003044698A1 (en) * 2001-11-15 2003-05-30 Visto Corporation System and methods for asychronous synchronization
US7152076B2 (en) 2003-01-23 2006-12-19 Microsoft Corporation System and method for efficient multi-master replication
US7756825B2 (en) * 2003-07-31 2010-07-13 Microsoft Corporation Synchronization peer participant model
US7778962B2 (en) * 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US7730026B2 (en) * 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7610317B2 (en) * 2005-02-22 2009-10-27 Microsoft Corporation Synchronization with derived metadata
US7720890B2 (en) * 2005-02-22 2010-05-18 Microsoft Corporation Ghosted synchronization
US7970017B2 (en) 2005-07-13 2011-06-28 At&T Intellectual Property I, L.P. Peer-to-peer synchronization of data between devices
US8370423B2 (en) * 2006-06-16 2013-02-05 Microsoft Corporation Data synchronization and sharing relationships
US7953785B2 (en) 2006-06-30 2011-05-31 Microsoft Corporation Content synchronization in a file sharing environment
JP3974161B2 (ja) * 2006-11-24 2007-09-12 株式会社東芝 データ同期処理のための通信方法および電子機器
US7778282B2 (en) * 2006-12-18 2010-08-17 Microsoft Corporation Propagation of conflict knowledge
US7805403B2 (en) * 2007-01-07 2010-09-28 Apple Inc. Synchronization methods and systems
US7620659B2 (en) * 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US7962610B2 (en) 2007-03-07 2011-06-14 International Business Machines Corporation Statistical data inspector
US7680067B2 (en) 2007-03-09 2010-03-16 Palm, Inc. Peer-to-peer data synchronization architecture
US7725456B2 (en) * 2007-04-27 2010-05-25 Microsoft Corporation Item management with data sharing and synchronization
US8284803B2 (en) * 2009-12-30 2012-10-09 Microsoft Corporation Cross-scope synchronization of data item knowledge and corresponding metadata
US8805783B2 (en) * 2010-05-27 2014-08-12 Microsoft Corporation Synchronization of subsets of data including support for varying set membership

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023619A1 (en) * 2001-07-27 2003-01-30 Siemens Information And Communication Networks, Inc. Apparatus and method for mobile device synchronization
US20050086272A1 (en) * 2003-07-31 2005-04-21 Lev Novik Et Al. To Microsoft Corporation Systems and methods for replicating data stores
US20060101081A1 (en) * 2004-11-01 2006-05-11 Sybase, Inc. Distributed Database System Providing Data and Space Management Methodology
US20090006498A1 (en) * 2005-06-21 2009-01-01 Apple Inc. Peer-to-Peer Syncing in a Decentralized Environment
US20080165807A1 (en) * 2007-01-05 2008-07-10 Apple Computer, Inc. Wide Area Peer-to-Peer Synching in a Decentralized Environment
US20090077002A1 (en) * 2007-09-14 2009-03-19 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407846A (zh) * 2014-10-29 2015-03-11 中国建设银行股份有限公司 一种信息处理方法及装置
CN104407846B (zh) * 2014-10-29 2020-03-20 中国建设银行股份有限公司 一种信息处理方法及装置
CN108290219A (zh) * 2015-11-16 2018-07-17 瑞尼斯豪公司 增材制造方法及设备
CN108290219B (zh) * 2015-11-16 2021-12-21 瑞尼斯豪公司 增材制造方法及设备
CN106101229A (zh) * 2016-06-15 2016-11-09 北京众享比特科技有限公司 数据同步网络和方法
CN106101229B (zh) * 2016-06-15 2019-12-13 北京众享比特科技有限公司 数据同步网络和方法
CN107809326A (zh) * 2016-09-09 2018-03-16 阿里巴巴集团控股有限公司 数据一致性的处理方法、装置和设备
CN108076081A (zh) * 2016-11-09 2018-05-25 菜鸟智能物流控股有限公司 一种业务数据的同步方法、装置和系统
CN108076081B (zh) * 2016-11-09 2021-02-26 菜鸟智能物流控股有限公司 一种业务数据的同步方法、装置和系统
WO2022252791A1 (zh) * 2021-05-31 2022-12-08 华为技术有限公司 数据传输方法、电子设备及计算机可读存储介质

Also Published As

Publication number Publication date
AU2015230793A1 (en) 2015-10-15
EP2664124B1 (en) 2016-11-23
JP2016040724A (ja) 2016-03-24
US20150106330A1 (en) 2015-04-16
US20120185434A1 (en) 2012-07-19
AU2015230793B2 (en) 2016-11-24
KR101503202B1 (ko) 2015-03-16
EP2664124A1 (en) 2013-11-20
WO2012097296A1 (en) 2012-07-19
US8868500B2 (en) 2014-10-21
KR20130121937A (ko) 2013-11-06
JP2014505944A (ja) 2014-03-06
JP6130890B2 (ja) 2017-05-17
AU2012205357A1 (en) 2013-08-01
US9294566B2 (en) 2016-03-22
KR20140114073A (ko) 2014-09-25
AU2015230793C1 (en) 2017-06-29
AU2012205357B2 (en) 2015-07-02
CN103299602B (zh) 2016-08-10
JP5826287B2 (ja) 2015-12-02

Similar Documents

Publication Publication Date Title
CN103299602A (zh) 数据同步
CN103620599B (zh) 云存储
US10997203B2 (en) Systems for allowing annotation in real time
CN105745646B (zh) 本机应用程序搜索结果
WO2021031473A1 (zh) 基于多资产模型的区块链资产处理方法及相关设备
US9712612B2 (en) Method for improving mobile network performance via ad-hoc peer-to-peer request partitioning
CN104079614A (zh) 用于分布式发布订阅系统消息有序获取的方法和系统
US9392079B2 (en) Directory service discovery and/or learning
CN108009247B (zh) 信息推送方法及装置
JP2017535899A (ja) サービスデータを処理するための方法、装置、および、システム
CN110325980A (zh) 用于数据库绑定型应用的用户界面后端集群的扩展技术
CN110889040B (zh) 用于推送信息的方法和装置
CN115277610B (zh) 基于双活环境的消息分流发送方法、装置、设备及介质
US20180007130A1 (en) Peer-to-Peer Assisted Personal Synchronization
KR101286378B1 (ko) 파일 동기화 방법 및 이를 위한 시스템
CN117216152A (zh) 区块链网络的数据处理方法、装置、设备、介质及产品
KR101530346B1 (ko) 분산 파일 시스템 및 방법
CN115222524A (zh) 一种数字货币的充值方法、装置及系统
CN115033617A (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