CN114138801A - 数据同步方法、装置、电子设备及存储介质 - Google Patents
数据同步方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114138801A CN114138801A CN202111435626.1A CN202111435626A CN114138801A CN 114138801 A CN114138801 A CN 114138801A CN 202111435626 A CN202111435626 A CN 202111435626A CN 114138801 A CN114138801 A CN 114138801A
- Authority
- CN
- China
- Prior art keywords
- data
- application program
- database
- server
- sdk
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2372—Updates performed during offline database operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据同步方法、装置、电子设备及存储介质,涉及数据处理技术领域。该方法包括:应用程序中配置的SDK接收服务端发送的变更数据,变更数据为存储在服务端的与应用程序对应的数据库的变更数据;基于变更数据更新SDK设置的本地离线数据库,得到数据更新后的本地离线数据库;指示应用程序从数据更新后的本地离线数据库中获取数据。本方法实现了应用程序能够从本地离线数据库中获取数据而实现数据同步,而无需应用程序与服务端直接进行交互,降低了数据同步的复杂度。
Description
技术领域
本申请涉及数据处理技术领域,更具体地,涉及一种数据同步方法、装置、电子设备及存储介质。
背景技术
实时数据库是采用实时数据模型建立起来的数据库,用于处理不断更新的快速变化的数据及具有时间限制的事务处理。相关通过实时数据库实现数据同步的方法中,需要在客户端以及服务端均存储客户端应用的订阅监听信息,因而在切换监听数据时需要同步修改客户端与服务端的订阅信息,提升了数据同步的复杂度。
发明内容
本申请提出了一种数据同步方法、装置、电子设备及存储介质,以改善上述问题。
第一方面,本申请实施例提供了一种数据同步方法,应用于应用程序中配置的SDK,所述SDK设置有本地离线数据库,所述方法包括:所述SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据;基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
第二方面,本申请实施例提供了一种数据同步方法,应用于服务端,所述方法包括:所述服务端向应用程序中配置的SDK发送变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据,以使所述SDK基于所述变更数据更新所述SDK设置的本地离线数据库,得到数据更新后的本地离线数据库,并使所述SDK指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
第三方面,本申请实施例提供了一种数据同步装置,运行于应用程序中配置的SDK,所述SDK设置有本地离线数据库,所述装置包括:数据接收模块,用于所述SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据;数据更新模块,用于基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;数据同步模块,用于指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
第四方面,本申请实施例提供了一种数据同步装置,运行于服务端,所述装置包括:数据同步单元,用于所述服务端向应用程序中配置的SDK发送变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据,以使所述SDK基于所述变更数据更新所述SDK设置的本地离线数据库,得到数据更新后的本地离线数据库,并使所述SDK指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
第五方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述第一方面提供的数据同步方法或第二方面提供的数据同步方法。
第六方面,本申请实施例提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述第一方面提供的数据同步方法或第二方面提供的数据同步方法。
本申请提供的一种数据同步方法、装置、电子设备及存储介质,本方法应用于应用程序中配置的SDK,该SDK设置有本地离线数据库,本方法通过SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据;继而基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;然后指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。从而通过上述方式实现了应用程序能够从本地离线数据库中获取数据而实现数据同步,而无需应用程序与服务端直接进行交互,降低了数据同步的复杂度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提供的一种数据同步方法的流程图。
图2示出了本申请另一实施例提供的一种数据同步方法的流程图。
图3示出了本申请实施例提供的应用程序中配置的SDK与服务端进行数据交互的系统架构图。
图4示出了本申请又一实施例提供的一种数据同步方法的流程图。
图5示出了图4中的步骤S310的方法流程图。
图6示出了本申请一实施例提供的一种数据同步装置的结构框图。
图7示出了本申请另一实施例提供的一种数据同步装置的结构框图。
图8示出了本申请实施例提供的一种电子设备的结构框图。
图9示出了本申请实施例的用于保存或者携带实现根据本申请实施例的数据同步方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
为了方便理解,下面对本申请实施例中涉及的名词进行简要说明。
(1)MongoDB
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
(2)实时数据库(Real Time Database)
实时数据库是采用实时数据模型建立起来的数据库,用于处理不断更新的快速变化的数据及具有时间限制的事务处理。
(3)Redis
Redis是一个使用ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。
(4)Memcached
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。它是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。
(5)软件开发工具包(Software Development Kit,SDK)
指一些被软件工程师用于为特定的软件包、软件框架、硬件平台及操作系统等创建应用软件的开发工具之集合。
数据同步是指掌上电脑能够迅速实现与台式电脑、笔记本电脑的数据同步与信息共享,使数据保持完整性和统一性。数据同步是通过各种数据传输接口实现的,如USB同步底座。随着信息技术的发展,许多行业中对数据信息处理(例如数据同步)的实时性、高效性、综合性有了越来越高的要求,因此,数据同步不再是简单的内存和外存的同步,而是需要更加实时高效的数据同步方案。
为了解决上述问题,相关的数据同步方案中,可以采用Memcached或Redis进行数据存储而实现数据同步,或者是采用服务端通知同步数据而实现数据同步。
然而,发明人发现,采用Memcached或Redis进行数据存储而实现数据同步的方案较为局限化,在实现大量复杂内容的数据同步时效率较低;而采用服务端通知同步数据而实现数据同步的方案虽然解决了现有订阅-发布机制对服务器产生大量冗余数据占用系统资源的问题,却在服务端订阅模块存储了大量的订阅、发布消息,在切换监听数据时需要同步修改SDK与服务端的订阅信息,提升了数据同步的复杂度。
因此,为了改善上述问题,发明人经过长时间的研究并提出了本申请实施例提供的数据同步方法、装置、电子设备及存储介质。通过SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据;继而基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;然后指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。从而通过上述方式实现了应用程序能够从本地离线数据库中获取数据而实现数据同步,而无需应用程序与服务端直接进行交互,降低了数据同步的复杂度。
下面将结合附图具体描述本申请的各实施例。
请参阅图1,示出了本申请一实施例提供的一种数据同步方法的流程图,本实施例提供一种数据同步方法,可应用于应用程序中配置的SDK,所述SDK设置有本地离线数据库。该方法包括:
步骤S110:所述SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据。
其中,本实施例中的应用程序可以为安卓应用程序,或者可以为iOS应用程序,应用程序的具体类型可以不作限定。可选的,应用程序可以为电子设备上安装的系统应用程序或者第三方应用程序。
作为一种方式,可以分别在本地和服务端存储应用程序的运行数据,其中,在服务端存储应用程序的运行数据时,可以将应用程序的运行数据存储在应用程序对应的数据库中。
考虑到网络环境变化对数据同步产生的影响,在本地存储应用程序的运行数据时,可以以本地离线数据库的方式存储应用程序的运行数据。作为一种实现方式,SDK可以传输应用程序的关联信息给服务端,该关联信息可以包括应用程序的标识(该标识可以用于唯一识别该应用程序)、应用包名、应用登录账号等,以使服务端基于该关联信息,判断应用程序是否具备访问存储在服务端的与应用程序对应的数据库的权限;若该应用程序具备访问所述数据库的权限,那么SDK则可以建立与服务端的长连接通道,并且通过长连接通道从服务端拉取应用程序的关联数据,以生成本地离线数据库。其中,关联数据可以理解为应用程序的运行数据。
可以理解的是,在网络状态正常的情况下,应用程序存储在本地的运行数据与应用程序存储在服务端的运行数据可以是相同的;而在一些弱网或者无网环境下,应用程序存储在服务端的运行数据可能无法同步到本地,或者当用户更换登录应用程序的电子设备时,应用程序存储在服务端的运行数据也无法同步到本地,从而可能会影响用户正常使用应用程序,同时,也一定程度上加大了数据同步的难度与复杂度。
为了优化上述问题,本实施方式中可以由应用程序中配置的SDK来接收服务端发送的变更数据,该变更数据为存储在服务端的与应用程序对应的数据库的变更数据。在一种实施方式中,SDK可以在应用程序重新启动或者重新登录时向服务端发送变更数据获取指令,以使得服务端基于该变更数据获取指令查找并返回应用程序对应的数据库的变更数据,在这种方式下,SDK即可以接收服务端发送的变更数据。
在另一种实施方式中,服务端可以检测应用程序的登录环境(可以理解为应用程序的登录IP),若检测到应用程序的登录环境发生变化,则可以主动向SDK发送应用程序对应的数据库的变更数据。或者服务端可以检测应用程序所在电子设备的网络信号强度,若该网络信号强度低于预设阈值(具体数值可以根据实际需要进行设定),那么则可以主动向SDK发送应用程序对应的数据库的变更数据,从而实现SDK接收服务端发送的变更数据。
步骤S120:基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库。
作为一种方式,在接收到存储在服务端的与应用程序对应的数据库的变更数据后,可以基于该变更数据更新应用程序的本地离线数据库,得到数据更新后的本地离线数据库。
步骤S130:指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
作为一种方式,当本地离线数据库更新后,SDK可以向应用程序发送更新数据获取指令,该更新数据获取指令用于指示应用程序从数据更新后的本地离线数据库中获取数据。或者,当本地离线数据库首次更新时,SDK可以直接将更新数据同步给应用程序,并指示应用程序之后定期主动从数据更新后的本地离线数据库获取数据。通过指示应用程序直接从数据更新后的本地离线数据库获取数据,减少了应用程序与服务端的直接交互,进而降低了数据同步的复杂度。相较于在已经由SDK获取了应用程序对应的数据库的变更数据的情况下,本申请实施例不需要应用程序再与服务端进行直接交互,缓解了网络流量上的压力。并且,通过指示应用程序从本地离线数据库获取数据,可以实现在弱网甚至无网环境下也可以正常提供服务。
本实施例提供的数据同步方法,通过SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据;继而基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;然后指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。从而通过上述方式实现了应用程序能够从本地离线数据库中获取数据而实现数据同步,而无需应用程序与服务端直接进行交互,降低了数据同步的复杂度。
请参阅图2,示出了本申请另一实施例提供的一种数据同步方法的流程图,本实施例提供一种数据同步方法,可应用于应用程序中配置的SDK,所述SDK设置有本地离线数据库,该方法包括:
步骤S210:获取对所述数据库的操作指令。
本实施方式中,操作指令可以包括查询指令或修改指令。
作为一种方式,当用户需要对存储在服务端的与应用程序对应的数据库进行操作时,可以通过应用程序触发生成操作指令,在这种方式下,SDK可以从应用程序中获取对数据库的操作指令。
步骤S220:将所述操作指令发送给所述服务端,以使所述服务端根据所述操作指令对所述应用程序对应的数据库进行对应操作。
其中,在SDK将上述操作指令发送给服务端之后,服务端可以先根据后台由用户预先设置好的权限规则文件进行鉴权,即判断当前应用程序是否具备操作存储在服务端的与应用程序对应的数据库的权限。可选的,若判定当前应用程序具备操作存储在服务端的与应用程序对应的数据库的权限,则视为通过鉴权,那么服务端则可以执行该操作指令;而若判定当前应用程序不具备操作存储在服务端的与应用程序对应的数据库的权限,则视为没有通过鉴权,那么服务端可以向SDK返回鉴权失败的信息。
下面结合附图对上述鉴权流程进行说明:
请参阅图3,示出了本申请实施例提供的应用程序中配置的SDK与服务端进行数据交互的系统架构图。如图3所示,客户端(也可以理解为前述的应用程序)中配置的SDK通过长连接中间件与服务端进行交互,服务端可以提供实时数据库服务,服务端包括连接管理模块(Connection Manager)、数据处理模块(Data Manager)以及权限模块(AuthorityModel)。
应用程序接入服务端的实时数据库服务时,可以在服务端后台获取到一对AppKey(本实施例中可以理解为应用帐号)和AppSecret(可以理解为应用密码),其中AppKey唯一对应一个后台数据库。SDK可以基于应用程序的标识、应用包名以及应用登录账号等信息和AppKey以及AppSecret,根据约定好的算法生成签名(Sign),再将上述应用程序的标识、应用包名以及应用登录账号等信息,AppKey以及Sign作为参数传递给服务端的权限模块进行鉴权。
服务端的权限模块根据SDK传输的上述参数,判断应用程序是否有权限访问存储在服务端的与应用程序对应的数据库(服务端中的第一次鉴权),若判定应用程序有权限访问存储在服务端的与应用程序对应的数据库,则在连接管理模块的内存缓存中记录应用程序的标识、应用包名以及应用登录账号等信息并入库(即图3中Redis)保存,若判定应用程序没有权限访问存储在服务端的与应用程序对应的数据库,则返回鉴权失败的信息给SDK。
SDK接入服务端的实时数据库服务时,需要在服务端后台预先设置好具有数据库访问权限的应用程序的包名信息,当应用程序通过配置的SDK传递应用程序的标识、应用包名以及应用登录账号等信息时,首先服务端中的权限校验器会判断该应用包名是否已在后台进行配置,若未配置则鉴权不通过;若已配置则权限管理模块会根据传输的AppKey在后台获取到AppSecret,进而与其他SDK传输过来的参数根据前述约定好的相同算法生成服务端验证签名,再与SDK传递的签名Sign进行对比(服务端中的第二次鉴权),两个签名若一致则通过鉴权,即服务端可以允许应用程序对数据库进行操作,而若该次鉴权失败,则会返回鉴权失败的消息给SDK。
其中,当第二次鉴权通过时,服务端可以采用MongoDB数据库将接收到的对数据库的操作指令进行存储,MongoDB是以JSON格式存储数据,存储方式较为灵活,相较于内存数据库,支持更复杂的数据表达,且支持的查询与索引方式更为灵活,并且支持复制集、自动分片等特性,集群技术成熟,在可靠性、数据量上优于Redis、Memcached等内存数据库。
步骤S230:所述SDK接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据。
其中,操作指令不同,与应用程序对应的数据库的变更数据不同。
在一种实现方式中,若操作指令为修改指令(可以包括新增、或删除等修改指令),SDK接收服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据,可以包括:SDK接收服务端发送的数据同步指令以及修改路径,该数据同步指令以及修改路径为基于对所述应用程序对应的数据库的修改操作确定;基于所述数据同步指令向所述服务端发送数据查询指令,以查询所述修改路径对应的最新数据;接收所述服务端返回的所述最新数据,并将所述最新数据作为与所述应用程序对应的数据库的变更数据。
在一个具体的应用场景中,如图3所示,若操作指令为修改指令,则服务端首先判断是否同时有其他客户端(即应用程序所登录的客户端)在修改同样的数据路径,若存在则返回无法同时修改的失败信息;若不存在则对该路径加分布式锁以防止其他客户端进行修改,然后进行相应的修改操作后通过数据处理模块中的数据同步模块向SDK返回修改成功信息,并异步向连接在本数据库的所有客户端发送一条同步指令以更新本地离线数据库。
其中,服务端向SDK返回与所述应用程序对应的数据库的变更数据的具体示例可以包括:①服务端接收到修改指令并执行完成后,记录下所修改数据的路径信息,如A->B->C;②服务端根据应用程序的标识、应用包名以及应用登录账号等信息,找到登录了(或登录过)同一账号的所有客户端设备;③向找到的所有客户端设备发送一条数据同步指令,数据同步指令中的操作符位表示需要进行数据同步,并同时传递之前记录的被修改的路径;④SDK接收到该数据同步指令后,再向服务端发送一条查询指令,该查询指令用于查询该路径的最新数据;⑤服务端向SDK返回该路径的最新数据,SDK基于该最新数据更新自身离线数据库,得到数据更新后的本地离线数据库,进而实现数据同步。
在另一种实现方式中,若操作指令为查询指令,SDK接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据,可以包括:SDK接收服务端发送的查询结果数据,该查询结果数据为基于所述查询指令对应的查询操作获得。其中,SDK接收到查询结果数据后,可以主动将查询到的数据同步给应用程序,也可以指示应用程序从本地离线数据库获取。
步骤S240:基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库。
步骤S250:指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
本实施例提供的数据同步方法,通过获取对所述数据库的操作指令;继而将所述操作指令发送给所述服务端,以使所述服务端根据所述操作指令对所述应用程序对应的数据库进行对应操作;再接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据;再基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;然后指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。从而通过上述方式实现了应用程序能够从本地离线数据库中获取数据而实现数据同步,而无需应用程序与服务端直接进行交互,降低了数据同步的复杂度。
请参阅图4,示出了本申请又一实施例提供的一种数据同步方法的流程图,本实施例提供一种数据同步方法,可应用于服务端,该方法包括:
步骤S310:所述服务端向应用程序中配置的SDK发送变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据,以使所述SDK基于所述变更数据更新所述SDK设置的本地离线数据库,得到数据更新后的本地离线数据库,并使所述SDK指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
本实施方式中,服务端与SDK之间通过长连接通道连接。服务端向应用程序中配置的SDK发送变更数据的具体实现过程可以参考前述实施例中的描述,在此不再赘述。
请参阅图5,作为一种方式,步骤S310具体可以包括:
步骤S311:所述服务端接收应用程序中配置的SDK发送的操作指令。
如前所述,该操作指令可以包括修改指令或查询指令。
步骤S312:根据所述操作指令对所述应用程序对应的数据库进行对应操作,得到操作结果数据。
作为一种方式,根据所述操作指令对所述应用程序对应的数据库进行对应操作,可以包括:对所述应用程序是否具备操作所述数据库的权限进行鉴定;若所述应用程序具备操作所述数据库的权限,根据所述操作指令对所述应用程序对应的数据库进行对应操作。
步骤S313:向所述SDK发送所述操作结果数据,所述操作结果数据为与所述应用程序对应的数据库的变更数据。
本实施例提供的数据同步方法,实现了应用程序能够从本地离线数据库中获取数据而实现数据同步,而无需应用程序与服务端直接进行交互,降低了数据同步的复杂度。
请参阅图6,为本申请一实施例提供的一种数据同步装置的结构框图,本实施例提供一种数据同步装置400,可以运行于应用程序中配置的SDK,所述SDK设置有本地离线数据库,所述装置400包括:数据接收模块410、数据更新模块420、以及数据同步模块430:
数据接收模块410,用于所述SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据。
作为一种方式,所述装置400还可以包括指令获取模块以及指令接收模块,其中指令获取模块用于在SDK接收服务端发送的变更数据之前,获取对所述数据库的操作指令;指令接收模块用于将所述操作指令发送给所述服务端,以使所述服务端根据所述操作指令对所述应用程序对应的数据库进行对应操作。在这种方式下,数据接收模块410可以用于所述SDK接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据。
作为一种实施方式,若所述操作指令为修改指令,所述SDK接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据,可以包括:所述SDK接收所述服务端发送的数据同步指令以及修改路径,所述数据同步指令以及修改路径为基于对所述应用程序对应的数据库的修改操作确定;基于所述数据同步指令向所述服务端发送数据查询指令,以查询所述修改路径对应的最新数据;接收所述服务端返回的所述最新数据,并将所述最新数据作为与所述应用程序对应的数据库的变更数据。
作为另一种实施方式,若所述操作指令为查询指令,所述SDK接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据,可以包括:所述SDK接收所述服务端发送的查询结果数据,所述查询结果数据为基于所述查询指令对应的查询操作获得。
数据更新模块420,用于基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库。
数据同步模块430,用于指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
可选的,装置400还可以包括离线数据库生成模块,用于所述SDK传输所述应用程序的关联信息给所述服务端,以使所述服务端基于所述关联信息判断所述应用程序是否具备访问所述数据库的权限;若所述应用程序具备访问所述数据库的权限,所述SDK建立与所述服务端的长连接通道;通过所述长连接通道拉取所述应用程序的关联数据,以生成本地离线数据库。
请参阅图7,为本申请另一实施例提供的一种数据同步装置的结构框图,本实施例提供一种数据同步装置500,可以运行于服务端,所述装置500包括:数据同步单元510:
数据同步单元510,用于所述服务端向应用程序中配置的SDK发送变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据,以使所述SDK基于所述变更数据更新所述SDK设置的本地离线数据库,得到数据更新后的本地离线数据库,并使所述SDK指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
本实施例中,所述服务端与所述SDK之间可以通过长连接通道连接。
作为一种方式,数据同步单元510,具体可以用于,所述服务端接收应用程序中配置的SDK发送的操作指令;根据所述操作指令对所述应用程序对应的数据库进行对应操作,得到操作结果数据;向所述SDK发送所述操作结果数据,所述操作结果数据为与所述应用程序对应的数据库的变更数据。
其中,所述根据所述操作指令对所述应用程序对应的数据库进行对应操作,可以包括:对所述应用程序是否具备操作所述数据库的权限进行鉴定;若所述应用程序具备操作所述数据库的权限,根据所述操作指令对所述应用程序对应的数据库进行对应操作。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参阅图8,基于上述的数据同步方法及装置,本申请实施例还提供了一种可以执行前述数据同步方法的电子设备100。电子设备100包括存储器102以及相互耦合的一个或多个(图中仅示出一个)处理器104,存储器102以及处理器104之间通信线路连接。存储器102中存储有可以执行前述实施例中内容的程序,而处理器104可以执行存储器102中存储的程序。
其中,处理器104可以包括一个或者多个处理核。处理器104利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器102内的指令、程序、代码集或指令集,以及调用存储在存储器102内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器104可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器104可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器104中,单独通过一块通信芯片进行实现。
存储器102可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器102可用于存储指令、程序、代码、代码集或指令集。存储器102可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现前述各个实施例的指令等。存储数据区还可以存储电子设备100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图9,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质600中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质600可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质600包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质600具有执行上述方法中的任何方法步骤的程序代码610的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码610可以例如以适当形式进行压缩。
综上所述,本申请实施例提供的一种数据同步方法、装置、电子设备及存储介质,通过SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据;继而基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;然后指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。从而通过上述方式实现了应用程序能够从本地离线数据库中获取数据而实现数据同步,而无需应用程序与服务端直接进行交互,降低了数据同步的复杂度。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种数据同步方法,其特征在于,应用于应用程序中配置的SDK,所述SDK设置有本地离线数据库,所述方法包括:
所述SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据;
基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;
指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
2.根据权利要求1所述的方法,其特征在于,所述SDK接收服务端发送的变更数据之前,所述方法还包括:
获取对所述数据库的操作指令;
将所述操作指令发送给所述服务端,以使所述服务端根据所述操作指令对所述应用程序对应的数据库进行对应操作;
所述SDK接收服务端发送的变更数据,包括:
所述SDK接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据。
3.根据权利要求2所述的方法,其特征在于,若所述操作指令为修改指令,所述SDK接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据,包括:
所述SDK接收所述服务端发送的数据同步指令以及修改路径,所述数据同步指令以及修改路径为基于对所述应用程序对应的数据库的修改操作确定;
基于所述数据同步指令向所述服务端发送数据查询指令,以查询所述修改路径对应的最新数据;
接收所述服务端返回的所述最新数据,并将所述最新数据作为与所述应用程序对应的数据库的变更数据。
4.根据权利要求2所述的方法,其特征在于,若所述操作指令为查询指令,所述SDK接收所述服务端发送的所述对应操作后与所述应用程序对应的数据库的变更数据,包括:
所述SDK接收所述服务端发送的查询结果数据,所述查询结果数据为基于所述查询指令对应的查询操作获得。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述SDK传输所述应用程序的关联信息给所述服务端,以使所述服务端基于所述关联信息判断所述应用程序是否具备访问所述数据库的权限;
若所述应用程序具备访问所述数据库的权限,所述SDK建立与所述服务端的长连接通道;
通过所述长连接通道拉取所述应用程序的关联数据,以生成本地离线数据库。
6.一种数据同步方法,其特征在于,应用于服务端,所述方法包括:
所述服务端向应用程序中配置的SDK发送变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据,以使所述SDK基于所述变更数据更新所述SDK设置的本地离线数据库,得到数据更新后的本地离线数据库,并使所述SDK指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
7.根据权利要求6所述的方法,其特征在于,所述服务端向应用程序中配置的SDK发送变更数据,包括:
所述服务端接收应用程序中配置的SDK发送的操作指令;
根据所述操作指令对所述应用程序对应的数据库进行对应操作,得到操作结果数据;
向所述SDK发送所述操作结果数据,所述操作结果数据为与所述应用程序对应的数据库的变更数据。
8.根据权利要求7所述的方法,其特征在于,所述根据所述操作指令对所述应用程序对应的数据库进行对应操作,包括:
对所述应用程序是否具备操作所述数据库的权限进行鉴定;
若所述应用程序具备操作所述数据库的权限,根据所述操作指令对所述应用程序对应的数据库进行对应操作。
9.根据权利要求6-8任一项所述的方法,其特征在于,所述服务端与所述SDK之间通过长连接通道连接。
10.一种数据同步装置,其特征在于,运行于应用程序中配置的SDK,所述SDK设置有本地离线数据库,所述装置包括:
数据接收模块,用于所述SDK接收服务端发送的变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据;
数据更新模块,用于基于所述变更数据更新所述本地离线数据库,得到数据更新后的本地离线数据库;
数据同步模块,用于指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
11.一种数据同步装置,其特征在于,运行于服务端,所述装置包括:
数据同步单元,用于所述服务端向应用程序中配置的SDK发送变更数据,所述变更数据为存储在所述服务端的与所述应用程序对应的数据库的变更数据,以使所述SDK基于所述变更数据更新所述SDK设置的本地离线数据库,得到数据更新后的本地离线数据库,并使所述SDK指示所述应用程序从所述数据更新后的本地离线数据库中获取数据。
12.一种电子设备,其特征在于,包括一个或多个处理器以及存储器;
一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行权利要求1-5或6-9任一所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行权利要求1-5或6-9任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111435626.1A CN114138801A (zh) | 2021-11-29 | 2021-11-29 | 数据同步方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111435626.1A CN114138801A (zh) | 2021-11-29 | 2021-11-29 | 数据同步方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138801A true CN114138801A (zh) | 2022-03-04 |
Family
ID=80389062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111435626.1A Pending CN114138801A (zh) | 2021-11-29 | 2021-11-29 | 数据同步方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138801A (zh) |
-
2021
- 2021-11-29 CN CN202111435626.1A patent/CN114138801A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116302719B (zh) | 用于启用高可用性受管理故障转移服务的系统和方法 | |
CN110113407B (zh) | 小程序状态同步方法、设备和计算机存储介质 | |
US10445197B1 (en) | Detecting failover events at secondary nodes | |
US9384114B2 (en) | Group server performance correction via actions to server subset | |
US20170163479A1 (en) | Method, Device and System of Renewing Terminal Configuration In a Memcached System | |
US10069942B2 (en) | Method and apparatus for changing configurations | |
CN109586969A (zh) | 内容分发网络容灾方法、装置、计算机设备及存储介质 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN111459749A (zh) | 基于Prometheus的私有云监控方法、装置、计算机设备及存储介质 | |
CN115604144B (zh) | 测试方法及装置、电子设备和存储介质 | |
CN112134908B (zh) | 应用适配方法及服务器、介质、车载多媒体系统 | |
CN112699034B (zh) | 虚拟登录用户构建方法、装置、设备及存储介质 | |
CN104104701A (zh) | 在线服务的配置更新的方法和系统 | |
CN115883647B (zh) | 业务日志记录方法、系统、装置、终端、服务器及介质 | |
CN115580667B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN111722994A (zh) | 一种任务请求的响应方法及设备 | |
CN114138801A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN115883359A (zh) | 升级安装方法及其装置、系统、电子设备及存储介质 | |
CN112416698B (zh) | 监控系统的扩展方法及装置、存储介质及电子设备 | |
JP6412641B2 (ja) | 通信リンクの送信方法、装置及び端末 | |
CN111858100A (zh) | 一种bmc消息传输方法及相关装置 | |
CN112350856A (zh) | 分布式服务签退方法及设备 | |
CN117156474B (zh) | 远程智能运维系统及其运维方法 | |
CN113568710B (zh) | 一种虚拟机高可用实现方法、装置和设备 | |
RU2802373C1 (ru) | Системы и способы получения информации сети радиодоступа |
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 |