CN116701526A - 数据同步的方法及电子设备 - Google Patents

数据同步的方法及电子设备 Download PDF

Info

Publication number
CN116701526A
CN116701526A CN202211546853.6A CN202211546853A CN116701526A CN 116701526 A CN116701526 A CN 116701526A CN 202211546853 A CN202211546853 A CN 202211546853A CN 116701526 A CN116701526 A CN 116701526A
Authority
CN
China
Prior art keywords
electronic device
data
serial number
application
operation data
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.)
Pending
Application number
CN202211546853.6A
Other languages
English (en)
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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211546853.6A priority Critical patent/CN116701526A/zh
Publication of CN116701526A publication Critical patent/CN116701526A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本申请提供了一种数据同步的方法及电子设备,涉及终端领域。本申请的数据同步的方法,应用于第一电子设备,第一电子设备与第二电子设备之间通过同步通道进行通信,该方法包括:第一电子设备响应于第一应用的数据同步指令,向第二电子设备发送第一请求,第一请求用于指示从第二电子设备中获取目标操作数据,目标操作数据包括:第二电子设备的第一应用相对于第一电子设备的第一应用新增的操作数据;第一电子设备接收第二电子设备发送的目标操作数据;第一电子设备对第一电子设备的第一应用的数据执行目标操作数据指示的操作。采用本申请中的方法,使得数据同步适用于移动设备之间,且数据同步无需进行全量同步,同步速度快。

Description

数据同步的方法及电子设备
技术领域
本申请涉及终端领域,尤其涉及一种数据同步的方法及电子设备。
背景技术
在数据库的应用中,经常需要将不同设备之间的数据进行同步。数据同步的方式可以通过服务器实现,例如,设备A可以将待同步的数据上传服务器,设备B从服务器下载需要的同步数据,完成数据同步。数据同步还可以使用数据同步应用,该数据同步应用根据产生的数据,使用私有协议进行全量传输数据。
然而,由于移动终端的厂家不同,通过服务器进行数据同步的方式不适用于各移动终端之间进行数据同步。而采用全量数据传输的方式,数据同步耗时长且浪费设备的资源。
发明内容
为了解决上述技术问题,本申请提供一种数据同步的方法及电子设备,使得数据同步适用于移动设备之间,且数据同步无需进行全量同步,同步速度快。
第一方面,本申请提供一种数据同步的方法,应用于第一电子设备,第一电子设备与第二电子设备之间通过同步通道进行通信,该方法包括:第一电子设备响应于第一应用的数据同步指令,向第二电子设备发送第一请求,第一请求用于指示从第二电子设备中获取目标操作数据,目标操作数据包括:第二电子设备的第一应用相对于第一电子设备的第一应用新增的操作数据,第二电子设备存储有第二电子设备的第一应用运行的操作数据;第一电子设备接收第二电子设备发送的目标操作数据;第一电子设备对第一电子设备的第一应用的数据执行目标操作数据指示的操作。
这样,第一电子设备和第二电子设备可以通过该同步通道同步数据,无需依赖中心设备(如服务器),更适合于移动设备之间的同步数据的场景。该第二电子设备将第一应用中新增的数据操作发送至第一电子设备,由于只需要同步新增的数据,提高了数据同步的速度。第一电子设备在数据库中写入新增的数据操作,可以确保无论数据发生何种变化,均可以被同步,避免两端的数据出现不同步的问题,同时第一电子设备和第二电子设备基于同一个应用程序的数据进行同步,相同应用在不同设备中的数据格式相同,也避免了在不同应用同步采用不同协议格式的问题。
根据第一方面,第一电子设备存储有第一序列号,第一序列号用于指示第一电子设备上一次同步第二电子设备的第一应用的操作数据的序列号;第二电子设备存储用于标识存储于第二电子设备的操作数据的序列号;在向第二电子设备发送第一请求之前,该方法还包括:获取第一序列号;向第二电子设备发送第二请求,第二请求用于指示获取第二序列号,第二序列号用于指示第二电子设备中最后存储的操作数据的序列号;接收第二电子设备发送的第二序列号;根据第一序列号和第二序列号,确定需要同步第二电子设备中第一应用的数据。
这样,第一电子设备存储有第一序列号,由于第一序列号用于指示上一次同步的操作数据的序列号,第二电子设备存储有每个操作数据的序列号,通过第一电子设备的第一序列号和第二电子设备中各操作数据的序列号,可以确定出该第一电子设备是否需要同步第二电子设备中的数据,例如,比较第二电子设备最后存储的操作数据的序列号是否与第一序列号相同,若相同,则无需进行数据同步,可以避免造成无效的数据同步,浪费资源。且在第一电子设备中仅需存储上一次同步的操作数据的序列号,不占用存储空间。
根据第一方面,根据第一序列号和所述第二序列号,确定需要同步第二电子设备中第一应用的数据,包括:当检测到第二序列号大于第一序列号时,确定需要同步第二电子设备中第一应用的数据,其中,第二电子设备中的序列号按照从小到大的顺序存储。这样,由于第二电子设备中操作数据的序列号按照从小到大的顺序排列,序列号越小表明存储的时间越早,因而当第二序列号大于第一序列号时,表明第二电子设备相较于第一电子设备有新增的数据,第一电子设备的第一应用需要进行数据同步。
根据第一方面,第二电子设备还存储有:第二序列号。这样,第二电子设备存储有第二序列号,使得获取第二序列号的速度快。
根据第一方面,第二电子设备还存储有:操作数据的第一存储位置信息以及第一存储位置信息与序列号之间的第一对应关系;在确定需要同步第二电子设备中第一应用的数据之后,且在向第二电子设备发送第一请求之前,该方法还包括:根据第一序列号和第二序列号,生成第一请求,以供第二电子设备根据第一序列号、第二序列号以及第一对应关系,获取大于第一序列号的各操作数据。这样,第一电子设备生成第一请求,可以包括第一序列号和第二序列号,或第一序列号。第二电子设备存储有每个操作数据的位置信息与序列号之间的第一对应关系,第二电子设备根据第一请求,获取第一序列号,第二电子设备根据第一序列号、第二序列号以及第一对应关系,可以查询到第二电子设备相对于第一电子设备新增的操作数据的存储位置,从而快速获取到第二电子设备相对于第一电子设备新增的操作数据。
根据第一方面,第二电子设备还存储有:每个操作数据的同步状态;同步状态用于指示操作数据是否被第一电子设备同步过。这样,第二电子设备存储有每个操作数据的同步状态,便于用户查询。
根据第一方面,第一电子设备对第一电子设备的第一应用的数据执行目标操作数据指示的操作,包括:按照从第一序列号至第二序列号的顺序,依次执行目标操作数据指示的操作;存储对第一应用的数据执行操作后获得的数据;更新第一序列号。这样,及时更新第一序列号,使得后续根据第一序列号可以准确确定是否需要同步第二电子设备的数据,以及在确定需要同步第二电子设备的操作数据的情况下,可以准确基于第一序列号,获取目标操作数据。
根据第一方面,同步通道包括蓝牙通道或局域网的传输通道。这样,同步通道可以是蓝牙通道或局域网的传输通道,无需额外建立其他的传输通道,便于第一电子设备和第二电子设备之间进行数据同步。
根据第一方面,在第一电子设备响应于第一应用的数据同步指令之前,该方法还包括:检测到第一电子设备的第一应用的用户账号与第二电子设备的第一应用的用户账号相同。这样,可以确保数据同步的安全性。
根据第一方面,在第一电子设备响应于第一应用的数据同步指令之前,该方法还包括:检测到第一电子设备的第一应用的用户账号与第二电子设备的第一应用的用户账号相同,且检测到第一电子设备的第一应用的数据库的版本号与第二电子设备的第一应用的数据库的版本号相同。这样,可以确保数据同步的安全性,同时可以避免在数据库版本同步时进行数据传输,导致进行无效数据同步的问题。
第二方面,本申请提供一种数据同步的方法,应用于第二电子设备,第二电子设备与第一电子设备之间通过同步通道进行通信,该方法包括:响应于第一电子设备发送的第一请求,获取目标操作数据,目标操作数据包括:第二电子设备的第一应用相对于第一电子设备的第一应用新增的操作数据,第二电子设备存储有第二电子设备的第一应用运行的操作数据;将目标操作数据返回第一电子设备,由第一电子设备对第一电子设备的第一应用的数据执行目标操作数据指示的操作。
这样,第一电子设备和第二电子设备可以通过该同步通道传输数据无需依赖中心设备(如服务器),且没有服务器的同步方式更适合于移动设备之间的同步数据的场景。该第二电子设备将第一应用中新增的数据操作发送至第一电子设备,由于只需要发送新增的数据,提高了数据同步的速度。同时第一电子设备和第二电子设备基于同一个应用程序的数据进行同步,相同应用在不同设备中的数据格式相同,也避免了在不同应用同步采用不同协议格式的问题。第一电子设备在数据库中写入新增的数据操作,可以确保无论数据发生何种变化,均可以被同步,避免两端的数据出现不同步的问题,
根据第二方面,第一请求包括:第一序列号和第二序列号,或者,第一请求包括第一序列号,第一序列号用于指示第一电子设备上一次同步第二电子设备的操作数据的序列号,第二序列号用于指示第二电子设备中最后存储的操作数据的序列号;第二电子设备存储有:操作数据的第一存储位置信息以及第一存储位置信息与序列号之间的第一对应关系;响应于第一电子设备发送的第一请求,获取目标操作数据,包括:第二电子设备根据第一序列号、第二序列号以及第一对应关系,获取从第一序列号对应的操作数据到第二序列号对应的操作数据作为目标数据。这样,第二电子设备可以根据第一序列号、第二序列号以及第一对应关系,快速定位出第二电子设备相对于第一电子设备的第一应用新增的操作数据。
根据第二方面,第一存储位置信息包括:每个操作数据存储的存储页的页号以及在页号中的起始位置。这样,通过操作数据所在的存储页的页号,以及该页号的起始位置,可以快速定位出该操作数据的存储位置。
根据第二方面,第二电子设备还存储有:每个操作数据的同步状态;该方法还包括:第二电子设备当检测到最后存储的操作数据的同步状态从第一状态更新为第二状态时,更新存储的第二序列号,第一状态用于指示操作数据未被第一电子设备同步过,第二状态用于指示操作数据被第一电子设备同步过。这样,该第二电子设备可以及时更新存储的第二序列号,便于后续有新的操作数据存储时,以新的第二序列号作为新的操作数据的序列号。
第三方面,本申请提供一种数据同步的方法,应用于第二电子设备,该第二电子设备与第一电子设备之间通过同步通道进行通信,该方法包括:响应于第二电子设备的第一应用的数据更新指令,向第一电子设备发送目标操作数据,以供第一电子设备对第一电子设备中的第一应用执行目标操作数据指示的操作,目标操作数据包括:第二电子设备中第一应用相对于所述第一电子设备中第一应用新增的操作数据,第二电子设备存储有第二电子设备的第一应用运行的操作数据。
这样,第二电子设备可以主动触发向第一电子设备同步数据,例如,当第二电子设备存储新的操作数据时,或者在用户的指示下主动向第一电子设备同步目标操作数据。由于同步的操作数据为第二电子设备相对于第一电子设备新增的操作数据,提高了同步操作数据的速度,同时第一电子设备和第二电子设备之间有同步通道,无需依赖其他设备进行同步,更加适用于移动设备之间的数据同步。
根据第三方面,第一电子设备存储有:第一序列号,第一序列号用于指示第一电子设备上一次同步第二电子设备的操作数据的序列号;第二电子设备存储用于标识存储于第二电子设备的操作数据的序列号;在向第一电子设备发送目标操作数据之前,该方法还包括:从存储的序列号中获取第二序列号,第二序列号用于指示第二电子设备中最后存储的操作数据的序列号;向第一电子设备发送第三请求,第三请求用于指示获取第一序列号;响应于第一电子设备发送的第一序列号,根据第一序列号和第二序列号,检测到需要向第一电子设备同步第二电子设备中第一应用的数据。
根据第三方面,根据第一序列号和第二序列号,检测到需要向第一电子设备同步第二电子设备中第一应用的数据,包括:当检测到第二序列号大于第一序列号时,确定需要向第一电子设备同步第二电子设备中第一应用的数据,其中,第二电子设备中的序列号按照从小到大的顺序存储。
根据第三方面,第二电子设备还存储有:操作数据的第一存储位置信息以及第一存储位置信息与序列号之间的第一对应关系;在需要向第一电子设备同步第二电子设备中第一应用的数据之后,该方法还包括:第二电子设备根据第一序列号、第二序列号以及第一对应关系,获取从第一序列号对应的操作数据到第二序列号对应的操作数据作为目标数据。
根据第三方面,第二电子设备还存储有:每个操作数据的同步状态;第二电子设备当检测到最后存储的操作数据的同步状态从第一状态更新为第二状态时,更新存储的第一序列号,第一状态用于指示操作数据未被第一电子设备同步过,第二状态用于指示操作数据被第一电子设备同步过。
根据第三方面,该方法还包括:当检测到第二电子设备存储的第一应用的操作数据的容量达到预设阈值时,以最早存储的操作数据为起点删除预设个数的操作数据。这样,在存储的操作数据的容量超出预设阈值(如100M),删除最早存储的操作数据,避免第二电子设备的存储造成影响,同时删除最早存储的数据,避免删除未同步的操作数据。
第四方面,本申请提供了一种电子设备,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行第一方面以及第一方面的任意一种实现方式的数据同步的方法,或者,执行第二方面以及第二方面的任意一种实现方式的数据同步的方法,或者执行第三方面以及第三方面的任意一种实现方式的数据同步的方法。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。或者,与第二方面以及第二方面的任意一种实现方式相对应,或者,与第三方面以及第三方面的任意一种实现方式相对应,第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,或者,参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第五方面,本申请提供了一种计算机可读介质,用于存储计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行上述执行第一方面以及第一方面的任意一种实现方式的数据同步的方法,或者,执行第二方面以及第二方面的任意一种实现方式的数据同步的方法,或者执行第三方面以及第三方面的任意一种实现方式的数据同步的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是示例性示出的基于服务器进行的数据同步的场景;
图2是示例性示出的电子设备的结构示意图;
图3是示例性示出的电子设备的软件结构示意图;
图4是示例性示出的一种数据同步的流程图;
图5是示例性示出的手机B同步数据的场景示意图;
图6是示例性示出的手机B与手机A的内部模块示意图;
图7是示例性示出的手机B主动向手机A请求同步数据时的流程图;
图8a是示例性示出的操作日志文件的结构示意图;
图8b是示例性示出的操作日志文件的结构示意图;
图8c是示例性示出的操作日志文件的结构示意图;
图9是示例性示出的手机A向手机B同步数据的场景示意图;
图10是示例性示出手机A主动向手机B同步数据时的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
在一些实施例中,分布式事务场景中某一个电子设备可以通过数据同步的方式浏览其他电子设备的数据。分布式事务场景是指将一个的应用系统拆分为多个可以独立部署的应用服务,需要各个服务远程协作才能完成某些事务操作。数据同步通常有两种实现方式,一种方式是通过数据同步应用实现两个设备之间的数据同步。具体地,数据同步应用可以根据产生的数据,利用私有协议进行全量数据的传输。另一种是通过具有分布式能力的数据库,示例性地,分布式数据库通常基于服务器构建,不同设备的数据与服务器中存储的数据保持一致,从而实现不同设备之间的数据同步。例如,图1为示例性示出的基于服务器进行的数据同步的场景,服务器作为分布式数据库,设备A和设备B将数据同步至服务器,服务器也可以将需要同步的数据下发至设备A和设备B中,以使设备A、设备B以及服务器中的数据一致。
然而,第一种数据同步的方式局限于具体业务,不同业务的数据格式不同,需要重新定义传输协议。且数据同步应用并不清楚其他设备何时进行数据更新,也不能及时触发数据的同步,故数据同步应用只能进行全量数据同步,导致数据同步耗时且浪费机器资源。
第二种数据同步方式由于依赖于服务器,由于不同移动终端的厂商不同,用户的各移动终端之间并没有一个统一的服务中心,因而依赖于服务器的数据同步不适用于移动终端之间无中心设备的数据同步场景。
本申请实施例中提供一种数据同步的方法,该方法由第一电子设备执行,第一电子设备与第二电子设备通过同步通道进行通信,在一些场景中,当第一电子设备中的第一应用需要同步数据时,可以主动向第二电子设备发送数据同步指令,第二电子设备向第一电子设备返回相对于第一电子设备新增的操作数据,该第一电子设备对第一电子设备中第一应用的数据执行新增的操作,实现第一电子设备与第二电子设备之间的数据同步。第一电子设备和第二电子设备可以通过该同步通道传输数据,无需依赖中心设备(如服务器)。该第二电子设备将第一应用中新增的数据操作发送至第一电子设备,由于只需要同步新增的数据,提高了数据同步的速度。第一电子设备在数据库中写入新增的数据操作,可以确保无论数据发生何种变化,均可以被同步,避免两端同步出现不同步的问题,同时第一电子设备和第二电子设备基于同一个应用程序的数据进行同步,相同应用在不同设备中的数据格式相同,也避免了在不同应用同步采用不同协议格式的问题。
图2为本申请实施例示出的一种电子设备100的结构示意图。应该理解的是,图2示电子设备100仅是电子设备的一个范例,并且电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图1中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
图3是本申请实施例的电子设备100的软件结构框图。
电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。如图3所示,该Android系统从上至下包括应用程序层和系统运行库,可以理解的是,图3的软件结构中的层以及各层中包含的部件,并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本申请不做限定。
如图3所示,应用程序层可以包括一系列应用程序包。应用程序包括可以包括多个应用,如,应用1、应用2、应用3和应用4。本示例中,仅列举了4个应用,实际在应用程序层还可以包括其他应用程序,如WLAN,蓝牙,音乐,游戏,短信息,图库,通话,导航等应用程序。
本申请实施例中通过分布式数据同步服务实现与其他电子设备的数据同步,该分布式数据同步服务可以理解为一个应用程序。即该分布式数据同步服务为电子设备中的各应用提供同步服务,其他应用通过分布式数据同步服务接口调用该分布式数据同步服务,各应用还可以通过分布式数据库接口模块调用数据库,以实现对数据库中数据的增加、删除、修改和查询。该分布式数据同步服务可以包括服务管理模块、同步操作管理模块和同步操作执行模块。该服务管理模块和同步操作管理模块可以共同用于管理数据同步请求,如向其他模块分发同步请求,并向同步操作执行模块分发同步请求。该同步执行操作模块可以执行接收到的操作数据。本申请实施例中,服务管理模块和同步操作管理模块可以相当于后文中同步记录模块,该同步操作执行模块相当于后文中的同步执行模块。
如图3中的黑色箭头所示,该分布式数据同步服务通过分布式数据同步服务接口与其他应用程序通信,如,应用通过分布式数据同步服务接口向分布式数据同步服务发送同步请求。
系统运行库中包括数据库,本示例中以SQlite数据库为例,在其他实施例中,数据库还可以是其他数据库,如MySQL数据库。该数据库可以用于存储操作数据。
举例来说,电子设备通过分布式数据同步服务接口将同步的操作数据发送至服务管理模块、服务管理模块将该操作数据传输至同步操作管理模块,同步操作管理模块将操作数据传输至同步操作执行模块,从而由该同步操作执行模块执行待同步的操作。同时应用程序可以调用该分布式数据库接口模块,通过该分布式数据库接口调用Sqlite接口模块,以将操作日志传输至SQLite数据库进行存储,示例性地,该分布式数据库接口模块将操作日志通过SQlite接口模块传输至SQlite记录日志模块,该SQlite记录日志模块将操作日志传输至SQlite模块存储,该SQlite模块为安卓系统中SQlite源生模块,即可理解为数据库。
可以理解的是,图3示出的软件结构中的层以及各层中包含的部件,并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本申请不做限定。
图4为示例性示出的一种数据同步的流程图。
本示例中,以第一电子设备和第二电子设备为例,说明数据同步的过程。第一电子设备和第二电子设备的类型可以不同,第一电子设备和第二电子设备所属的厂商可以不同,例如,第一电子设备可以为厂商A出产的手机A,第二电子设备可以是厂商B出产的平板电脑B。该第一电子设备和第二电子设备也可以是相同类型的设备。本示例中第一电子设备以手机B为例,第二电子设备以手机A为例。
在一些实施例中,第一电子设备和第二电子设备各自部署有数据库,本示例中,分布式数据同步服务应用提供的数据库可以与第一电子设备和第二电子设备中部署的数据库的类型相同,例如,该分布式数据同步服务采用SQlite数据库。分布式数据同步服务采用与第一电子设备相同的数据库,可以提高该分布式数据同步服务的适用场景,无需额外部署其他的数据库。本示例中,电子设备(即第一电子设备或第二电子设备)的每个应用均可以通过SQlite数据库对应用中的数据进行增加、删除、修改和查询操作,SQlite数据库的接口与电子设备的安卓源生接口一致,不需要应用改变数据格式,提高了该分布式数据服务应用的实用性。
该分布式数据同步服务提供相同账号在不同设备之间的数据同步服务。每个用户账号下的电子设备包括:主设备和从设备,主设备和从设备可以由该用户账号的用户设定。主设备中的分布式数据同步服务采用SQlite数据库,可以通过数据库的命令将对该应用程序中的数据进行的操作以日志形式存储于数据库中。可选地,该分布式数据同步服务为每个应用提供对应的数据库。从设备中的分布式数据同步服务可以通过数据库存储每个应用与主设备中的同一个应用上一次同步的操作数据的标识信息。可选地,从设备也可以存储每个应用于主设备中的同一个应用同步的各操作数据的标识信息,各标识信息可以按照同步时间的先后顺序排列存储。
下面以第一电子设备为从设备,第二电子设备为主设备为例,具体说明第一电子设备和第二电子设备之间进行数据同步的过程,该过程包括如下步骤:
步骤401:第一电子设备响应于第一应用的数据同步指令,向第二电子设备发送第一请求。
本示例中,第一应用为第一电子设备和第二电子设备中均安装的任一应用,例如,手机A中安装有联系人应用A,手机B中也安装有联系人应用A,该应用A可以为第一应用。第一应用也可以为其他应用,如:日历、天气、文件管理器等应用。当第一电子设备启动第一应用时,可以触发第一电子设备检测是否需要同步第二电子设备的第一应用中的数据。可选地,第一电子设备的第一应用还可以响应于用户的同步指令,触发第一电子设备检测是否需要同步第二电子设备的第一应用的数据。第一电子设备的第一应用响应于用户点击第一应用中的同步按键的操作,生成同步指令。可选地,第一电子设备的第一应用还可以按照预设时间间隔,触发第一电子设备检测是否需要同步第二电子设备的第一应用的数据。预设时间间隔可以是12小时、24小时、48小时等。同步的时刻可以为晚上,以避免用户高频使用第一电子设备和第二电子设备的时间。
第一电子设备检测该第一电子设备中的第一应用是否需要同步第二电子设备中的第一应用的数据,可以包括:首先,第一电子设备可以通过同步通道向第二电子设备发送账号获取请求,第二电子设备接收到该账号获取请求,可以将该第二电子设备的用户账号的标识信息发送至第一电子设备。该第一电子设备检测该第一应用的用户账号是否与第二电子设备的第一应用的用户账号相同。若第一电子设备检测到相同,则确定第一电子设备的第一应用和第二电子设备的第一应用之间允许进行数据同步;若第一电子设备检测到不同,则结束数据同步的流程。
在第一电子设备确定该第一电子设备的第一应用的用户账号与第二电子设备的第一应用的用户账号相同的情况下,第一电子设备可以获取第一查询信息,该第一查询信息包括用于标识指示第一电子设备每次同步该第一应用的操作数据的序列号。第一电子设备可以向第二电子设备发送第二请求,该第二请求用于指示获取第二序列号,第二序列号为第二电子设备的第一应用的最后存储的操作数据的序列号。该第一电子设备可以获取第一序列号和第二序列号,第一序列号为第一电子设备的第一应用上一次同步第二电子设备的第一应用的操作数据的序列号。可选地,第一电子设备也可以仅存储上一次同步第二电子设备的第一应用的操作数据的序列号。
该第一电子设备根据第一序列号和第二序列号,可以确定出第二电子设备相对于第一电子设备是否有新增的操作数据。其中,第一电子设备中序列号的排列规则与第二电子中序列号的排列规则相同,例如,第一电子设备在t1时刻记录第一次同步第一应用的操作数据的序列号,记为Seq1,第一电子设备在t2时刻记录了第二次同步第一应用的操作数据的序列号,记为Seq2,第一电子设备在t3时刻记录了第三次同步第一应用的操作数据的序列号,记为Seq3,第一电子设备可以按照时间的先后顺序,依次排列3个序列号,即为Seq1、Seq2和Seq3。同理,第二电子设备也可以按照相同的规则记录存储于第二电子设备的第一应用的操作数据的序列号。
在一些实施例中,序列号按照时间顺序排列且依次按照序列号从小到大的顺序存储,则第一电子设备可以获取第一电子设备中最新存储的序列号作为第一序列号,获取第二电子设备中最后存储的序列号作为第二序列号;该第一电子设备判断第二序列号是否大于第一序列号,若第一电子设备检测到第二序列号大于第一序列号,则确定第二电子设备相对于第一电子设备中的第一应用,存在新增的操作数据,需要同步第二电子设备的第一应用的数据。
可选地,第一电子设备还存储有该第一电子设备的第一应用的数据库的版本号(假设为第一版本信息),第二电子设备还存储有该第二电子设备的第一应用的数据库版本(假设为第二版本信息)。第一电子设备可以在获取第二电子设备的第二序列号之前,请求获取第二电子设备的第一应用的数据库版本号(即第二版本信息)。第二电子设备向第一电子设备返回第二版本信息。第一电子设备比对第一版本信息和第二版本信息是否相同,若相同,则第一电子设备可以执行获取第二电子设备的第二序列号以及获取第一电子设备的第一序列号的操作。若版本不同,则第一电子设备需要同步第二电子设备的第一应用中的所有数据,即第一电子设备全量同步第二电子设备的第一应用的数据,在全量同步之后,可以更新该第一电子设备的第一应用的数据库的版本号。
可选地,第一电子设备可以在确定第二序列号大于第一序列号之后,判断第二版本信息是否与第一版本信息相同,若相同,则确定第一电子设备需要同步第二电子设备的第一应用的数据。若版本不同,则第一电子设备全量同步第二电子设备的第一应用的数据,在全量同步之后,可以更新该第一电子设备的第一应用的数据库的版本号。
当第一电子设备确定需要同步第二电子设备的第一应用的数据后,可以向第二电子设备发送第一请求,该第一请求用于指示从第二电子设备中获取目标操作数据,该目标操作数据包括:第二电子设备的第一应用相对于第一电子设备的第一应用新增的操作数据;第二电子设备存储有第二电子设备的第一应用运行的操作数据。可选地,该第一请求可以包括:第一应用的标识信息、第一序列号和第二序列号,也可以携带第一应用的标识信息以及第一序列号。
第二电子设备接收到第一请求后,可以根据该第一应用的标识信息,可以确定第一应用的数据库的位置信息。该第二电子设备根据第一序列号、第二序列号以及第一对应关系,可以获取大于该第一第二序列号对应的操作数据,第一对应关系为第二电子设备存储的操作数据的第一存储位置信息以及第一存储位置信息与序列号之间对应关系。
第二电子设备将从第一序列号对应的操作数据到第二序列号对应的操作数据作为目标操作数据,并将该目标操作数据返回第一电子设备。
步骤402:第一电子设备接收第二电子设备发送的目标操作数据。
示例性地,该第一电子设备可以解析该目标操作数据,获取新增的操作数据。
步骤403:第一电子设备对第一电子设备的第一应用的数据执行目标操作数据指示的操作。
示例性地,该第一电子设备获取新增的操作数据,可以对该第一应用的数据按照时间顺序依次执行新增的操作数据所指示的操作,从而获得新增的数据。同时,每执行一次操作,第一电子设备可以记录该本次同步的序列号。
本示例中,该数据同步方法不区分业务场景,是一种通用的数据同步方案,不同应用均可以使用本方案进行将数据同步。各个应用可根据当前的已同步的数据进行增量同步。同时,不同应用可以进行多次同步请求,最小限度的进行跨设备数据传输,基于SQLite关系型数据库,不要求应用改变数据格式,应用使用起来操作简单,易用性强。
为了便于理解,下面以手机A和手机B为例具体说明手机B同步数据的过程。
图5为示例性示出的手机B同步数据的场景示意图。
用户X拥有手机A和手机B,其中,手机A被用户X设定为主设备,手机B被用户X设定为从设备。手机A和手机B中均有联系人应用,如图5的5a所示,手机B在T1时刻存储的联系人应用界面501包括两个联系人:分别为用户C和用户D。手机A的联系人应用在T1时刻时存储的联系人为:用户C、用户D。手机A的联系人应用在T1时刻之后删除了用户D,新增了用户E、用户F以及用户G。手机A中的联系人应用对该联系人应用中删除了用户D、新增用户E、用户F以及用户G的操作后,手机A可以将上述新增的操作数据以日志文件的形式存储于该联系人应用的数据库中。该联系人应用的数据库中存储的日志文件的结构可以如图8a所示,包括头部、索引页和数据页。头部(即header)用于记录数据库的版本号(记为version)以及该联系人应用最后存储的操作数据的序列号(即第二序列号),可以记为“lastRequestSequence”。该头部的字节的大小可以根据需要进行设置,例如,本示例中预留128个字节作为头部。该索引页包括:序列号、存储页的页号、当前存储页的起始位置和数据的同步状态。存储页的页号用于指示操作数据存储页的标识,通过存储页的页号以及该页号的起始位置可以快速定位到操作数据存储的位置,该存储页的页号和存储页的起始位置(如图8a中的Length)即可以理解为操作数据的第一存储位置信息。数据的同步状态可以用数字“1”和“0”表示,其中,“1”表示数据与其他设备之间同步过该数据,“0”表示该数据为新写入的数据,即还未与其他设备进行同步。该索引页中的表格作为第一存储位置信息与序列号之间的第一对应关系。数据页用于存储各操作数据,该数据页包括多个存储页。
如图8a所示,该存储的操作日志文件的头部的大小以128K为例,该索引页的起始位置从第128K开始,该索引页的大小范围可以为1K~128K。数据页中每个存储页的大小为1K。手机A的业务逻辑模块将新增的操作数据传输至数据库接口(如图6所示),数据库接口按照接收的操作数据对该手机A中的联系人应用的数据进行操作,获得该联系人应用中的新数据,将该新数据存储至数据库中的应用数据中,将该操作数据存储至操作日志文件中。可选地,手机A的联系人应用的同步执行模块若检测到存储的操作数据的容量超过预设阈值(如100M、150M、200M等),可以按照操作数据的存储时间的先后顺序,依次清除预设条数的操作数据,或,清除预设容量的操作数据,以确保数据库中有足够的存储空间存储新的操作数据,同时也避免因为操作数据的增长而导致手机的内存不够用的问题。
可选地,该手机A的操作日志文件的头部中可以存储当前联系人应用的数据库的版本号(如Version1.0)。该操作日志文件的头部还可以存储最新存储的操作数据的序列号,记为LastSequence。头部中的初始的LastSequence为1。当有新的操作数据存储时,操作数据的序列号为当前LastSequence的值,例如,第一个操作数据的序列号为1,即第一操作数据的序列号为1。操作数据的存储页(记为pageNO)的页号从0开始,每页存储页的大小为1K,当操作数据存满当前存储页,则将数据存储至下一个存储页中。可选地,操作数据可以存储于多个存储页中,如图8a所示,序列号为3的操作数据存储于page2和page3中。该索引页记录该存储页的起始位置。若该操作数据未被同步过,数据的同步状态记为0。若同步执行模块检测到最后一条操作数据的同步状态从0更新为1时,更新头部存储的LastSequence的值。例如,如图8a所示,头部存储的LastSequence为4,序列号为4的操作数据的同步状态为0。当同步执行模块检测到序列号为4的操作数据与其他设备同步过,则将该序列号为4的操作数据的同步状态从0更新为1,同时,更新头部存储的LastSequence的值为5。在下一时刻,同步执行模块向操作日志文件中存储新的操作数据,则获取头部中的LastSequence的值作为该新的操作数据的序列号,如图8c所示,该新的操作数据的序列号为5。
继续参考图5的5b所示,当用户在T2时刻启动手机B中的联系人应用,在手机B的主界面502中显示有联系人应用502的图标。用户X点击联系人应用的图标502,手机B启动联系人应用。如图6所示。该联系人应用检测到应用被启动后,可以触发该手机B的联系人应用进行数据同步操作。本示例中,该手机B的联系人应用可以检测到手机B的联系人应用的用户账号与手机A的联系人应用的用户账号一致,具体的检测过程此处不再进行赘述,可以参见步骤401中的相关描述。本示例中,手机B可以在检测完手机B的联系人应用的用户账号与手机A的联系人应用的用户账号相同后,检测手机B的联系人应用的数据库的版本号与手机A的联系人应用的数据库版本号是否相同,若检测到手机B的联系人应用的数据库的版本号与手机A的联系人应用的数据库版本号相同,则执行后续的操作(如获取第一序列号和第二序列号的操作);若不相同,则直接全量同步手机A的联系人应用的所有数据。
该手机B的业务逻辑模块可以向分布式数据同步服务接口传输第二请求。该联系人应用中的业务逻辑模块用于处理联系人应用中的各种业务,如编辑联系人的姓名、头像、电话号码等信息。也就是说,业务逻辑处理模块用于处理所在应用程序的各业务。联系人应用可以通过分布式数据同步服务接口与该手机B中的分布式数据服务应用通信。手机B的分布式数据同步服务接口可以是requestPull接口,手机B通过requestPull接口将第二请求传输至同步记录模块(记为SyncRecorder),该同步记录模块记录该第二请求,并将该第二请求分发至同步执行模块(记为SyncExecutor),同步执行模块向手机A的同步执行模块发送第一获取请求,指示获取手机A中最后记录的同步的序列号(即第二序列号),例如序列号为t,手机A中同步执行模块通过getLastRequestSequence接口获取手机A中最后记录的同步的序列号,并将该第二序列号返回手机B的同步执行模块。同理,该手机B的同步执行模块通过手机B中的getLastRequestSequence接口获取手机B中最后记录的同步的序列号(即第一序列号),如序列号为f。当手机B的同步执行模块收到序列号t后,手机B的同步执行模块将序列号t和序列号f进行比较,由于序列号是按照同步时间的先后顺序从小到大排列,手机B的同步执行模块检测到序列号t大于序列号f,确定手机B的联系人应用需要同步手机A的联系人应用的数据。
手机B的同步执行模块向手机A的同步执行模块发送第一请求,该第一请求中可以携带手机B的序列号f。手机A的同步执行模块收到第一请求,可以通过readData接口将手机A的联系人数据库中获取从f到t的操作数据(即目标操作数据)。该手机A的同步执行模块将目标操作数据传输至手机B的同步执行模块。同时,目标操作数据的同步状态更新为已同步,将头部存储的第一序列号的数值加1。例如,如图8b所示,若目标操作数据包括序列号4的操作数据,手机A将序列号4的操作数据发送至手机B的同步执行模块后,手机A的同步执行模块可以通过数据库接口将序列4的状态从0更新为1,其中,状态0表示该数据未被同步过,状态1表示该数据已被同步。同时,将头部存储的LastSequence的序列号从4更新为5。
手机B的同步执行模块通过分布式数据同步服务接口和数据库接口writeData将f到t的操作数据写入到手机B的联系人应用的数据库中,如图6中,数据库执行目标操作数据指示的操作,生成的应用数据存储在数据库中,该数据库将应用数据返回该手机B的业务逻辑模块。例如,删除用户D,新增用户E、用户F和用户E的操作。
此时,该手机B的联系人应用的业务逻辑模块显示同步后的数据,如图5的5c所示,在联系人应用界面403显示同步后的联系人列表。
该手机B主动向手机A请求同步数据,各模块之间的流程如图7所示。
步骤701:手机B通过接口发起同步请求。
本示例中,第一应用以联系人应用为例,该手机B的联系人应用在启动时,可以触发该联系人应用检测该手机B的联系人应用的用户账号是否与手机A的联系人应用的用户账号一致。可选地,手机A的第一应用的用户账号登录后,可以显示在同一局域网内该用户账号的其他电子设备。例如,手机B和手机A接入同一局域网内,该手机B可以通过局域网搜寻该用户账号xx1所属的设备A。当手机B搜寻到该设备A时,则可以确认该手机A的第一应用的用户账号与手机B的第一应用的用户账号一致。
可选地,手机B的联系人应用可以通过同步通道向手机A的联系人应用请求手机A的联系人应用的用户账号,手机A的联系人应用响应于该请求,将手机A的联系人应用的用户账号发送至手机B中,手机B的联系人应用比对手机B的联系人应用的用户账号和手机A的联系人应用的用户账号。当手机B的联系人应用确定本端的用户账号与手机A的联系人应用的用户账号一致。该手机B可以通过接口(如采用requestPull接口)向同步记录模块发起同步请求,该同步请求,用于指示手机B判断是否需要同步手机A中的联系人应用的数据。
需要说明的时,该同步执行模块在通过同步通道传输数据时,可以将序列号、操作数据等信息封装为私有协议,使用软总线的同步能力进行数据传输。手机A与手机B之间的同步通道可以是局域网的传输通道、蓝牙通道、近距离通信通道。
步骤702:手机B的同步记录模块B记录同步请求并进行分发。
具体地,该手机B的同步记录模块B(记为:SyncRecorder B)记录该同步请求,并向该手机B的同步执行模块B(记为:SyncExecutor B)分发该同步请求。
步骤703:手机B的同步记录模块B接收到同步请求。
步骤704:手机B的同步执行模块B向同步执行模块A请求手机A的第二序列号。
该手机B的同步执行模块B接收到该同步请求后,可以同步执行该步骤704以及步骤707,即该同步执行模块B获取手机B端的第一序列号以及手机A的第二序列号。可选地,该手机B的同步执行模块B可以向手机A的同步执行模块A请求该手机A的第二序列号。
需要说明的是,同步执行模块B向同步执行模块A请求手机A的联系人应用的第二序列号,可以携带联系人应用的标识信息。
步骤705:手机A的同步执行模块A通过接口获取本设备的第二序列号。
该手机A的同步执行模块A(记为:SyncExecutor A)接收到用于指示获取第二序列号的请求后,获取查询该联系人应用对应的日志文件,可以使用getLastRequestSequence接口读取该日志文件的头部中存储的第二序列号。同步执行模块A通过该getLastRequestSequence接口可以直接读取日志文件的头部的第二序列号,获取速度快。
在一些实施例中,该同步执行模块A可以数据库接口查询本端的联系人应用的数据库中最后存储的序列号。
本示例中,第二序列号以t为例。
步骤706:手机A的同步执行模块A将第二序列号传输至手机B的同步执行模块B。
示例性地,手机A的同步执行模块A将第二序列号通过同步通道传输至手机B的同步执行模块B。
步骤707:手机B的同步执行模块B获取本设备的第一序列号。
示例性地,手机B的同步执行模块B可以使用getLastRequestSequence接口读取日志文件的头部中存储的第一序列号。同步执行模块B通过该getLastRequestSequence接口可以直接读取日志文件的头部的第一序列号。
在一些实施例中,该同步执行模块B可以数据库接口查询本端的联系人应用的数据库中最后存储的序列号。
本示例中,第一序列号以f为例。
步骤708:手机B的同步执行模块B判断第二序列号是否大于第一序列号。若手机B检测到第二序列号大于第一序列号,则该同步执行模块B请同步执行模块A发送数据请求。若手机B检测到第二序列号小于或等于第一序列号,则结束数据同步的流程。
具体地,该手机B的同步执行模块B获取到第一序列号和第二序列号后,判断第二序列号是否大于第一序列号,若第二序列号大于第一序列号,则确定手机B的联系人应用需要同步手机A的联系人应用的数据,即可以执行步骤709。
若同步执行模块B确定第二序列号小于或等于第一序列号,则确定手机B的联系人应用不需要同步手机A的联系人应用的数据。
步骤709:同步执行模块B请同步执行模块A发送数据请求。
具体地,同步执行模块B向手机A的同步执行模块发送数据请求,以请求获取手机A的联系人应用相对于手机B的联系人应用新增的操作数据。该数据请求中可以包括第一序列号和第二序列号,也可以仅包括第一序列号。
步骤710:手机A的同步执行模块A获取本设备从序列号f到t的操作数据。
示例性地,该手机A的同步执行模块A可以通过ReadData接口从该联系人应用的数据库中获取目标操作数据,目标操作数据是指从序列号f到序列号t的操作数据,其中,该目标操作数据中并不包含f的操作数据,即从序列号f到序列号t的操作数据是指大于发的序列号f的各操作数据。
步骤711:手机A的同步执行模块A将从序列号f到t的操作数据传输至同步执行模块B。
步骤712:手机B的同步执行模块将获取的从f到t的操作通过writeData写入到数据库中。
示例性地,手机B的同步执行模块B通过writeData将目标操作数据写入数据库中,由于在数据库依次写入各操作数据,即对该手机B的联系人应用的数据依次进行操作,可以获取该联系人应用的应用数据,该手机B的同步执行模块B可以获取保持最后执行的操作数据的序列号作为新的第一序列号,即将t作为第一序列号。
需要说明的是,从设备即手机B的联系人应用中不存储同步的操作数据,仅存储上一次同步的操作数据的序列号。
在一些实施例中,手机A的第一应用更新了数据后,可以主动触发向手机B的第一应用同步数据。下面结合图9、图10具体说明手机A主动向手机B的第一应用同步数据的过程。图9为示例性示出的一种手机A主动向手机B同步数据的场景示意图,图10为示例性示出的手机A主动向手机B同步第一应用的数据的流程图,如图10所示,手机A主动向手机B同步第一应用的数据的过程包括:
步骤1001:手机A的联系人应用的业务逻辑模块通过接口发送同步请求。
本示例中,第一应用以联系人应用为例。如图9的9a所示,该手机A的联系人应用界面901在T3时刻显示有3个联系人,分别为用户C、用户E和用户F。手机A在T4时刻添加新的联系人“用户G”,如图9的9b所示,该手机A的联系人应用界面902显示有4个联系人,分别为:用户C、用户E、用户F和用户G。该联系人应用的业务逻辑模块可以将新增用户G的操作数据传输至该联系人应用的数据库中,通过数据库接口存储该新增的应用数据以及新增的操作数据(以操作日志的形式存储)。该业务逻辑处理模块通过数据库接口存储应用数据和操作日志的过程可以参照图6、图8b和图8c。如图8b所示,在操作日志文件的序列号为4的操作数据的同步状态被更新为1,则将该操作日志文件的头部文件存储的LastSequence(图8b中简写为“LastSeq”)更新为5。在下一时刻,该数据库接收到新增用户G的操作,则获取头部文件存储的LastSequence的序列号,作为新的操作数据的序列号,即新的操作数据的序列号为5。该同步执行模块A检测到序列号为4,且存储页的页号4页的数据已经进行同步过,此时序列号为5为操作数据从第5页的存储页开始记录,并存储该操作数据的第5页的起始位置的信息,如该操作数据在存储页5中的起始位置为zzz,由于该操作数据并未同步过,同步状态记录为0。
该手机A的联系人应用在检测到有新增的数据操作,可以触发手机A的联系人应用检测该手机A的联系人应用的用户账号是否与手机B的联系人应用的用户账号一致。可选地,手机A的联系人应用可以通过同步通道向手机B的联系人应用请求手机B的联系人应用的用户账号,手机B的联系人应用响应于该请求,将手机B的联系人应用的用户账号发送至手机A中,手机A的联系人应用比对手机B的联系人应用的用户账号和手机A的联系人应用的用户账号。当手机A的联系人应用确定本端的用户账号与手机B的联系人应用的用户账号一致时,手机A也可以通过同步通道请求手机B的联系人应用的数据库的版本号(如Version1.0),手机B的联系人应用响应于该请求,将手机B的联系人应用的数据库的版本号发送至手机A中,手机A的联系人应用比对手机B的联系人应用应用的数据库的版本号和手机A的联系人应用的数据库版本号(如为Version1.0)。手机A确定手机A的联系人应用的数据库的版本号和手机B的联系人应用的数据库版本号一致时,该手机A可以通过接口(如采用requestPush接口)向同步记录模块A发起同步请求,该同步请求,用于指示手机A判断是否需要向手机B中的联系人应用同步数据。
手机A与手机B之间的同步通道可以是局域网的传输通道、蓝牙通道、近距离通信通道。
步骤1002:手机A的同步记录模块A记录同步请求并进行分发。
具体地,该手机A的同步记录模块A(记为:SyncRecorder A)记录该同步请求,并向该手机A的同步执行模块A(记为:SyncExecutor A)分发该同步请求。
步骤1003:手机A的同步执行模块A接收到同步请求。
步骤1004:手机A的同步执行模块A获取本端设备的第二序列号。
该步骤与步骤705类似,相关描述可以参照步骤705中的描述,此处不再进行赘述。
步骤1005:手机A的同步执行模块A向同步执行模块B请求获取第一序列号。
该步骤与步骤1004可以同时执行,也可以在步骤1005之前执行。
步骤1006:手机B的同步执行模块B通过接口获取本设备的第一序列号。
该步骤与步骤707类似,相关描述可以参照步骤707,此处不再进行赘述。
步骤1007:手机B的同步执行模块B将第一序列号返回同步执行模块A。
步骤1008:手机A的同步执行模块A判断第二序列号是否大于第一序列号。若同步执行模块A确定第二序列号大于第一序列号,则执行步骤1009。若同步执行模块A确定第二序列号小于或等于第一序列号,则结束数据同步的流程。
该步骤与步骤708类似,相关描述可以参照步骤708,此处不再赘述。
步骤1009:手机A的同步执行模块A获取本设备序列号f到t的操作数据。
该步骤与步骤710类似,相关描述可以参照步骤710,此处不再赘述。
步骤1010:手机A的同步执行模块A将序列号f到t的操作数据发送至同步执行模块B。
步骤1011:手机B的同步执行模块B将获取的从f到t的操作数据通过writeData写入到数据库中。
示例性地,手机B的同步执行模块B通过writeData将目标操作数据写入数据库中,由于在数据库依次写入各操作数据,即对该手机B的联系人应用的数据依次进行操作,可以获取该联系人应用的应用数据,该手机B的同步执行模块B可以获取保持最后执行的操作数据的序列号作为新的第一序列号,即将t作为第一序列号。当手机B的联系人应用同步了该手机A的联系人应用后,如图9的9c所示,该手机B的联系人应用界面903显示的联系人也为4个用户,与手机A的联系人应用的数据保持一致。
可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的数据同步的方法。存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的数据同步的方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (22)

1.一种数据同步的方法,其特征在于,应用于第一电子设备,所述第一电子设备与第二电子设备之间通过同步通道进行通信,所述方法包括:
所述第一电子设备响应于第一应用的数据同步指令,向所述第二电子设备发送第一请求,所述第一请求用于指示从所述第二电子设备中获取目标操作数据,所述目标操作数据包括:所述第二电子设备的第一应用相对于所述第一电子设备的第一应用新增的操作数据,所述第二电子设备存储有所述第二电子设备的第一应用运行的操作数据;
所述第一电子设备接收所述第二电子设备发送的目标操作数据;
所述第一电子设备对所述第一电子设备的第一应用的数据执行所述目标操作数据指示的操作。
2.根据权利要求1所述的方法,其特征在于,所述第一电子设备存储有第一序列号,所述第一序列号用于指示所述第一电子设备上一次同步所述第二电子设备的第一应用的操作数据的序列号;
所述第二电子设备存储用于标识存储于所述第二电子设备的操作数据的序列号;
在向所述第二电子设备发送第一请求之前,所述方法还包括:
获取所述第一序列号;
向所述第二电子设备发送第二请求,所述第二请求用于指示获取第二序列号,所述第二序列号用于指示所述第二电子设备中最后存储的操作数据的序列号;
接收所述第二电子设备发送的第二序列号;
根据所述第一序列号和所述第二序列号,确定需要同步所述第二电子设备中第一应用的数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一序列号和所述第二序列号,确定需要同步所述第二电子设备中第一应用的数据,包括:
当检测到所述第二序列号大于所述第一序列号时,确定需要同步所述第二电子设备中第一应用的数据,其中,所述第二电子设备中的序列号按照从小到大的顺序存储。
4.根据权利要求2所述的方法,其特征在于,所述第二电子设备还存储有:所述第二序列号。
5.根据权利要求3或4所述的方法,其特征在于,所述第二电子设备还存储有:操作数据的第一存储位置信息以及所述第一存储位置信息与序列号之间的第一对应关系;
在确定需要同步所述第二电子设备中第一应用的数据之后,且在向所述第二电子设备发送第一请求之前,所述方法还包括:
根据所述第一序列号,生成所述第一请求,以供所述第二电子设备根据所述第一序列号、第二序列号以及所述第一对应关系,获取大于所述第一序列号的各操作数据。
6.根据权利要求2所述的方法,其特征在于,所述第二电子设备还存储有:每个操作数据的同步状态;所述同步状态用于指示所述操作数据是否被所述第一电子设备同步过。
7.根据权利要求5所述的方法,其特征在于,所述第一电子设备对所述第一电子设备的第一应用的数据执行所述目标操作数据指示的操作,包括:
按照从所述第一序列号至所述第二序列号的顺序,依次执行所述目标操作数据指示的操作;
存储对所述第一应用的数据执行所述操作后获得的数据;
更新所述第一序列号。
8.根据权利要求1所述的方法,其特征在于,所述同步通道包括蓝牙通道或局域网的传输通道。
9.根据权利要求1所述的方法,其特征在于,在所述第一电子设备响应于第一应用的数据同步指令之前,所述方法还包括:
检测到所述第一电子设备的第一应用的用户账号与所述第二电子设备的第一应用的用户账号相同。
10.根据权利要求1所述的方法,其特征在于,在所述第一电子设备响应于第一应用的数据同步指令之前,所述方法还包括:
检测到所述第一电子设备的第一应用的用户账号与所述第二电子设备的第一应用的用户账号相同,且检测到所述第一电子设备的第一应用的数据库的版本号与所述第二电子设备的第一应用的数据库的版本号相同。
11.一种数据同步的方法,其特征在于,应用于第二电子设备,所述第二电子设备与第一电子设备之间通过同步通道进行通信,所述方法包括:
响应于所述第一电子设备发送的第一请求,获取目标操作数据,所述目标操作数据包括:所述第二电子设备的第一应用相对于所述第一电子设备的第一应用新增的操作数据,所述第二电子设备存储有所述第二电子设备的第一应用运行的操作数据;
将所述目标操作数据返回所述第一电子设备,由第一电子设备对所述第一电子设备的第一应用的数据执行所述目标操作数据指示的操作。
12.根据权利要求11所述的方法,其特征在于,所述第一请求包括:第一序列号和第二序列号,或者,所述第一请求包括第一序列号,所述第一序列号用于指示所述第一电子设备上一次同步所述第二电子设备的操作数据的序列号,所述第二序列号用于指示所述第二电子设备中最后存储的操作数据的序列号;
所述第二电子设备存储有:操作数据的第一存储位置信息以及所述第一存储位置信息与序列号之间的第一对应关系;
所述响应于所述第一电子设备发送的第一请求,获取目标操作数据,包括:
所述第二电子设备根据所述第一序列号、所述第二序列号以及所述第一对应关系,获取从第一序列号对应的操作数据到第二序列号对应的操作数据作为目标数据。
13.根据权利要求12所述的方法,其特征在于,所述第一存储位置信息包括:每个操作数据存储的存储页的页号以及在所述页号中的起始位置。
14.根据权利要求12或13所述的方法,其特征在于,所述第二电子设备还存储有:每个操作数据的同步状态;
所述方法还包括:
所述第二电子设备当检测到最后存储的操作数据的同步状态从第一状态更新为第二状态时,更新存储的第二序列号,所述第一状态用于指示所述操作数据未被第一电子设备同步过,所述第二状态用于指示所述操作数据被第一电子设备同步过。
15.一种数据同步的方法,其特征在于,应用于第二电子设备,所述第二电子设备与第一电子设备之间通过同步通道进行通信,所述方法包括:
响应于所述第二电子设备的第一应用的数据更新指令,向所述第一电子设备发送目标操作数据,以供所述第一电子设备对所述第一电子设备中的第一应用执行所述目标操作数据指示的操作,所述目标操作数据包括:所述第二电子设备中第一应用相对于所述第一电子设备中第一应用新增的操作数据,所述第二电子设备存储有所述第二电子设备的第一应用运行的操作数据。
16.根据权利要求15所述的方法,其特征在于,所述第一电子设备存储有:第一序列号,所述第一序列号用于指示所述第一电子设备上一次同步所述第二电子设备的操作数据的序列号;
所述第二电子设备存储用于标识存储于所述第二电子设备的操作数据的序列号;
在向所述第一电子设备发送目标操作数据之前,所述方法还包括:
从存储的序列号中获取第二序列号,所述第二序列号用于指示所述第二电子设备中最后存储的操作数据的序列号;
向所述第一电子设备发送第三请求,所述第三请求用于指示获取所述第一序列号;
响应于所述第一电子设备发送的第一序列号,根据所述第一序列号和所述第二序列号,检测到需要向所述第一电子设备同步所述第二电子设备中第一应用的数据。
17.根据权利要求16所述的方法,其特征在于,根据所述第一序列号和所述第二序列号,检测到需要向所述第一电子设备同步所述第二电子设备中第一应用的数据,包括:
当检测到所述第二序列号大于所述第一序列号时,确定需要向所述第一电子设备同步所述第二电子设备中第一应用的数据,其中,所述第二电子设备中的序列号按照从小到大的顺序存储。
18.根据权利要求17所述的方法,其特征在于,所述第二电子设备还存储有:操作数据的第一存储位置信息以及所述第一存储位置信息与序列号之间的第一对应关系;
在需要向所述第一电子设备同步所述第二电子设备中第一应用的数据之后,所述方法还包括:
所述第二电子设备根据所述第一序列号、所述第二序列号以及所述第一对应关系,获取从第一序列号对应的操作数据到第二序列号对应的操作数据作为目标数据。
19.根据权利要求15至18中任一项所述的方法,其特征在于,所述第二电子设备还存储有:每个操作数据的同步状态;
所述第二电子设备当检测到最后存储的操作数据的同步状态从第一状态更新为第二状态时,更新存储的第一序列号,所述第一状态用于指示所述操作数据未被第一电子设备同步过,所述第二状态用于指示所述操作数据被第一电子设备同步过。
20.根据权利要求17所述的方法,其特征在于,所述方法还包括:
当检测到所述第二电子设备存储的所述第一应用的操作数据的容量达到预设阈值时,以最早存储的操作数据为起点删除预设个数的操作数据。
21.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器与所述处理器耦合;
所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行权利要求1-10中任意一项所述的数据同步的方法,或者,执行权利要求11-14中任意一项所述的数据同步的方法,或者,执行权利要求15-20中任意一项所述的数据同步的方法。
22.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行权利要求1-10中任意一项所述的数据同步的方法,或者,执行权利要求11-14中任意一项所述的数据同步的方法,或者,执行权利要求15-20中任意一项所述的数据同步的方法。
CN202211546853.6A 2022-12-05 2022-12-05 数据同步的方法及电子设备 Pending CN116701526A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211546853.6A CN116701526A (zh) 2022-12-05 2022-12-05 数据同步的方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211546853.6A CN116701526A (zh) 2022-12-05 2022-12-05 数据同步的方法及电子设备

Publications (1)

Publication Number Publication Date
CN116701526A true CN116701526A (zh) 2023-09-05

Family

ID=87838089

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211546853.6A Pending CN116701526A (zh) 2022-12-05 2022-12-05 数据同步的方法及电子设备

Country Status (1)

Country Link
CN (1) CN116701526A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117201518A (zh) * 2023-11-08 2023-12-08 苏州元脑智能科技有限公司 数据的传输方法、系统、装置、存储介质和电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080270629A1 (en) * 2007-04-27 2008-10-30 Yahoo! Inc. Data snychronization and device handling using sequence numbers
US20140095625A1 (en) * 2012-10-02 2014-04-03 Nextbit Systems Inc. Application state backup and restoration across multiple devices
CN108416040A (zh) * 2018-03-14 2018-08-17 上海达梦数据库有限公司 一种数据库修复方法、装置、终端设备及存储介质
US20200348851A1 (en) * 2018-01-16 2020-11-05 Huawei Technologies Co., Ltd. Data processing method and apparatus
CN112559473A (zh) * 2020-12-11 2021-03-26 武汉达梦数据库股份有限公司 一种基于优先级的双路同步方法和同步系统
WO2021212493A1 (zh) * 2020-04-24 2021-10-28 深圳市欢太科技有限公司 数据同步方法、装置、数据存储系统及计算机可读介质
CN113923230A (zh) * 2020-06-22 2022-01-11 华为技术有限公司 数据同步方法、电子设备和计算机可读存储介质
CN114157677A (zh) * 2021-12-14 2022-03-08 南京欧珀软件科技有限公司 数据同步方法及相关产品
CN114661681A (zh) * 2020-12-23 2022-06-24 华为技术有限公司 数据同步方法及相关设备
CN114691631A (zh) * 2020-12-31 2022-07-01 华为技术有限公司 一种数据同步方法和装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080270629A1 (en) * 2007-04-27 2008-10-30 Yahoo! Inc. Data snychronization and device handling using sequence numbers
US20140095625A1 (en) * 2012-10-02 2014-04-03 Nextbit Systems Inc. Application state backup and restoration across multiple devices
US20200348851A1 (en) * 2018-01-16 2020-11-05 Huawei Technologies Co., Ltd. Data processing method and apparatus
CN108416040A (zh) * 2018-03-14 2018-08-17 上海达梦数据库有限公司 一种数据库修复方法、装置、终端设备及存储介质
WO2021212493A1 (zh) * 2020-04-24 2021-10-28 深圳市欢太科技有限公司 数据同步方法、装置、数据存储系统及计算机可读介质
CN113923230A (zh) * 2020-06-22 2022-01-11 华为技术有限公司 数据同步方法、电子设备和计算机可读存储介质
CN112559473A (zh) * 2020-12-11 2021-03-26 武汉达梦数据库股份有限公司 一种基于优先级的双路同步方法和同步系统
CN114661681A (zh) * 2020-12-23 2022-06-24 华为技术有限公司 数据同步方法及相关设备
CN114691631A (zh) * 2020-12-31 2022-07-01 华为技术有限公司 一种数据同步方法和装置
CN114157677A (zh) * 2021-12-14 2022-03-08 南京欧珀软件科技有限公司 数据同步方法及相关产品

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117201518A (zh) * 2023-11-08 2023-12-08 苏州元脑智能科技有限公司 数据的传输方法、系统、装置、存储介质和电子设备
CN117201518B (zh) * 2023-11-08 2024-02-20 苏州元脑智能科技有限公司 数据的传输方法、系统、装置、存储介质和电子设备

Similar Documents

Publication Publication Date Title
CN100492356C (zh) 用于管理媒体项的方法、系统和设备
WO2018219178A1 (zh) 数据同步方法、装置、服务器及存储介质
CN110377577B (zh) 数据同步方法、装置、系统和计算机可读存储介质
US11082480B2 (en) File information system management system and method
CN109145060B (zh) 数据处理方法及装置
CN113656490B (zh) 一种数据同步的方法、装置、终端以及存储介质
CN116701526A (zh) 数据同步的方法及电子设备
CN104348859A (zh) 文件同步方法、装置、服务器、终端及系统
CN110769061A (zh) 一种数据同步的方法及设备
KR101467583B1 (ko) 미디어-장치 컨텐츠에 대한 변화를 식별하기 위한 객체-기반 프로토콜 활용 방법 및 실체적인 기계-판독가능 매체
WO2022135244A1 (zh) 数据同步方法及相关设备
CN101404797B (zh) 长短消息的存储方法、存储管理装置以及存储系统
CN101529819A (zh) 用于避免提供内容目录服务的通用即插即用装置之间的资源的副本保存的方法和设备
CN102932513B (zh) 一种名片维护方法、装置及设备
CN114371895B (zh) 一种终端设备、邮件标记方法和存储介质
WO2022022546A1 (zh) 一种移动分布式系统数据同步的方法和设备
CN113890753A (zh) 数字身份管理方法、装置、系统、计算机设备和存储介质
CN110321332B (zh) 多媒体文件恢复方法、装置、终端和存储介质
CN109325057B (zh) 中间件管理方法、装置、计算机设备以及存储介质
JP2000040025A (ja) デ―タベ―ス管理装置、および、そのプログラムが記録された記録媒体
CN101562554A (zh) 基于网络的搜索终端个人数据的方法、系统及装置
WO2022151903A1 (zh) 分布式文件访问方法及相关设备
KR100467627B1 (ko) 데이터 동기화 방법 및 그 장치
CN117714088A (zh) 数据上报的方法及电子设备
CN116955353A (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