CN110769061B - 一种数据同步的方法及设备 - Google Patents

一种数据同步的方法及设备 Download PDF

Info

Publication number
CN110769061B
CN110769061B CN201911034072.7A CN201911034072A CN110769061B CN 110769061 B CN110769061 B CN 110769061B CN 201911034072 A CN201911034072 A CN 201911034072A CN 110769061 B CN110769061 B CN 110769061B
Authority
CN
China
Prior art keywords
data object
version number
storage format
field
synchronization
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.)
Active
Application number
CN201911034072.7A
Other languages
English (en)
Other versions
CN110769061A (zh
Inventor
田文罡
贺中兴
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201911034072.7A priority Critical patent/CN110769061B/zh
Publication of CN110769061A publication Critical patent/CN110769061A/zh
Priority to PCT/CN2020/113117 priority patent/WO2021077912A1/zh
Application granted granted Critical
Publication of CN110769061B publication Critical patent/CN110769061B/zh
Priority to US17/727,250 priority patent/US20220245143A1/en
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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种数据同步的方法,应用于异构数据库之间的数据同步,该方法包括终端设备通过第一存储格式记录数据对象的主键、属性信息、版本号以及同步状态,云设备通过第二存储格式记录数据对象的主键、属性信息以及版本号,进而终端设备和云设备基于各自的存储格式以及版本号实现异构数据库之间的数据同步。本申请技术方案可以通过例如:版本号管理和同步状态管理的方式确保异构数据库之间数据同步时的一致性。

Description

一种数据同步的方法及设备
技术领域
本申请涉及数据同步技术领域,具体涉及一种数据同步的方法及设备。
背景技术
随着各种终端设备的普及,用户可能有多个终端设备,比如多个手机。通常在一个手机上添加了联系人,该联系人信息最好能够自动同步到其他设备上,这样就不需要在每个手机上把相同的信息都输入一遍,给用户提供方便。如果一个用户没有多个终端设备,也需要把端侧的一些数据备份到云侧,保证数据的可靠性。比如联系人信息,如果手机丢失,没有备份存储,联系人信息就无法恢复。手机不断更新换代,一些用户可能两三年就更换一部手机,在更换手机时,通常需要把原来手机的信息迁移到新的手机上。
这些场景都可以通过端云同步来实现,用户在一个终端设备上的数据,可以通过云侧同步到另外一个终端设备上。也可以直接把端侧的数据备份到云侧,在需要的时候从云侧恢复到终端设备上。由于端侧环境(例如:功耗,安全,空间等的约束)与云侧环境(例如:资源充足,安全防护手段健全)的不同,端侧和云侧的数据管理一般是异构的。端侧的数据管理一般使用嵌入式数据库,比如SQLite,云侧的数据管理一般使用分布式数据库或者中间件,比如MySQL及其中间件。这样端侧和云侧的数据同步是在异构数据库上的同步。
异构数据库在同步时需要保持异构数据库之间的数据的一致性,这个问题亟待解决。
发明内容
本申请实施例提供一种数据同步的方法,以实现异构数据库之间数据同步时的一致性。本申请实施例还提供了相应的设备。
为达到上述目的,本申请的实施例采用如下技术方案:
本申请第一方面提供一种数据同步的方法,应用于异构数据库之间的数据同步过程,该异构数据库指的可以是终端设备与云设备的数据库的结构不同,例如终端设备一般使用嵌入式数据库,云设备一般使用分布式数据库,该方法应用于终端设备,该方法可以包括:终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,所述第一存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,用于存储所述第一数据对象的版本号的版本号字段,以及同步状态字段;所述终端设备向云设备发送同步消息,所述同步消息中包括所述第一数据对象的主键;所述终端设备接收所述云设备基于所述同步消息对所述第一数据对象在所述云设备中的第二存储格式修改后发送的同步响应消息,所述同步响应消息包括所述主键;所述终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
上述第一方面提供的技术方案中,用户可以通过应用执行第一数据对象的***、更新、删除和查询等操作,该应用例如可以是通讯录、图库和即时应用等。以通讯录为例,第一数据对象可以是一条联系人记录。第一存储格式指的是第一数据对象在终端设备中的存储格式。主键通常用于唯一标识一个数据对象,所以可以通主键实现数据对象的查找。第一字段的属性可以是姓名、手机号码、座机号码、邮箱和住址等信息。同步状态字段用来指示第一字段的信息是否已同步完成、是否需要同步,是否正在同步等信息。该第一存储格式中还可以包括第一存储字段中的哪些信息被修改的指示字段,当然还可以包括删除指示字段,该删除指示字段中的指示信息用来指示是删除操作还是非删除操作。该存储格式与应用的版本相对应。例如:应用的版本是1.1.0时,通讯录的第一存储格式可以包括姓名、手机号码和座机号码这三个字段的信息,当应用版本是1.2.0时,通讯录的第一存储格式可以包括姓名、手机号码、座机号码、邮箱和住址这五个字段的信息。本申请中,通过存储格式存储的数据对象有不同的版本号,当存储格式中某个字段中的数值发生变化时,该数据对象的版本号也要随之变化。该版本号只有云设备才能修改,终端设备中的数据对象发生变化都会需要向云设备同步该变化,由云侧来做同步,并修改版本号,将修改后的该数据对象的版本号再同步给终端设备,从而实现端云数据同步。由该第一方面可知,终端设备响应于应用对第一数据对象的操作时,可以通过第一存储格式的版本号字段和同步状态字段的指示功能来确保异构数据库之间数据同步时的一致性。也就是说可以通过版本号管理、同步状态管理的方式确保异构数据库之间数据同步时的一致性。
在第一方面的一种可能的实现方式中,所述操作为***操作,上述步骤:终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,可以包括:所述终端设备响应于应用对第一数据对象的所述***操作,将所述***操作包含的所述第一数据对象的主键和属性信息分别填充到所述第一存储格式的主键字段和第一字段;所述终端设备将所述第一存储格式的版本号字段的值修改为第一版本号;所述终端设备将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态;对应地,所述同步响应消息中还包括第二版本号,上述步骤:终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作,可以包括:所述终端设备将所述第一存储格式的版本号字段的值由所述第一版本号修改为所述第二版本号,并将所述同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
该种可能的实现方式中,终端设备不具备调整版本号的功能,当是***操作时,表示该第一数据对象刚被建立,可以用初始版本号作为第一版本号,例如0作为第一版本号。若同步响应消息中云设备返回了新的版本号,则使用云设备返回的版本号替换第一版本号,也就是第二版本号替换第一版本号,并通过修改同步状态字段的值来指示所述第一存储格式为已完成同步状态,第一值例如可以是1表示待同步,第二值例如可以是0表示已完成同步。该种可能的实现方式中,通过版本号的协商以及同步状态字段配合数据同步的修改实现端云数据的一致性。
在第一方面的一种可能的实现方式中,所述操作为更新操作,上述步骤:所述终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,可以包括:所述终端设备响应于应用对第一数据对象的更新操作,更新所述第一存储格式的第一字段的值;所述终端设备将所述第一存储格式的版本号字段的值修改为第一版本号;所述终端设备将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态;对应地,所述同步响应消息中还包括第二版本号,所述终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作,可以包括:所述终端设备将所述第一存储格式的版本号字段由所述第一版本号修改为所述第二版本号,并将所述第一存储格式中的同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
该种可能的实现方式中,当为更新操作时,修改了第一字段中的某个属性的值,如修改了手机号码、删除了住址等都属于更新操作,这种情况下,只需要将第一数据对象当前的版本号确定为第一版本号。若同步响应消息中云设备返回了新的版本号,则使用云设备返回的版本号替换第一版本号,也就是第二版本号替换第一版本号,并通过修改同步状态字段的值来指示所述第一存储格式为已完成同步状态,从而实现端云数据的一致性。
在第一方面的一种可能的实现方式中,所述同步响应消息中还包括所述第二存储格式中第一字段的值;该方法还可以包括:所述终端设备基于所述第二存储格式中第一字段的值,更新所述第一存储格式中所述第一字段的值。
该种可能的实现方式中,若在同步过程中,端侧的第一数据对象与云侧的第一数据对象的版本号不同,存在版本号冲突时,说明云侧的第一数据对象可能被云设备其他终端设备修改过。这种情况下,可以选择以云设备存储的第一数据对象为准。当以云设备存储的第一数据对象为准时,云设备会向终端设备发送云设备中存储与终端设备不同的数据,也就是数据对象在云设备中的字段值,例如:终端设备中存储的手机号码是13518475600,云设备中存储的手机号码是13318475600,则该可以将13318475600携带在同步响应消息中,终端设备会使用该13318475600替换13518475600,并将版本号也替换为第二版本号,从而确保端云数据的一致性。
在第一方面的一种可能的实现方式中,所述同步响应消息中还包括所述第二存储格式中第一字段的值,该方法还可以包括:所述终端设备根据所述第一存储格式中第一字段的值和所述第二存储格式中第一字段的值确定所述第一字段的更新值;所述终端设备使用所述第一字段的更新值修改所述第一存储格式中第一字段的值;所述终端设备向所述云设备发送所述主键、所述第一字段的更新值和所述第二版本号,以用于所述云设备使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;所述终端设备接收所述云设备发送的第三版本号和所述主键;所述终端设备将所述主键对应的第一存储格式的版本号字段由所述第二版本号修改为所述第三版本号。
该种可能的实现方式中,若在同步过程中,端侧的第一数据对象与云侧的第一数据对象的版本号不同,存在版本号冲突时,说明云侧的第一数据对象可能被云设备其他终端设备修改过。这种情况下,可以将云侧数据返回给终端设备,云侧数据也就是第二存储格式中第一字段的值,终端设备中可以通过注册回调函数,将该冲突事件通过应用发送给用户,由用户来确定第一字段的更新值,即第一字段的值以哪个为准。也可以不发送给用户,由终端设备的内部冲突解决机制来确定第一字段的更新值,例如:将存在冲突的端设备中存储的手机号码是13518475600和云设备中存储的手机号码是13318475600通过回调函数发送给用户后,用户确定两个号码都不正确,正确的号码是13418475600,则将第一字段的更新值确定为13418475600,然后终端设备使用13418475600替换13518475600,并将该13418475600发送给云设备,云设备使用13418475600替换13518475600,同时,云设备要生成一个新的版本号,例如:第三版本号,使用第三版本号来标记最新的第一数据对象的属性信息,并将该第三版本号返回给终端设备,终端设备将第二版本号修改为所述第三版本号,从而确保端云数据的一致性。
在第一方面的一种可能的实现方式中,所述操作为删除操作,所述第一数据对象在所述终端设备中的第一存储格式还包括删除指示字段,上述步骤:终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,可以包括:所述终端设备响应于应用对第一数据对象的删除操作,将所述第一存储格式中的删除指示字段的值修改为第三值,以指示删除所述第一数据对象;对应地,所述同步消息还包括删除操作的指示,所述终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作,可以包括:所述终端设备删除所述第一数据对象在所述终端设备中的第一存储格式。
该种可能的实现方式中,第三值可以是0或1这种数值,也可以是true这种指示值。当是删除操作时,终端设备可以在云设备标记好第一数据对象在终端设备删除后,从终端设备上删除该第一数据对象。
在第一方面的一种可能的实现方式中,所述同步响应消息还包括所述云设备中存储的数据对象的最大版本号。所述终端设备比较同步基线和所述最大版本号,所述同步基线为所述终端设备中数据对象的初始版本号或者上一次与所述同步基线做比较的版本号;当所述同步基线和所述最大版本号不相等时,所述终端设备向所述云设备发送第一同步请求,所述第一同步请求中包括所述同步基线;所述终端设备接收所述云设备发送的所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号;当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号相同时,所述终端设备根据所述第二数据对象的主键确定未同步所述第二数据对象,则向所述云设备发送第二同步请求,所述第二同步请求包括所述第二数据对象的主键;对应地,所述终端设备接收所述第二数据对象;当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,所述终端设备根据所述第二数据对象的主键确定未同步所述第二数据对象,则向所述云设备发送第二同步请求,所述第二同步请求包括所述第二数据对象的主键和所述第一数据对象的主键;对应地,所述终端设备接收所述第二数据对象和所述第二存储格式中第一字段的值;所述终端设备将所述同步基线调整到所述最大版本号。
该种可能的实现方式中,为了确保终端设备可以及时获取到云设备中的数据对象,云设备会在同步响应消息中携带云设备中存储的数据对象的最大版本号。这样,终端设备就可以通过比较同步基线和所述最大版本号来确定终端设备上的数据对象与云设备上的数据对象不一致,终端设备可以向云设备发送同步基线,由云设备来查找位于同步基线之上的版本号所对应的数据对象,然后将这些数据对象的主键以及相应的版本号发送给终端设备,终端设备可以根据这些数据对象的主键来确定自身没有存储的数据对象,然后再将这些没有的数据对象的主键发送给云设备,云设备就可以向终端返回终端设备所没存储的数据对象,进而实现端云数据的一致性。同时,若终端设备中的数据对象的版本号与云设备中的版本号不同时,终端设备也需要请求同步云设备中该数据对象的最新信息,以保证每个数据对象的端云一致性。另外,终端设备还会及时将同步基线调整到最大版本号,例如将同步基线由0调整到2,这样就可以避免下次云设备发送最新的最大版本号后会重复请求已存储的数据对象。
在第一方面的一种可能的实现方式中,该方法还可以包括:所述终端设备向所述云设备发送所述应用的版本信息,所述应用的版本信息用于所述云设备确定所述第一数据对象在所述终端设备中的第一存储格式。
该种可能的实现方式中,考虑到不同的终端设备使用的应用版本可能不同,不同应用版本对应的存储格式可能不同,所以在数据同步之前。云设备要与终端设备协商,以确定终端设备所使用的存储格式,这样云设备才能保持与终端设备一致的格式发送数据。
本申请第二方面提供一种数据同步的方法,应用于异构数据库之间的数据同步过程,该异构数据库指的可以是终端设备与云设备的数据库的结构不同,例如终端设备一般使用嵌入式数据库,云设备一般使用分布式数据库,该方法应用于云设备,该方法可以包括:云设备接收终端设备发送的同步消息,所述同步消息中包括第一数据对象的主键,所述第一数据对象在所述终端设备中以第一存储格式存储;所述云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,所述第二存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,以及用于存储所述第一数据对象的版本号的版本号字段;所述云设备向所述终端设备发送同步响应消息,所述同步响应消息包括所述主键,所述同步响应消息用于所述终端设备对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
上述第二方面提供的技术方案中,云设备中采用第二存储格式存储第一数据对象,主键通常用于唯一标识一个数据对象,所以可以通主键实现数据对象的查找。第一字段的属性可以是姓名、手机号码、座机号码、邮箱和住址等信息。该第二存储格式中还可以包括删除指示字段,该删除指示字段中的指示信息用来指示是删除操作还是非删除操作。第一字段的属性可以是通讯录中的姓名、手机号码、座机号码、邮箱和住址等信息。第二存储格式指的是第一数据对象在云设备中的存储格式,该存储格式与应用的版本相对应。例如:应用的版本是1.1.0时,通讯录的第一存储格式可以包括姓名、手机号码和座机号码这三个字段的信息,当应用版本是1.2.0时,通讯录的第一存储格式可以包括姓名、手机号码、座机号码、邮箱和住址这五个字段的信息。本申请中,通过存储格式存储的数据对象也有不同版本,当存储格式中某个字段中的数值发生变化时,该数据对象的版本号都不同。该版本号只有云设备才能修改,终端设备中的数据对象发生变化都会需要向云设备同步该变化,由云侧来做同步,并修改版本号,将修改后的该数据对象的版本号再同步给终端设备,从而实现端云数据同步。由该第二方面可知,终端设备和云设备在数据对象的第一字段信息发生变化时,可以通过第一存储格式中版本号字段和同步状态字段,以及第二存储格式的版本号字段的指示功能来确保异构数据库之间数据同步时的一致性。也就是说可以通过版本号管理、同步状态管理的方式确保异构数据库之间数据同步时的一致性。
在第二方面的一种可能的实现方式中,所述同步消息还包括所述第一数据对象的属性信息,上述步骤:云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,可以包括:所述云设备基于所述同步消息,将所述第一数据对象的主键和属性信息分别填充到所述第二存储格式的主键字段和第一字段;所述云设备为所述第一数据对象确定第二版本号,并将所述第二版本号填充到所述第二存储格式的版本号字段中。
该种可能的实现方式中,当为***操作时,表示云设备之前未存储第一数据对象,则将所述第一数据对象的主键和所述第一字段的属性的值填充到所述第二存储格式中的主键字段和第一字段,并生成一个第二版本号,填充到版本号字段中,然后通过同步响应消息向终端设备发送第二版本号,以指示终端设备也使用该第二版本号,就可以保证端云数据一致性。
在第二方面的一种可能的实现方式中,所述同步消息还包括所述第一版本号和所述第一数据对象的属性信息,上述步骤:云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,可以包括:所述云设备根据所述第一数据对象的主键确定所述第二存储格式的版本号字段中的版本号;当所述第一版本号与所述第二存储格式的版本号字段中的版本号相同时,则所述云设备将所述第一数据对象的属性信息更新到所述第二存储格式中的第一字段;所述云设备为所述第一数据对象确定第二版本号,并将所述第二版本号更新到所述第二存储格式的版本号字段中。
该种可能的实现方式中,当为更新操作时,需要通过版本号的比对来检测版本号冲突,当不存在版本号冲突时,云设备只需要更新相应的字段,并生成一个新的版本号,向终端设备发送该新的版本号,即可保证端云数据的一致性。
在第二方面的一种可能的实现方式中,该方法还可以包括:当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,所述云设备将所述第二存储格式中第一字段的值添加到所述同步响应消息中。
该种可能的实现方式中,当存在版本号冲突时,说明云侧的第一数据对象可能被云设备其他终端设备修改过。这种情况下,可以选择以云设备存储的第一数据对象为准。当以云设备存储的第一数据对象为准时,云设备向同步响应消息中添加与终端设备不同的数据,例如:终端设备中存储的手机号码是13518475600,云设备中存储的手机号码是13318475600,则该更新下信息可以为13318475600,终端设备会使用该13318475600替换13518475600,并将版本号也替换为第二版本号,从而确保端云数据的一致性。
在第二方面的一种可能的实现方式中,该方法还可以包括:当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,所述云设备将所述第二存储格式中第一字段的值添加到所述同步响应消息中;所述云设备接收所述终端设备发送的所述第一数据对象的主键、所述第一字段的更新值和所述第二版本号;所述云设备确定所述第二版本号与所述第二存储格式的版本号字段中的版本号相同,则使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;所述云设备为所述第一数据对象确定第三版本号,所述第三版本号与所述第一版本号和所述第二版本号不同;所述云设备向所述终端设备发送所述第三版本号和所述第一数据对象的主键,以用于所述终端设备将所述主键对应的第一存储格式的版本号字段由所述第二版本号修改为所述第三版本号。
该种可能的实现方式中,当存在版本号冲突时,说明云侧的第一数据对象可能被云设备其他终端设备修改过。这种情况下,可以将云侧数据,也就是第二存储格式中第一字段的值返回给终端设备,终端设备中可以通过注册回调函数,将该冲突事件通过应用发送给用户,由用户来确定第一字段的更新值,也可以不发送给用户,由终端设备的内部冲突解决机制来确定第一字段的更新值,例如:将存在冲突的端设备中存储的手机号码是13518475600和云设备中存储的手机号码是13318475600通过回调函数发送给用户后,用户确定两个号码都不正确,正确的号码是13418475600,则将第一字段的更新值确定为13418475600,然后终端设备使用13418475600替换13518475600,并将该13418475600发送给云设备,云设备使用13418475600替换13518475600,同时,云设备要生成一个新的版本号,例如:第三版本号,使用第三版本号来标记最新的第一数据对象,并将该第三版本号返回给终端设备,终端设备将第二版本号修改为所述第三版本号,从而确保端云数据的一致性。
在第二方面的一种可能的实现方式中,所述同步消息还包括删除操作的指示,上述步骤:云设备根据所述同步消息修改所述第一主键对应的第一数据对象的第二存储格式,可以包括:所述云设备根据所述删除操作的指示将所述第二存储字段中的删除指示字段修改为删除指示。
该种可能的实现方式中,所述第一数据对象在所述云设备中的第二存储格式还包括删除指示字段,所述同步消息还包括删除操作的指示,上述步骤:云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,可以包括:所述云设备将所述第二存储格式中的删除指示字段的值修改为用于指示删除所述第一数据对象的值。
在第二方面的一种可能的实现方式中,该同步响应消息中还包括所述云设备中存储的数据对象的最大版本号;所述云设备接收所述终端设备发送的第一同步请求,所述第一同步请求中包括所述终端设备中维护的同步基线,所述同步基线为所述终端设备中数据对象的初始版本号或者所述终端设备中上一次与所述同步基线做比较的版本号;所述云设备确定版本号高于所述同步基线的数据对象;所述云设备向所述终端设备发送所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号;所述云设备接收所述终端设备发送的第二同步请求,所述第二同步请求包括所述第二数据对象的主键;或者,所述第二同步请求包括所述第二数据对象的主键和所述第一数据对象的主键;所述云设备根据所述第二数据对象的主键确定所述第二数据对象;或者,根据所述第二数据对象的主键确定所述第二数据对象以及根据所述第一数据对象的主键确定所述第一数据对象;所述云设备向所述终端设备发送所述第二数据对象,或者,所述第二数据对象和所述第二存储格式中第一字段的值。
该种可能的实现方式中,为了确保终端设备可以及时获取到云设备中的数据对象,云设备会在同步响应中携带云设备中存储的数据对象的最大版本号,这样,终端设备就可以通过比较同步基线和所述最大版本号来确定终端设备上的数据对象与云设备上的数据对象不一致,终端设备可以向云设备发送同步基线,由云设备来查找位于同步基线之上的版本号所对应的数据对象,然后将这些数据对象的主键以及相应的版本号发送给终端设备,终端设备可以根据这些数据对象的主键来确定自身没有存储的数据对象,然后再将这些没有的数据对象的主键发送给云设备,云设备就可以向终端返回终端设备所没存储的数据对象,进而实现端云数据的一致性。同时,若终端设备中的数据对象的版本号与云设备中的版本号不同时,终端设备也需要请求同步云设备中该数据对象的最新信息,以保证每个数据对象的端云一致性。另外,终端设备还会及时将同步基线调整到最大版本号,例如将同步基线由0调整到2,这样就可以避免下次云设备发送最新的最大版本号后会重复请求已存储的数据对象。
在第二方面的一种可能的实现方式中,该方法还可以包括:所述云设备接收所述终端设备发送的应用的版本信息;所述云设备根据所述应用的版本信息确定所述第一数据对象在所述终端设备中的第一存储格式。
该种可能的实现方式中,考虑到不同的终端设备使用的应用版本可能不同,不同应用版本对应的存储格式可能不同,所以在数据同步之前。云设备要与终端设备协商,以确定终端设备所使用的存储格式,这样云设备才能保持与终端设备一致的格式发送数据。
本申请第三方面提供一种终端设备,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块或单元。
本申请第四方面提供一种云设备,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的模块或单元。
本申请第五方面提供一种终端设备,该终端设备可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
本申请第六方面提供一种云设备,该云设备可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第二方面或第二方面的任意可能的实现方式中的方法。
本申请第七方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得终端设备执行上述第一方面或第一方面的任意可能的实现方式中的方法。
本申请第八方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得云设备执行上述第一方面或第一方面的任意可能的实现方式中的方法。
本申请第九方面提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第一方面或者第一方面的任一种可能的实现方式所提供的方法。
本申请第十方面提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第二方面或者第二方面的任一种可能的实现方式所提供的方法。
本申请第十一方面提供了一种芯片***,该芯片***包括处理器,用于支持终端设备实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片***还可以包括存储器,存储器,用于保存终端设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请第十二方面提供了一种芯片***,该芯片***包括处理器,用于支持云设备实现上述第二方面或第二方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片***还可以包括存储器,存储器,用于保存云设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请第十三方面提供一种数据同步***,包括云设备和至少一个终端设备,该终端设备为实现上述第一方面或第一方面任意一种可能的实现方式中所述方法的终端设备,所述云设备为实现上述第二方面或第二方面任意一种可能的实现方式所述方法的云设备。
其中,第三、第五、第七、第九和第十一方面或者其中任一种可能实现方式所带来的技术效果可参见第一方面或第一方面不同可能实现方式所带来的技术效果,此处不再赘述。
其中,第四、第六、第八、第十和第十二方面或者其中任一种可能实现方式所带来的技术效果可参见第二方面或第二方面不同可能实现方式所带来的技术效果,此处不再赘述。
本申请实施例提供的方案,终端设备和云设备在数据对象发生变化时,可以通过版本号管理、同步状态管理的方式确保异构数据库之间数据同步时的一致性。
附图说明
图1是本申请实施例提供的数据同步***的一实施例示意图;
图2是本申请实施例提供的数据同步***的另一实施例示意图;
图3是本申请实施例提供的数据同步的方法的一实施例示意图;
图4是本申请实施例提供的数据同步的方法的另一实施例示意图;
图5是本申请实施例提供的版本演进过程示意图;
图6是本申请实施例提供的数据同步***的一软件架构示意图;
图7是本申请实施例提供的数据同步***的另一软件架构示意图;
图8是本申请实施例提供的终端设备的一实施例示意图;
图9是本申请实施例提供的云设备的一实施例示意图;
图10是本申请实施例提供的终端设备的另一实施例示意图;
图11是本申请实施例提供的云设备的另一实施例示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供一种数据同步的方法,可以通过版本协商的方式确保异构数据库之间数据同步时的一致性。本申请实施例还提供了相应的设备。以下分别进行详细说明。
图1为本申请实施例提供的数据同步***的一实施例示意图。
如图1所示,本申请实施例提供的数据同步***的一实施例包括终端设备10A和云设备20,终端设备10A与云设备20通过网络通信连接。终端设备10A可以通过网络与云设备20进行数据同步,终端设备一般使用嵌入式数据库,云设备一般使用分布式数据库,所以终端设备的数据库与云设备的数据库是异构数据库。
图1中只示出了一个终端设备,实际上,异构数据库同步的***中可能涉及多个终端设备,如图2所示的数据同步***的另一实施例示意图。该数据库同步***包括终端设备10A、终端设备10B和云设备20,终端设备10A和终端设备10B与云设备20通过网络通信连接。
本申请实施例中的云设备可以是具有数据同步功能的资源集合,可以是一个独立的计算机设备,也可以是多个独立的计算机设备组成的集群。也可以是虚拟机((virtualmachine,VM)。
终端设备(也可以称为用户设备(user equipment,UE))是一种具有无线收发功能的设备,可以部署在陆地上,包括室内或室外、手持或车载;也可以部署在水面上(如轮船等);还可以部署在空中(例如飞机、气球和卫星上等)。所述终端可以是手机(mobilephone)、平板电脑(pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端、增强现实(augmented reality,AR)终端、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。
无论是有一个还是有多个终端设备与云设备进行数据同步,本申请实施例提供的数据同步的原理都是相同的。基于上述图1或图2所示的数据同步***,下面结合图3介绍本申请实施例提供的数据同步的方法。
如图3所示,本申请实施例提供的数据同步的方法的一实施例可以包括:
101、终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式。
第一存储格式是第一数据对象在终端中的存储形态,可以认为它是一条数据记录或一个数据结构。具体地,所述第一存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,用于存储所述第一数据对象的版本号的版本号字段,以及同步状态字段。
应用可以是通讯录、图库、名单管理等应用。
当应用是通讯录时,第一数据对象可以是联系人,第一字段的属性可以是联系人的姓名、座机号码、手机号码、座机号码、邮箱和住址等信息。
当应用是图库时,第一数据对象可以是图片,第一字段的属性可以是图片的长度、宽度、颜色和属性等信息。
当应用是名单管理时,以管理学生的信息为例,第一数据对象可以是学生信息,第一字段的属性可以是学生姓名、性别和年龄等信息。
每个数据对象都会对应一个主键,主键通常用于唯一标识一个数据对象。
对第一数据对象的操作可以包括***操作、更新操作、删除操作和查询操作等。其中,更新操作可以包括修改和部分删除。
下面描述第一存储格式的一个具体示例,以“学生”这个数据对象为例,其在终端设备中存储的格式如表1所示:
表1:学生数据对象的第一存储格式
Figure BDA0002246705220000111
该第一存储格式中将主键字段和例如用于描述第一数据对象的属性的姓名、性别和年龄这些字段统称为第一存储字段,这些字段通常是由应用开发者定义的。其中,姓名、性别和年龄都属于第一字段,或者叫属性字段,用于描述“学生”的各种属性。将版本号字段、用于描述第一存储字段中各值变化的字段、同步状态字段和删除指示字段统称为第二存储字段,也可以叫***字段,是为了进行端云数据同步专门设计的。第一存储字段和第二存储字段没有特别的含义,也可以不做归类处理。
上述表1中,其中,版本号用于标识第一数据对象的变化次数,版本号通常是单调递增的,版本号由云设备确定,终端设备初始使用的版本号可以是0,然后每次同步过程中会根据云设备反馈的结果进行版本号更新。可选地,可以通过“变化的字段”来描述第一存储字段中值发生变化的字段(changed_fields_map),例如,针对第一存储字段中的每个字段都用1个比特位来表示,以表1为例,如果第一存储字段包含的各个字段都没变化,则可以表示为0000,如果其中年龄有变化,可以表示为0001。其中同步状态可以用0来表示已同步完成,用1来表示需要同步,用2来表示正在同步,当然这里的0、1和2所表示的同步状态只是举例说明,具体表示方式不限于0、1和2这三种,与各自所对应的同步状态的对应关系也不限于上面所描述的对应关系。删除(deleted)指示字段表示是否删除,若执行删除操作,则该字段用true表示,当执行的不是删除操作,则该字段用false表示。当然,也可以用0表示非删除操作,用1表示删除操作,此处不做限定。
102、终端设备向云设备发送同步消息,相应地,云设备接收终端设备发送的同步消息。
所述同步消息中包括所述第一数据对象的主键。
103、云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式。
云设备会存储第一数据对象的一个副本,且云设备使用第二存储格式来存储第一数据对象。第二存储格式是第一数据对象在云设备中的存储形态,它是一条数据记录或一个数据结构。具体地,所述第二存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,以及用于存储所述第一数据对象的版本号的版本号字段;
对应于上述第一存储格式,还是以学生信息为例,第二存储格式可以参阅表2进行理解。
表2:学生数据对象的第二存储格式
Figure BDA0002246705220000121
该第一存储格式中将主键字段和例如用于描述第一数据对象的属性的姓名、性别和年龄这些字段统称为第一存储字段。将版本号字段和删除指示字段统称为第二存储字段。第一存储字段和第二存储字段没有特别的含义,也可以不做归类处理。
上述表2中,各字段的相应含义可以参阅表1部分的相应解释进行理解。
104、云设备向终端设备发送同步响应消息,相应地,终端设备接收云设备发送的同步响应消息。
所述同步响应消息包括所述第一对象数据的主键。
105、终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
本申请实施例提供的方案,终端设备和云设备在数据对象发生变化时,可以通过版本号管理、同步状态管理的方式确保异构数据库之间数据同步时的一致性。
上述步骤101、103和105的具体执行过程与当对第一数据对象的操作是相关的,因为查询过程不涉及到数据对象的更新,所以查询操作不会做数据同步,其他的***操作、更新操作和删除操作都会涉及到数据同步的过程,下面分别依据***操作、更新操作和删除操作介绍本申请实施例提供的数据同步的方法。
1、***操作。
对第一数据对象的操作为***操作时,上述步骤101可以包括:
所述终端设备响应于应用对第一数据对象的所述***操作,将所述***操作包含的所述第一数据对象的主键和属性信息分别填充到所述第一存储格式的主键字段和第一字段;
所述终端设备将所述第一存储格式的版本号字段的值修改为第一版本号;
所述终端设备将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态。
该过程结合上述的表1的描述可以表示为表3所示的形式:
表3:学生数据对象的第一存储格式
Figure BDA0002246705220000131
结合上述表3,主键为1,第一字段的属性信息包括王海、男和18岁。因为是***操作,版本号可以从0开始,因为第一存储字段中的四个字段都发生了变化,所以changed_fields_map标记为1111,sync_status为1表示需要同步或待同步,删除指示字段标记为false表示不是删除操作。
在执行步骤102时,该示例中同步消息的第一数据对象的主键为主键1,同步消息还包括王海、男和18岁的第一字段的属性信息,也还可以包括***操作的指示。上述sync_status发生变化,由需要同步变成正在同步,则终端设备中存储的表3所示例的数据对象可表示为表4。
表4:学生数据对象的第一存储格式
Figure BDA0002246705220000132
云设备接收到同步消息后,上述步骤103可以包括:
所述云设备基于所述同步消息,将所述第一数据对象的主键和属性信息分别填充到所述第二存储格式的主键字段和第一字段;
所述云设备为所述第一数据对象确定第二版本号,并将所述第二版本号填充到所述第二存储格式的版本号字段中。
还可以包括:所述云设备根据所述***操作的指示在所述第二存储格式的删除指示字段中填充删除指示。若云设备中已经存储有一个学生杜华华,该学生的当前版本号是1,则终端设备同步过来的第一数据对象,也就是学生王海的版本号就是2,云设备对所有学生的版本号是统一管理的,可以是从1开始按照每次修改加1的方式管理版本号。
该过程结合上述的表2的描述可以表示为表5所示的形式:
表5:学生数据对象的第二存储格式
Figure BDA0002246705220000141
结合上述表5可知,云设备通过主键1确定未存储表4中所示例的第一数据对象,则云设备将主键1和第一字段的属性信息王海、男和18岁填充到第二存储格式的第一字段中。云设备为该主键为1的数据对象的本次存储确定第二版本号,例如第二版本号为2,删除指示字段中填充非删除操作信息False。上述表3至表5的示例中,第一版本号为0,第二版本号为2。当然,这里的版本号只是举例,不应将其理解为是对版本号表示的限定。
云设备向终端设备发送的同步响应消息中包括第一数据对象的主键和第二版本号。上述步骤105可以包括:所述终端设备将所述第一存储格式的版本号字段的值由所述第一版本号修改为所述第二版本号,并将所述同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
还是延续表4的示例,第一版本号0被修改为第二版本号2后,同时sync_status也需要由2修改为0表示同步完成。changed_fields_map也需修改为0000,该示例的结果可以参阅表6进行理解。
表6:学生数据对象的第一存储格式
Figure BDA0002246705220000142
该***操作过程,通过版本号协商以及数据同步过程的变化及时修改第二存储字段中的信息,从而保证了端云数据的一致性。
2、更新操作。
对第一数据对象的操作为更新操作时,上述步骤101的过程可以包括:
所述终端设备响应于应用对第一数据对象的更新操作,更新所述第一存储格式的第一字段的值;
所述终端设备将所述第一存储格式的版本号字段的值修改为第一版本号;
所述终端设备将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态。
该过程在表6的基础上可以表示为表7所示的形式:
表7:学生数据对象的第一存储格式
Figure BDA0002246705220000151
结合上述表7,终端设备中主键为1的数据对象中的年龄被更新,由18岁更新为23岁。终端设备需要向云设备同步该修改的第一字段的属性信息。因为只有年龄字段被修改,所以changed_fields_map表示为0001,sync_status由0修改为1。另外,在发送同步消息时,该sync_status会由1修改为2,例如可以参阅表4中的该sync_status字段进行理解。
在步骤102的同步消息中的第一主键为主键1,同步消息还包括版本号2和年龄23岁。云设备接收到该同步消息后,执行步骤103可以包括:
所述云设备根据所述第一数据对象的主键确定所述第二存储格式的版本号字段中的版本号;
当所述第一版本号与所述第二存储格式的版本号字段中的版本号相同时,则所述云设备将所述第一数据对象的属性信息更新到所述第二存储格式中的第一字段;
所述云设备为所述第一数据对象确定第二版本号,并将所述第二版本号更新到所述第二存储格式的版本号字段中。所述第二存储字段中的删除指示字段为不删除指示。
结合上述表7的示例,云设备会使用主键1确定云设备中该数据对象的版本号是2,因为同步消息中的版本号也是2,端云两侧的版本号相同,不存在版本号冲突,则将表5中的年龄字段18修改为23,并确定新的版本号3,删除指示字段因为是更新操作,所以还是标记为false。从而得到表8所示的内容。
表8:学生数据对象的第二存储格式
Figure BDA0002246705220000152
因为延续了上面***操作的示例,所以该更新操作中的第一版本号为2,第二版本号为3。新的版本号可以是在上一版的版本号基础上加1得到的。
云设备同步得到表8后,会在同步响应中携带版本号3和主键1,这样终端设备就可以更新表7,从而得到与云设备数据一致的表9。
表9:学生数据对象的第一存储格式
Figure BDA0002246705220000161
表8和表9是端云两侧的版本号不存在冲突时得到的,也可能端云两侧的版本号存在冲突,下面进行介绍。
若云设备中在表5的基础上,年龄字段的信息被修改过,例如修改为如下表10的所示内容。
表10:学生数据对象的第二存储格式
Figure BDA0002246705220000162
在表5的基础上,云设备中的年龄字段由18被修改为25,云设备会因为本次修改而调整版本号,原来表5的版本号是2,加1,则版本号修改为3。
步骤103的同步消息中携带主键1、版本号2和年龄23。云设备通过比较版本号确认两个版本号不同,存在版本号冲突。当存在版本号冲突时可以通过两种方式来解决,一种是以云端数据为准,一种是将云端数据返回给终端设备,在终端设备中解决该冲突。
当以云端数据为准时,当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,所述云设备将所述第二存储格式中第一字段的值添加到所述同步响应消息中。
也就是说,云设备会将年龄25岁、主键1和版本号3添加到同步响应消息中。
终端设备接收到同步响应消息后,所述终端设备基于所述第二存储格式中第一字段的值,更新所述第一存储格式中所述第一字段的值。
也就是说,终端设备会根据主键1查找到对应的第一数据对象后,将年龄字段中的23岁修改为25岁,将版本号由2修改为3,得到表11所示的内容。
表11:学生数据对象的第一存储格式
Figure BDA0002246705220000163
因为终端设备修改了年龄字段,所以需要再进行同步,本次同步消息中会携带年龄25,版本号3和主键1。由于这次端云两侧针对主键1的数据对象的版本号都是3,不存在版本号冲突,所以,云设备会将云设备的版本号修改为4,然后将版本号4同步给终端设备。最后,云设备会得到表12所示的结果,终端设备会得到表13所示的结果。
表12:学生数据对象的第二存储格式
Figure BDA0002246705220000171
表13:学生数据对象的第一存储格式
Figure BDA0002246705220000172
表11至表13的结果是以云端数据为准来解决冲突的,下面介绍由终端设备来解决冲突的情况。
终端设备中的应用可以通过注册回调函数(registerConflictCallBack)来解决冲突。
当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,所述云设备将所述第二存储格式中第一字段的值添加到所述同步响应消息中。
延续上面的示例,云设备会将主键1,年龄25和版本号3添加到同步响应消息中。
所述终端设备根据所述第一存储格式中第一字段的值和所述第二存储格式中第一字段的值确定所述第一字段的更新值。该过程可以是终端设备中可以通过注册回调函数,将该冲突事件通过应用发送给用户,由用户来确定第一字段的更新值,也可以不发送给用户,由终端设备的内部冲突解决机制来确定第一字段的更新值。例如:终端设备确定的第一字段的更新值是24。
所述终端设备使用所述第一字段的更新值修改所述第一存储格式中第一字段的值;
所述终端设备向所述云设备发送所述主键、所述第一字段的更新值和所述第二版本号,以用于所述云设备使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;
所述云设备接收所述终端设备发送的所述第一数据对象的主键、所述第一字段的更新值和所述第二版本号;
所述云设备确定所述第二版本号与所述第二存储格式的版本号字段中的版本号相同,则使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;
所述云设备为所述第一数据对象确定第三版本号,所述第三版本号与所述第一版本号和所述第二版本号不同;
所述云设备向所述终端设备发送所述第三版本号和所述第一数据对象的主键。
所述终端设备接收所述云设备发送的第三版本号和所述主键;
所述终端设备将所述主键对应的第一存储格式的版本号字段由所述第二版本号修改为所述第三版本号。
终端设备确定的第一字段的更新值是24后,会用24替换终端设备中的年龄23,然后向云设备发送主键1、年龄24和版本号3,云设备接收到这些数据后,根据主键1确定云设备中的版本号,因为端云两侧的版本号都是3,不存在版本号冲突,然后修改年龄数据,用24替换25,并生成新的版本号4,将该版本号4再同步回终端设备,终端设备中使用版本号4替换版本号3。最后,云设备会得到表14所示的结果,终端设备会得到表15所示的结果。
表14:学生数据对象的第二存储格式
Figure BDA0002246705220000181
表15:学生数据对象的第一存储格式
Figure BDA0002246705220000182
该更新操作过程,通过版本号协商以及数据同步过程的变化及时修改第二存储字段中的信息,从而保证了端云数据的一致性。
当有两个终端设备向云设备同步时的冲突解决方案可以有:
冲突解决支持默认冲突解决和定制冲突解决。默认冲突解决为Last write win和Delete win。Last write win就是以云侧为准。当遇到删除的情况时以删除为准,用英文可以表述为Delete win,就是Delete总是win。Last write win和Delete win有冲突时,采用Delete。定制冲突解决是把冲突的数据以回调的方式通知给终端设备,在终端设备中解决该冲突。两个设备同步时的冲突解决可以参阅下面冲突解决策略解释表进行理解。
表16:冲突解决策略解释表进行理解
Figure BDA0002246705220000191
3、删除操作。
对第一数据对象的操作为删除操作时,所述第一数据对象在所述终端设备中的第一存储格式还包括删除指示字段。步骤101可以包括:所述终端设备响应于应用对第一数据对象的删除操作,将所述第一存储格式中的删除指示字段的值修改为第三值,以指示删除所述第一数据对象。
步骤103可以包括:所述云设备将所述第二存储格式中的删除指示字段的值修改为用于指示删除所述第一数据对象的值。
对应地,所述同步消息还包括删除操作的指示,步骤105可以包括:所述终端设备删除所述第一数据对象在所述终端设备中的第一存储格式。
执行删除操作时,云设备会将删除指示字段设置为true。该种可能的示例可以参阅表17进行理解。
表17:学生数据对象的第二存储格式
Figure BDA0002246705220000201
终端设备中会删除上述例如表6的整条数据对象。
另外,上述步骤104的同步响应消息中还可以包括云设备中存储的数据对象的最大版本号。
当同步响应消息中包括云设备中存储的数据对象的最大版本号时,如图4所示,本申请实施例提供的数据同步的方法还可以包括:
201、终端设备比较同步基线和所述最大版本号。
终端设备中会维护用于与云设备同步的同步基线,该同步基线指示运设备修改且同步至终端设备的数据对象的最大版本号,该同步基线会根据终端设备和云设备之间的数据同步状态动态更新。比如在初始状态,同步基线为所述终端设备中数据对象的初始版本号;当终端设备与云设备完成一次数据同步后,该同步基线为当前已同步至终端设备的数据对象的版本号;当终端设备与云设备完成多次数据同步后,该同步基线上一次与所述同步基线做比较的版本号。该同步基线可以通过一个表实现,表包括两个字段,一个字段是数据库名字(databasename)字段,类型为string。另外一个字段是基线(watermark)字段,类型为int,同步基线的初始值可以为0。
若云设备中存储的数据数据对象可以参阅表18为例进行理解。
表18:学生数据对象的第二存储格式
Figure BDA0002246705220000202
以表18为例,若云设备中存储上述表18的数据对象时,云设备中存储的数据对象的最大版本号是2。
202、当所述同步基线和所述最大版本号不相等时,所述终端设备向所述云设备发送第一同步请求,相应地,所述云设备接收所述终端设备发送的第一同步请求。
所述第一同步请求中包括所述同步基线。
同步基线0和最大版本号2不相等,则终端设备在第一同步请求中携带同步基线0。
203、云设备确定版本号高于所述同步基线的数据对象。
云设备以表18中的内容为参考,高于同步基线0的数据对象有主键1对应的第一数据对象和主键2对应的第二数据对象。
204、云设备向所述终端设备发送所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号。相应地,终端设备接收所述云设备发送的所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号。
表18的场景中,第二版本号为2,第二数据对象的主键为2,该第二数据对象的主键对应的版本号为1。
205、终端设备根据所述第二数据对象的主键确定未同步所述第二数据对象。
终端设备中存储有表6对应的数据对象,因此,终端设备可以确定终端设备中未存储第二数据对象(主键2、杜华华、女和20岁)这些信息。
206、终端设备向所述云设备发送第二同步请求,相应地,所述云设备接收所述终端设备发送的第二同步请求。
当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号相同时,所述第二同步请求包括所述第二数据对象的主键;该场景中,第二同步请求中包括主键2。
当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,所述第二同步请求包括所述第二数据对象的主键和第一数据对象的主键;该场景中,第二同步请求中包括主键2和主键1。
207、云设备根据所述第二数据对象的主键确定所述第二数据对象。
云设备根据主键2可以确定第二数据对象(主键2、杜华华、女和20岁)。
当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,云设备根据所述第二数据对象的主键确定所述第二数据对象以及根据所述第一数据对象的主键确定所述第一数据对象的第二存储格式中第一字段的值。
208、云设备向所述终端设备发送所述第二数据对象,相应地,终端设备接收所述第二数据对象。
终端设备同步上述第二数据对象后,会得到表19所示例的内容。
表19:学生数据对象的第一存储格式
Figure BDA0002246705220000211
当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,云设备向所述终端设备发送所述第二数据对象和第一数据对象的第二存储格式中第一字段的值。
209、终端设备将所述同步基线调整到所述最大版本号。
同步结束后,终端设备将同步基线由0调整到2。
该实施例中,终端设备会及时将同步基线调整到最大版本号,例如将同步基线由0调整到2,这样就可以避免下次云设备发送最新的最大版本号后会重复请求已存储的数据对象。
另外,本申请实施例中,在同步之前,终端设备与所述云设备进行所述应用的版本协商。终端设备向所述云设备发送所述应用的版本信息。云设备接收所述终端设备发送的应用的版本信息;所述云设备根据所述应用的版本信息确定所述第一数据对象在所述终端设备中的所述第一存储格式。
需要说明的是,终端设备中的第一存储格式与云设备中的第二存储格式的版本必须基于同一个历史进行演进。该演进过程可以参阅图5进行理解。终端设备的第一存储格式必须在云设备中先创建和升级。存储格式也可以称为Schema,每个应用版本都会对应一个Schema版本。因此,通过应用版本的协商就可以确定使用哪个版本的Schema,也就是使用哪个版本的存储格式,不同版本的存储格式所包含的第一存储字段和第二存储字段中的字段信息不相同。
为了便于理解,下面以应用是通讯录的场景为例,描述本申请实施例所提供的数据同步的过程。
该通讯录场景中,终端设备以手机为例,云设备以服务器为例。用户通过通讯录创建一个新的联系人,这条新的联系人记录为一个数据对象。在创建一个数据对象时,该数据对象会被分配一个主键。该场景中,手机所响应的通讯录的操作为***操作,那么会为该新的联系人分配一个主键,例如为:主键1。***的第一字段的属性信息例如可以是:姓氏:王,名:海,公司:A贸易公司,电话:13156004789。那么该场景中的主键1和***的第一字段的属性信息会存储在第一存储格式的主键字段和第一字段中,也就是上述表格中的第一存储字段中,该第一存储格式还包括第二存储字段,关于第一存储格式、第一存储字段和第二存储字段的相关解释可以参阅前述实施例中的描述进行理解。该场景中***的该新的联系人在手机中的存储形式可以参阅上述实施例中***操作的相关表的示例进行理解。手机会向服务器发送同步消息,该同步消息中会包括主键1、王、海、A贸易公司、13156004789、版本号0和***操作的指示。服务器接收到该同步消息后,会将上述信息填充到第二存储格式的第一存储字段中,并生成一个新的版本号,例如:版本号1。服务器会将版本号1填充到第二存储字段的版本号字段中,并根据***操作的指示将第二存储字段中的删除指示字段填充不删除指示,例如:填充false。然后,服务器会向手机发送同步响应消息,该同步响应消息中包括主键1和版本号1。手机将该条数据对象的版本号从0修改为1,并修改例如表3中的changed_fields_map和sync_status字段。
还是结合上述通讯录的场景,当用户要修改王海这条联系人记录时,手机会响应该更新操作,例如:将A贸易公司修改为B贸易公司,电话修改为13200005689。那么该场景中手机会在王海这条数据对象的第一存储格式的第一字段中将公司字段和电话字段修改为更新后的值,关于修改操作的手机中的操作过程可以参阅上述实施例中更新操作的相关示例进行理解。手机向服务器发送的同步消息中会包括主键1、B贸易公司、13200005689和版本号1。服务器接收到该同步消息后,会使用主键1查找到王海这一条数据对象,然后将该数据对象中第一存储字段中的公司字段和电话字段的信息分别修改为B贸易公司和13200005689。服务器还会为该条数据对象生成一个新的版本号,例如:版本号2,然后服务器向手机发送同步响应消息,该同步响应消息中包括主键1和版本号2,手机使用主键1查找到王海这条数据对象后,会将版本号1修改为版本号2,并修改例如表9中的changed_fields_map和sync_status字段。
还是结合上述通讯录的场景,当用户要删除王海这条联系人记录时,手机会响应该删除操作,将手机中该条数据对象的第一存储格式中的deleted字段修改为false。然后手机向服务器发送同步消息,该同步消息中包括主键1和删除操作的指示。服务器会使用主键1查找到这条王海数据对象,然后将王海这条数据对象的第二存储格式中的deleted字段修改为false。服务器向手机发送同步响应消息,该同步响应消息中包括主键1,手机使用主键1查找到这条王海数据对象,并删除该条数据对象。
从软件架构上来看,上述数据同步的***架构也可以参阅图6进行理解。
如图6所示,终端设备30的软件架构包括端侧应用、端侧数据对象管理组件、端侧数据库***接口和端侧数据库***。云设备40的软件架构包括云侧应用、云侧数据对象管理组件、云侧数据库***接口和云侧数据库***。
端侧应用与端侧数据对象管理组件进行交互,端侧数据对象管理组件可以通过端侧数据库***接口与端侧数据库***交互。云侧应用与云侧数据对象管理组件进行交互,云侧数据对象管理组件可以通过云侧数据库***接口与云侧数据库***交互。端侧数据对象管理组件和云侧数据对象管理组件之间通信可以实现端云之间的交互。
端侧数据对象管理组件以嵌入式组件的方式给应用使用,云侧数据对象管理组件以客户端/服务器的方式给应用使用。上述方法实施例中所描述的终端设备的操作和功能,可以由端侧数据对象管理组件来实现,上述方法实施例中所描述的云设备的操作和功能,可以由云侧数据对象管理组件来实现。端侧数据对象管理组件和云侧数据对象管理组件均可由软件实现。终端设备和云设备上的处理器通过运行软件来实现相应的功能。
图7示出了端侧数据对象管理组件和云侧数据对象管理组件的一种功能划分方式。如图7所示,端侧数据对象管理组件可以包括端侧数据对象接口、端侧数据对象存储组件、端侧数据对象同步组件和端侧通信组件。云侧数据对象管理组件可以包括云侧数据对象接口、云侧数据对象存储组件、云侧数据对象同步组件和云侧通信组件。
端侧数据对象接口:端侧数据对象管理组件的接口,端侧应用通过该接口操作数据对象。包括数据对象定义接口,数据对象增加,修改,删除,查询接口。
端侧数据对象存储组件:负责对象模型到存储模型的映射,把对象的操作转换为对底层数据库***的操作。
端侧数据对象同步组件:负责跟踪端侧数据的改变,数据同步状态的组件,同步位置的组件和端侧冲突回调解决。
端侧通信组件:负责建立端侧到云侧的通信通道,端侧到云侧的数据传输。
云侧数据对象接口:云侧数据对象管理组件的接口,云侧应用通过该接口操作数据对象。包括数据对象定义接口,数据对象增加,修改,删除,查询接口。
云侧数据对象存储组件:负责云侧对象模型到存储模型的映射,把对象的操作转换为对底层数据库***的操作。
云侧数据对象同步组件:负责云侧数据的版本组件和云侧的冲突解决。
云侧通信组件:负责监听端侧的连接,端云的数据传输。
以上描述了数据同步***和数据同步的方法,下面结合附图介绍本申请实施例提供的终端设备和云设备。
如图8所示,本申请实施例提供的终端设备50的一实施例可以包括:
处理单元501,用于响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,所述第一存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,用于存储所述第一数据对象的版本号的版本号字段,以及同步状态字段;
发送单元502,用于向云设备发送同步消息,所述同步消息中包括所述第一数据对象的主键;
接收单元503,用于接收所述云设备基于所述同步消息对所述第一数据对象在所述云设备中的第二存储格式修改后发送的同步响应消息,所述同步响应消息包括所述主键;
所述处理单元501,还用于响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
本申请实施例提供的方案,终端设备和云设备在数据对象发生变化时,可以通过版本号管理、同步状态管理的方式确保异构数据库之间数据同步时的一致性。
一种可能的实施例中,所述操作为***操作;
所述处理单元501用于:
响应于应用对第一数据对象的所述***操作,将所述***操作包含的所述第一数据对象的主键和属性信息分别填充到所述第一存储格式的主键字段和第一字段;
将所述第一存储格式的版本号字段的值修改为第一版本号;
将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态;
对应地,所述同步响应消息中还包括第二版本号,所述处理单元501,用于将所述第一存储格式的版本号字段的值由所述第一版本号修改为所述第二版本号,并将所述同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
一种可能的实施例中,所述操作为更新操作,所述处理单元501用于:
响应于应用对第一数据对象的更新操作,更新所述第一存储格式的第一字段的值;
将所述第一存储格式的版本号字段的值修改为第一版本号;
将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态;
对应地,所述同步响应消息中还包括第二版本号,所述处理单元501,用于将所述第一存储格式的版本号字段由所述第一版本号修改为所述第二版本号,并将所述第一存储格式中的同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
一种可能的实施例中,所述同步响应消息中还包括所述第二存储格式中第一字段的值;所述处理单元501,还用于基于所述第二存储格式中第一字段的值,更新所述第一存储格式中所述第一字段的值。
一种可能的实施例中,所述同步响应消息中还包括所述第二存储格式中第一字段的值;
所述处理单元501,还用于根据所述第一存储格式中第一字段的值和所述第二存储格式中第一字段的值确定所述第一字段的更新值;使用所述第一字段的更新值修改所述第一存储格式中第一字段的值;
所述发送单元502,还用于向所述云设备发送所述主键、所述第一字段的更新值和所述第二版本号,以用于所述云设备使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;
所述接收单元503,还用于接收所述云设备发送的第三版本号和所述主键;
所述处理单元501,还用于将所述主键对应的第一存储格式的版本号字段由所述第二版本号修改为所述第三版本号。
一种可能的实施例中,所述操作为删除操作,所述第一数据对象在所述终端设备中的第一存储格式还包括删除指示字段,
所述处理单元501,用于响应于应用对第一数据对象的删除操作,将所述第一存储格式中的删除指示字段的值修改为第三值,以指示删除所述第一数据对象;
对应地,所述同步消息还包括删除操作的指示,所述处理单元501,用于删除所述第一数据对象在所述终端设备中的第一存储格式。
一种可能的实施例中,所述同步响应消息还包括所述云设备中存储的数据对象的最大版本号;
所述处理单元501,还用于比较同步基线和所述最大版本号,所述同步基线为所述终端设备中数据对象的初始版本号或者上一次与所述同步基线做比较的版本号;
所述发送单元502,还用于当所述同步基线和所述最大版本号不相等时,向所述云设备发送第一同步请求,所述第一同步请求中包括所述同步基线;
所述接收单元503,还用于接收所述云设备发送的所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号;
所述处理单元501,还用于根据所述第二数据对象的主键确定未同步所述第二数据对象;
所述发送单元502,还用于当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号相同时,向所述云设备发送第二同步请求,所述第二同步请求包括所述第二数据对象的主键;或者,当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,则向所述云设备发送第二同步请求,所述第二同步请求包括所述第二数据对象的主键和所述第一数据对象的主键;
所述接收单元503,还用于当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号相同时,接收所述第二数据对象;或者,当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,接收所述第二数据对象和所述第二存储格式中第一字段的值;
所述处理单元501,还用于将所述同步基线调整到所述最大版本号。
一种可能的实施例中,所述发送单元502,还用于向所述云设备发送所述应用的版本信息,所述应用的版本信息用于所述云设备确定所述第一数据对象在所述终端设备中的第一存储格式。
需要说明的是,上述终端设备50的各模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
如图9所示,本申请实施例提供的云设备60的一实施例可以包括:
接收单元601,用于接收终端设备发送的同步消息,所述同步消息中包括第一数据对象的主键,所述第一数据对象在所述终端设备中以第一存储格式存储;
处理单元602,用于基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,所述第二存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,以及用于存储所述第一数据对象的版本号的版本号字段;
发送单元603,用于向所述终端设备发送同步响应消息,所述同步响应消息包括所述主键,所述同步响应消息用于所述终端设备对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
本申请实施例提供的方案,终端设备和云设备在数据对象发生变化时,可以通过版本号管理、同步状态管理的方式确保异构数据库之间数据同步时的一致性。
一种可能的实施例中,所述同步消息还包括所述第一数据对象的属性信息,所述处理单元602用于:
基于所述同步消息,将所述第一数据对象的主键和属性信息分别填充到所述第二存储格式的主键字段和第一字段;
为所述第一数据对象确定第二版本号,并将所述第二版本号填充到所述第二存储格式的版本号字段中。
一种可能的实施例中,所述同步消息还包括所述第一版本号和所述第一数据对象的属性信息,所述处理单元602用于:
根据所述第一数据对象的主键确定所述第二存储格式的版本号字段中的版本号;
当所述第一版本号与所述第二存储格式的版本号字段中的版本号相同时,则将所述第一数据对象的属性信息更新到所述第二存储格式中的第一字段;
为所述第一数据对象确定第二版本号,并将所述第二版本号更新到所述第二存储格式的版本号字段中。
一种可能的实施例中,所述处理单元602还用于:
当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,所述云设备将所述第二存储格式中第一字段的值添加到所述同步响应消息中。
一种可能的实施例中,所述处理单元602,还用于当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,将所述第二存储格式中第一字段的值添加到所述同步响应消息中;
所述接收单元601,还用于接收所述终端设备发送的所述第一数据对象的主键、所述第一字段的更新值和所述第二版本号;
所述处理单元602,还用于确定所述第二版本号与所述第二存储格式的版本号字段中的版本号相同,则使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;为所述第一数据对象确定第三版本号,所述第三版本号与所述第一版本号和所述第二版本号不同;
所述发送单元603,还用于向所述终端设备发送所述第三版本号和所述第一数据对象的主键,以用于所述终端设备将所述主键对应的第一存储格式的版本号字段由所述第二版本号修改为所述第三版本号。
一种可能的实施例中,所述第一数据对象在所述云设备中的第二存储格式还包括删除指示字段,所述同步消息还包括删除操作的指示,
所述处理单元602,用于将所述第二存储格式中的删除指示字段的值修改为用于指示删除所述第一数据对象的值。
一种可能的实施例中,所述同步响应消息中还包括所述云设备中存储的数据对象的最大版本号;
所述接收单元601,还用于接收所述终端设备发送的第一同步请求,所述第一同步请求中包括所述终端设备中维护的同步基线,所述同步基线为所述终端设备中数据对象的初始版本号或者所述终端设备中上一次与所述同步基线做比较的版本号;
所述处理单元602,还用于确定版本号高于所述同步基线的数据对象;
所述发送单元603,还用于向所述终端设备发送所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号;
所述接收单元601,还用于接收所述终端设备发送的第二同步请求,所述第二同步请求包括所述第二数据对象的主键;或者,所述第二同步请求包括所述第二数据对象的主键和所述第一数据对象的主键;
所述处理单元602,还用于根据所述第二数据对象的主键确定所述第二数据对象;或者,根据所述第二数据对象的主键确定所述第二数据对象以及根据所述第一数据对象的主键确定所述第一数据对象;
所述发送单元603,还用于向所述终端设备发送所述第二数据对象,或者,所述第二数据对象和所述第二存储格式中第一字段的值。
一种可能的实施例中,所述接收单元601,还用于接收所述终端设备发送的应用的版本信息;
所述处理单元602,还用于根据所述应用的版本信息确定所述第一数据对象在所述终端设备中的第一存储格式。
需要说明的是,上述云设备60的各模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
如图10所示,为本申请实施例的又一种设备的结构示意图,该设备为终端设备,该终端设备可以包括:处理器701(例如CPU)、存储器702、发送器704和接收器703;发送器704和接收器703耦合至处理器701,处理器701控制发送器704的发送动作和接收器703的接收动作。存储器702可能包含高速RAM存储器,也可能还包括非易失性存储器NVM,例如至少一个磁盘存储器,存储器702中可以存储各种指令,以用于完成各种处理功能以及实现本申请实施例的方法步骤。可选的,本申请实施例涉及的终端设备还可以包括:电源705、以及通信端口706中的一个或多个,图10中所描述的各器件可以是通过通信总线连接,也可以是通过其他连接方式连接,对此,本申请实施例中不做限定。接收器703和发送器704可以集成在终端设备的收发器中,也可以为终端设备上分别独立的收、发天线。通信总线用于实现元件之间的通信连接。上述通信端口706用于实现终端设备与其他外设之间进行连接通信。
在一些实施例中,终端设备中的处理器701可以执行图8中处理单元501执行的动作,终端设备中的接收器703可以执行图8中接收单元503执行的动作,终端设备中的发送器704可以执行图8中发送单元502执行的动作,其实现原理和技术效果类似,在此不再赘述。
本申请还提供了一种芯片***,该芯片***包括处理器,用于支持上述终端设备实现其所涉及的功能,例如,例如接收或处理上述方法实施例中所涉及的数据。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存终端设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
图11所示,为本申请的实施例提供的上述实施例中所涉及的云设备80的一种可能的逻辑结构示意图。云设备80包括:处理器801、通信端口802、存储器803以及总线804。处理器801、通信端口802以及存储器803通过总线804相互连接。在本申请的实施例中,处理器801用于对云设备80的动作进行控制管理,例如,处理器801用于执行图9中的处理单元602所执行的功能。通信端口802用于支持云设备80进行通信,可以执行图9中接收单元601和发送单元602所执行的功能。存储器803,用于存储云设备80的程序代码和数据。
其中,处理器801可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线804可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请还提供了一种芯片***,该芯片***包括处理器,用于支持上述云设备实现其所涉及的功能,例如,例如接收或处理上述方法实施例中所涉及的数据。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存终端设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的至少一个处理器执行该计算机执行指令时,设备执行上述图3至图7部分实施例所描述的方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备执行上述图3至图7部分实施例所描述的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。

Claims (32)

1.一种数据同步的方法,其特征在于,包括:
终端设备向云设备发送应用的版本信息,所述应用的版本信息用于所述云设备确定第一数据对象在所述终端设备中的第一存储格式;
所述终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,所述第一存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,用于存储所述第一数据对象的版本号的版本号字段,以及同步状态字段;
所述终端设备向所述云设备发送同步消息,所述同步消息中包括所述第一数据对象的主键;
所述终端设备接收所述云设备基于所述同步消息对所述第一数据对象在所述云设备中的第二存储格式修改后发送的同步响应消息,所述同步响应消息包括所述主键;
所述终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
2.根据权利要求1所述的方法,其特征在于,所述操作为***操作,所述终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,包括:
所述终端设备响应于应用对第一数据对象的所述***操作,将所述***操作包含的所述第一数据对象的主键和属性信息分别填充到所述第一存储格式的主键字段和第一字段;
所述终端设备将所述第一存储格式的版本号字段的值修改为第一版本号;
所述终端设备将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态;
对应地,所述同步响应消息中还包括第二版本号,所述终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作,包括:
所述终端设备将所述第一存储格式的版本号字段的值由所述第一版本号修改为所述第二版本号,并将所述同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
3.根据权利要求1所述的方法,其特征在于,所述操作为更新操作,所述终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,包括:
所述终端设备响应于应用对第一数据对象的更新操作,更新所述第一存储格式的第一字段的值;
所述终端设备将所述第一存储格式的版本号字段的值修改为第一版本号;
所述终端设备将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态;
对应地,所述同步响应消息中还包括第二版本号,所述终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作,包括:
所述终端设备将所述第一存储格式的版本号字段由所述第一版本号修改为所述第二版本号,并将所述第一存储格式中的同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
4.根据权利要求3所述的方法,其特征在于,所述同步响应消息中还包括所述第一数据对象在所述云设备中的第二存储格式中第一字段的值;所述方法还包括:
所述终端设备基于所述第二存储格式中第一字段的值,更新所述第一存储格式中所述第一字段的值。
5.根据权利要求3所述的方法,其特征在于,所述同步响应消息中还包括所述第二存储格式中第一字段的值,所述方法还包括:
所述终端设备根据所述第一存储格式中第一字段的值和所述第二存储格式中第一字段的值确定所述第一字段的更新值;
所述终端设备使用所述第一字段的更新值修改所述第一存储格式中第一字段的值;
所述终端设备向所述云设备发送所述主键、所述第一字段的更新值和所述第二版本号,以用于所述云设备使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;
所述终端设备接收所述云设备发送的第三版本号和所述主键;
所述终端设备将所述主键对应的第一存储格式的版本号字段的值由所述第二版本号修改为所述第三版本号。
6.根据权利要求1所述的方法,其特征在于,所述操作为删除操作,所述第一数据对象在所述终端设备中的第一存储格式还包括删除指示字段,所述终端设备响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,包括:
所述终端设备响应于应用对第一数据对象的删除操作,将所述第一存储格式中的删除指示字段的值修改为第三值,以指示删除所述第一数据对象;
对应地,所述终端设备响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作,包括:
所述终端设备删除所述第一数据对象在所述终端设备中的第一存储格式。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述同步响应消息还包括所述云设备中存储的数据对象的最大版本号;所述方法还包括:
所述终端设备比较同步基线和所述最大版本号,所述同步基线为所述终端设备中数据对象的初始版本号或者上一次与所述同步基线做比较的版本号;
当所述同步基线和所述最大版本号不相等时,所述终端设备向所述云设备发送第一同步请求,所述第一同步请求中包括所述同步基线;
所述终端设备接收所述云设备发送的所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号;
当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号相同时,所述终端设备根据所述第二数据对象的主键确定未同步所述第二数据对象,则向所述云设备发送第二同步请求,所述第二同步请求包括所述第二数据对象的主键;对应地,所述终端设备接收所述第二数据对象;
当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,所述终端设备根据所述第二数据对象的主键确定未同步所述第二数据对象,则向所述云设备发送第二同步请求,所述第二同步请求包括所述第二数据对象的主键和所述第一数据对象的主键;对应地,所述终端设备接收所述第二数据对象和所述第二存储格式中第一字段的值;
所述终端设备将所述同步基线调整到所述最大版本号。
8.一种数据同步的方法,其特征在于,包括:
云设备接收终端设备发送的应用的版本信息;
所述云设备根据所述应用的版本信息确定第一数据对象在所述终端设备中的第一存储格式;
云设备接收终端设备发送的同步消息,所述同步消息中包括第一数据对象的主键;
所述云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,所述第二存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,以及用于存储所述第一数据对象的版本号的版本号字段;
所述云设备向所述终端设备发送同步响应消息,所述同步响应消息包括所述主键,所述同步响应消息用于所述终端设备对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
9.根据权利要求8所述的方法,其特征在于,所述同步消息还包括所述第一数据对象的属性信息,所述云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,包括:
所述云设备基于所述同步消息,将所述第一数据对象的主键和属性信息分别填充到所述第二存储格式的主键字段和第一字段;
所述云设备为所述第一数据对象确定第二版本号,并将所述第二版本号填充到所述第二存储格式的版本号字段中。
10.根据权利要求8所述的方法,其特征在于,所述同步消息还包括所述第一版本号和所述第一数据对象的属性信息,所述云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,包括:
所述云设备根据所述第一数据对象的主键确定所述第二存储格式的版本号字段中的版本号;
当所述第一版本号与所述第二存储格式的版本号字段中的版本号相同时,则所述云设备将所述第一数据对象的属性信息更新到所述第二存储格式中的第一字段;
所述云设备为所述第一数据对象确定第二版本号,并将所述第二版本号更新到所述第二存储格式的版本号字段中。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,所述云设备将所述第二存储格式中第一字段的值添加到所述同步响应消息中。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,所述云设备将所述第二存储格式中第一字段的值添加到所述同步响应消息中;
所述云设备接收所述终端设备发送的所述第一数据对象的主键、所述第一字段的更新值和所述第二版本号;
所述云设备确定所述第二版本号与所述第二存储格式的版本号字段中的版本号相同,则使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;
所述云设备为所述第一数据对象确定第三版本号,所述第三版本号与所述第一版本号和所述第二版本号不同;
所述云设备向所述终端设备发送所述第三版本号和所述第一数据对象的主键,以用于所述终端设备将所述主键对应的第一存储格式的版本号字段由所述第二版本号修改为所述第三版本号。
13.根据权利要求8所述的方法,其特征在于,所述第一数据对象在所述云设备中的第二存储格式还包括删除指示字段,所述同步消息还包括删除操作的指示,所述云设备基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,包括:
所述云设备将所述第二存储格式中的删除指示字段的值修改为用于指示删除所述第一数据对象的值。
14.根据权利要求8-13任一项所述的方法,其特征在于,所述同步响应消息中还包括所述云设备中存储的数据对象的最大版本号;
所述云设备接收所述终端设备发送的第一同步请求,所述第一同步请求中包括所述终端设备中维护的同步基线,所述同步基线为所述终端设备中数据对象的初始版本号或者所述终端设备中上一次与所述同步基线做比较的版本号;
所述云设备确定版本号高于所述同步基线的数据对象;
所述云设备向所述终端设备发送所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号;
所述云设备接收所述终端设备发送的第二同步请求,所述第二同步请求包括所述第二数据对象的主键;或者,所述第二同步请求包括所述第二数据对象的主键和所述第一数据对象的主键;
所述云设备根据所述第二数据对象的主键确定所述第二数据对象;或者,根据所述第二数据对象的主键确定所述第二数据对象以及根据所述第一数据对象的主键确定所述第一数据对象;
所述云设备向所述终端设备发送所述第二数据对象,或者,所述第二数据对象和所述第二存储格式中第一字段的值。
15.一种终端设备,其特征在于,包括:
发送单元,用于向云设备发送应用的版本信息以及同步消息,所述应用的版本信息用于所述云设备确定第一数据对象在所述终端设备中的第一存储格式;所述同步消息中包括所述第一数据对象的主键;
处理单元,用于响应于应用对第一数据对象的操作,修改所述第一数据对象在所述终端设备中的第一存储格式,所述第一存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,用于存储所述第一数据对象的版本号的版本号字段,以及同步状态字段;
接收单元,用于接收所述云设备基于所述同步消息对所述第一数据对象在所述云设备中的第二存储格式修改后发送的同步响应消息,所述同步响应消息包括所述主键;
所述处理单元,还用于响应于所述同步响应消息,对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
16.根据权利要求15所述的终端设备,其特征在于,所述操作为***操作;
所述处理单元用于:
响应于应用对第一数据对象的所述***操作,将所述***操作包含的所述第一数据对象的主键和属性信息分别填充到所述第一存储格式的主键字段和第一字段;
将所述第一存储格式的版本号字段的值修改为第一版本号;
将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态;
对应地,所述同步响应消息中还包括第二版本号,所述处理单元,用于将所述第一存储格式的版本号字段的值由所述第一版本号修改为所述第二版本号,并将所述同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
17.根据权利要求15所述的终端设备,其特征在于,所述操作为更新操作,所述处理单元用于:
响应于应用对第一数据对象的更新操作,更新所述第一存储格式的第一字段的值;
将所述第一存储格式的版本号字段的值修改为第一版本号;
将所述第一存储格式的同步状态字段的值修改为第一值,以指示所述第一存储格式为待同步状态;
对应地,所述同步响应消息中还包括第二版本号,所述处理单元,用于将所述第一存储格式的版本号字段由所述第一版本号修改为所述第二版本号,并将所述第一存储格式中的同步状态字段的值修改为第二值,以指示所述第一存储格式为已完成同步状态。
18.根据权利要求17所述的终端设备,其特征在于,所述同步响应消息中还包括所述第二存储格式中第一字段的值;
所述处理单元,还用于基于所述第二存储格式中第一字段的值,更新所述第一存储格式中所述第一字段的值。
19.根据权利要求17所述的终端设备,其特征在于,所述同步响应消息中还包括所述第二存储格式中第一字段的值;
所述处理单元,还用于根据所述第一存储格式中第一字段的值和所述第二存储格式中第一字段的值确定所述第一字段的更新值;使用所述第一字段的更新值修改所述第一存储格式中第一字段的值;
所述发送单元,还用于向所述云设备发送所述主键、所述第一字段的更新值和所述第二版本号,以用于所述云设备使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;
所述接收单元,还用于接收所述云设备发送的第三版本号和所述主键;
所述处理单元,还用于将所述主键对应的第一存储格式的版本号字段由所述第二版本号修改为所述第三版本号。
20.根据权利要求15所述的终端设备,其特征在于,所述操作为删除操作,所述第一数据对象在所述终端设备中的第一存储格式还包括删除指示字段,
所述处理单元,用于响应于应用对第一数据对象的删除操作,将所述第一存储格式中的删除指示字段的值修改为第三值,以指示删除所述第一数据对象;
对应地,所述同步消息还包括删除操作的指示,所述处理单元,用于删除所述第一数据对象在所述终端设备中的第一存储格式。
21.根据权利要求15-20任一项所述的终端设备,其特征在于,所述同步响应消息还包括所述云设备中存储的数据对象的最大版本号;
所述处理单元,还用于比较同步基线和所述最大版本号,所述同步基线为所述终端设备中数据对象的初始版本号或者上一次与所述同步基线做比较的版本号;
所述发送单元,还用于当所述同步基线和所述最大版本号不相等时,向所述云设备发送第一同步请求,所述第一同步请求中包括所述同步基线;
所述接收单元,还用于接收所述云设备发送的所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号;
所述处理单元,还用于根据所述第二数据对象的主键确定未同步所述第二数据对象;
所述发送单元,还用于当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号相同时,向所述云设备发送第二同步请求,所述第二同步请求包括所述第二数据对象的主键;或者,当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,则向所述云设备发送第二同步请求,所述第二同步请求包括所述第二数据对象的主键和所述第一数据对象的主键;
所述接收单元,还用于当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号相同时,接收所述第二数据对象;或者,当所述终端设备上的第一数据对象的主键对应的版本号与所述第二版本号不相同时,接收所述第二数据对象和所述第二存储格式中第一字段的值;
所述处理单元,还用于将所述同步基线调整到所述最大版本号。
22.一种云设备,其特征在于,包括:
接收单元,用于接收终端设备发送的应用的版本信息和同步消息,所述同步消息中包括第一数据对象的主键;
处理单元,用于根据所述应用的版本信息确定所述第一数据对象在所述终端设备中的第一存储格式;以及基于所述同步消息,修改所述第一数据对象在所述云设备中的第二存储格式,所述第二存储格式包括:用于存储唯一标识所述第一数据对象的主键的主键字段,用于存储描述所述第一数据对象的属性的第一字段,以及用于存储所述第一数据对象的版本号的版本号字段;
发送单元,用于向所述终端设备发送同步响应消息,所述同步响应消息包括所述主键,所述同步响应消息用于所述终端设备对所述第一数据对象在所述终端设备中的所述第一存储格式执行修改操作。
23.根据权利要求22所述的云设备,其特征在于,所述同步消息还包括所述第一数据对象的属性信息,所述处理单元用于:
基于所述同步消息,将所述第一数据对象的主键和属性信息分别填充到所述第二存储格式的主键字段和第一字段;
为所述第一数据对象确定第二版本号,并将所述第二版本号填充到所述第二存储格式的版本号字段中。
24.根据权利要求22所述的云设备,其特征在于,所述同步消息还包括所述第一版本号和所述第一数据对象的属性信息,所述处理单元用于:
根据所述第一数据对象的主键确定所述第二存储格式的版本号字段中的版本号;
当所述第一版本号与所述第二存储格式的版本号字段中的版本号相同时,则将所述第一数据对象的属性信息更新到所述第二存储格式中的第一字段;
为所述第一数据对象确定第二版本号,并将所述第二版本号更新到所述第二存储格式的版本号字段中。
25.根据权利要求24所述的云设备,其特征在于,
所述处理单元,还用于当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,将所述第二存储格式中第一字段的值添加到所述同步响应消息中。
26.根据权利要求24所述的云设备,其特征在于,
所述处理单元,还用于当所述第一版本号与所述第二存储格式的版本号字段中的版本号不相同时,将所述第二存储格式中第一字段的值添加到所述同步响应消息中;
所述接收单元,还用于接收所述终端设备发送的所述第一数据对象的主键、所述第一字段的更新值和所述第二版本号;
所述处理单元,还用于确定所述第二版本号与所述第二存储格式的版本号字段中的版本号相同,则使用所述第一字段的更新值修改所述第二存储格式中第一字段的值;为所述第一数据对象确定第三版本号,所述第三版本号与所述第一版本号和所述第二版本号不同;
所述发送单元,还用于向所述终端设备发送所述第三版本号和所述第一数据对象的主键,以用于所述终端设备将所述主键对应的第一存储格式的版本号字段由所述第二版本号修改为所述第三版本号。
27.根据权利要求22所述的云设备,其特征在于,所述第一数据对象在所述云设备中的第二存储格式还包括删除指示字段,所述同步消息还包括删除操作的指示,
所述处理单元,用于将所述第二存储格式中的删除指示字段的值修改为用于指示删除所述第一数据对象的值。
28.根据权利要求22-27任一项所述的云设备,其特征在于,所述同步响应消息中还包括所述云设备中存储的数据对象的最大版本号;
所述接收单元,还用于接收所述终端设备发送的第一同步请求,所述第一同步请求中包括所述终端设备中维护的同步基线,所述同步基线为所述终端设备中数据对象的初始版本号或者所述终端设备中上一次与所述同步基线做比较的版本号;
所述处理单元,还用于确定版本号高于所述同步基线的数据对象;
所述发送单元,还用于向所述终端设备发送所述第一数据对象的主键和对应的第二版本号,以及第二数据对象的主键以及对应的版本号;
所述接收单元,还用于接收所述终端设备发送的第二同步请求,所述第二同步请求包括所述第二数据对象的主键;或者,所述第二同步请求包括所述第二数据对象的主键和所述第一数据对象的主键;
所述处理单元,还用于根据所述第二数据对象的主键确定所述第二数据对象;或者,根据所述第二数据对象的主键确定所述第二数据对象以及根据所述第一数据对象的主键确定所述第一数据对象;
所述发送单元,还用于向所述终端设备发送所述第二数据对象,或者,所述第二数据对象和所述第二存储格式中第一字段的值。
29.一种终端设备,其特征在于,包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,其特征在于,所述至少一个处理器执行所述指令,以实现权利要求1至7中任一项所述的方法的步骤。
30.一种云设备,其特征在于,包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,其特征在于,所述至少一个处理器执行所述指令,以实现权利要求8至14中任一项所述的方法的步骤。
31.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤,或者,该程序被处理器执行时实现权利要求8至14中任一项所述的方法的步骤。
32.一种数据同步***,其特征在于,包括:云设备和至少一个终端设备,所述终端设备为上述权利要求15-21任一项所述的终端设备,所述云设备为上述权利要求22-28任一项所述的云设备。
CN201911034072.7A 2019-10-24 2019-10-24 一种数据同步的方法及设备 Active CN110769061B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201911034072.7A CN110769061B (zh) 2019-10-24 2019-10-24 一种数据同步的方法及设备
PCT/CN2020/113117 WO2021077912A1 (zh) 2019-10-24 2020-09-03 一种数据同步的方法及设备
US17/727,250 US20220245143A1 (en) 2019-10-24 2022-04-22 Data Synchronization Method and Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911034072.7A CN110769061B (zh) 2019-10-24 2019-10-24 一种数据同步的方法及设备

Publications (2)

Publication Number Publication Date
CN110769061A CN110769061A (zh) 2020-02-07
CN110769061B true CN110769061B (zh) 2021-02-26

Family

ID=69334209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911034072.7A Active CN110769061B (zh) 2019-10-24 2019-10-24 一种数据同步的方法及设备

Country Status (3)

Country Link
US (1) US20220245143A1 (zh)
CN (1) CN110769061B (zh)
WO (1) WO2021077912A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110769061B (zh) * 2019-10-24 2021-02-26 华为技术有限公司 一种数据同步的方法及设备
CN111880956B (zh) * 2020-07-24 2023-12-05 北京达佳互联信息技术有限公司 一种数据同步方法和装置
CN112783581A (zh) * 2021-01-21 2021-05-11 上海哔哩哔哩科技有限公司 数据处理方法、装置
CN113448757B (zh) * 2021-08-30 2022-02-01 阿里云计算有限公司 消息处理方法、装置、设备、存储介质和***
CN114253944B (zh) * 2021-12-16 2022-10-04 深圳壹账通科技服务有限公司 数据库双向同步方法、装置和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102469144A (zh) * 2010-11-19 2012-05-23 中国电信股份有限公司 实现多个***通讯录数据融合的方法及***
CN102664871A (zh) * 2012-03-22 2012-09-12 北京息通网络技术有限公司 一种智能终端通讯录的处理方法
CN104065752A (zh) * 2014-07-11 2014-09-24 上海百步电子科技股份有限公司 终端间数据同步方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1852137A (zh) * 2005-07-20 2006-10-25 华为技术有限公司 一种实现客户端数据和服务器端数据同步的方法
CN101064630B (zh) * 2006-04-24 2011-09-21 华为技术有限公司 一种数据同步方法及***
US8078749B2 (en) * 2008-01-30 2011-12-13 Microsoft Corporation Synchronization of multidimensional data in a multimaster synchronization environment with prediction
US9614924B2 (en) * 2008-12-22 2017-04-04 Ctera Networks Ltd. Storage device and method thereof for integrating network attached storage with cloud storage services
CN102143194A (zh) * 2010-06-10 2011-08-03 华为技术有限公司 数据同步的方法、***、中间数据节点及终止数据节点
CN102761567A (zh) * 2011-04-26 2012-10-31 ***通信集团广东有限公司 信息同步方法、信息同步引擎及信息同步代理
US11200287B2 (en) * 2011-09-30 2021-12-14 Google Llc Global address list
CN103841167A (zh) * 2012-11-27 2014-06-04 ***通信集团公司 一种用户数据同步方法及设备
CN103873519B (zh) * 2012-12-14 2018-03-27 北京金山云网络技术有限公司 一种数据同步方法、客户端、服务器、终端和***
CN103064976B (zh) * 2013-01-14 2015-10-28 浙江水利水电学院 基于主动数据库技术的同异构dbms间数据交换方法
CN106973090A (zh) * 2017-03-20 2017-07-21 努比亚技术有限公司 一种终端、服务器和联系人同步方法
CN108259562B (zh) * 2017-12-11 2022-02-25 杭州品茗安控信息技术股份有限公司 一种基于多端点的数据同步方法及装置
US10567505B2 (en) * 2018-01-18 2020-02-18 Salesforce.Com, Inc. Methods and systems for session synchronization and sharing of applications between different user systems of a user
CN108536752B (zh) * 2018-03-13 2021-11-09 北京信安世纪科技有限公司 一种数据同步方法、装置和设备
CN110324385A (zh) * 2018-03-30 2019-10-11 杭州海康威视数字技术股份有限公司 数据同步方法及装置、分布式***
WO2020132143A1 (en) * 2018-12-19 2020-06-25 Tdo Software, Inc. Scheduling database system
CN110442564B (zh) * 2019-07-23 2022-02-08 福建天泉教育科技有限公司 增量数据校验方法、存储介质
US11334539B2 (en) * 2019-07-30 2022-05-17 Salesforce.Com, Inc. Change-protected database system
CN110769061B (zh) * 2019-10-24 2021-02-26 华为技术有限公司 一种数据同步的方法及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102469144A (zh) * 2010-11-19 2012-05-23 中国电信股份有限公司 实现多个***通讯录数据融合的方法及***
CN102664871A (zh) * 2012-03-22 2012-09-12 北京息通网络技术有限公司 一种智能终端通讯录的处理方法
CN104065752A (zh) * 2014-07-11 2014-09-24 上海百步电子科技股份有限公司 终端间数据同步方法

Also Published As

Publication number Publication date
CN110769061A (zh) 2020-02-07
US20220245143A1 (en) 2022-08-04
WO2021077912A1 (zh) 2021-04-29

Similar Documents

Publication Publication Date Title
CN110769061B (zh) 一种数据同步的方法及设备
CN105493077B (zh) 利用占位符的文件管理
WO2018219178A1 (zh) 数据同步方法、装置、服务器及存储介质
US8306948B2 (en) Global deduplication file system
EP3252592A1 (en) Method and device for storing and reading data
CN102349062A (zh) 用于跨设备和web服务使浏览器缓存同步的编程模型
MX2014011988A (es) Sistema de telemetria para un sistema de sincronizacion de nube.
CN113806301A (zh) 数据同步方法、装置、服务器及存储介质
CN114661681A (zh) 数据同步方法及相关设备
US11128622B2 (en) Method for processing data request and system therefor, access device, and storage device
CN116308344A (zh) 一种基于区块链的交易数据认证共识方法和***
WO2022022546A1 (zh) 一种移动分布式***数据同步的方法和设备
CN105593839A (zh) 分布式灾难恢复文件同步服务器***
KR101467583B1 (ko) 미디어-장치 컨텐츠에 대한 변화를 식별하기 위한 객체-기반 프로토콜 활용 방법 및 실체적인 기계-판독가능 매체
CN110958287B (zh) 操作对象数据同步方法、装置及***
US11507541B2 (en) Method to model server-client sync conflicts using version trees
EP3043268A1 (en) Path dynamic linking method, device and mobile terminal
CN112988879A (zh) 访问数据库的方法、***、装置、存储介质及处理器
CN115104295A (zh) 数据处理方法、装置、电子装置及存储介质
CN114328007B (zh) 一种容器备份还原方法、装置及其介质
CN116701526A (zh) 数据同步的方法及电子设备
CN111953722B (zh) 一种终端通讯录的同步方法及装置
CN115269530A (zh) 数据同步方法、电子设备及计算机可读存储介质
CN106407320B (zh) 文件处理方法、装置及***
CN117390078B (zh) 数据处理方法、装置、存储介质和计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant