数据同步方法及装置与流程

文档序号:20264557发布日期:2020-04-03 18:13阅读:150来源:国知局
数据同步方法及装置与流程

本发明涉及数据库技术领域,尤其涉及一种数据同步方法及装置。



背景技术:

随着近年来云计算和大数据领域日新月异的发展,人们对各行各业产生的海量数据经过大数据技术处理后,实时同步给客户端以便可视化分析的需求飞速增长。但由于目前大数据处理后的数据存储在hbase、elasticsearch、mongodb等索引数据库中,这样的数据只能按照某一特定格式存储。而如今的可视化数据分析的对象要求能够运用计算机图形学和图像处理技术,以灵活多变的图表形式动态化、立体化的呈现,这就需要在抽取数据的同时对数据进行清洗和转换,同时保证数据的实时性,以便及时同步到web页面做可视化分析。

现有技术中存在一些将数据库中的数据同步到客户端的技术,这些技术各自存在一些不足。对这些现有技术描述如下。

1、使用数据抽取工具二次开发或配置定制的web接口,然后在web客户端使用js定时器定时调用接口刷新页面。在这种方式下,即使没有数据更新,js也会不停的刷新页面造成不必要的资源浪费,尤其在数据抽取和转换需要执行复杂sql时,数据库的性能将受到影响。如果使用redis缓存解决查询性能问题,就会引出数据库与缓存同步d问题,使开发、维护、部署增加复杂度。

2、使用消息服务器同步可视化数据。此方式需要依赖消息服务器,针对web不同模块展示的内容需要对接收到的消息做判断,更新到相应的模块,这样会增加web展示层对后台逻辑的耦合以及前后端的复杂度。其次,web端通过消息获取数据,如果长时间不刷新数据库容易造成前后端数据不一致。再次,使用消息服务器时服务器端通常会推送全量的数据,让客户端端过滤,如果同时有多个可视化页面显示不同的内容,则服务器端服务不能针对每个可视化页面单独推送不同的内容。



技术实现要素:

本发明实施例提供一种数据同步方法及装置,用以解决现有技术中需依赖redis缓存或消息服务器的缺陷,实现快速、低耗的数据同步。

第一方面,本发明实施例提供一种数据同步方法,包括:

web应用与位于服务器端的服务之间建立连接通道;所述连接通道包括用于数据清洗与转换的应用;

查询数据的更新情况;

在数据发生更新后,从数据库读取更新后的数据,通过所述连接通道中的用于数据清洗与转换的应用对更新后的数据做数据清洗与转换,然后通过所述连接通道传输给所述web应用。

上述技术方案中,所述连接通道采用webflux建立。

上述技术方案中,所述用于数据清洗与转换的应用采用java脚本或groovy脚本的方式实现。

上述技术方案中,所述groovy脚本有多个,一个groovy脚本用于实现对一种类型数据的清洗与转换。

上述技术方案中,所述查询数据的更新情况包括:

通过查询数据的版本号或通过触发器或通过监控操作日志查询数据的更新情况。

上述技术方案中,所述web应用包括web可视化分析模块,所述web应用与位于服务器端的服务之间建立连接通道包括:所述web应用的web可视化分析模块与位于服务器端的服务之间建立连接通道。

上述技术方案中,所述web可视化分析模块与数据源绑定在一起;

所述通过所述连接通道传输给所述web应用包括:根据所述更新数据所来自的数据源确定与所述数据源绑定的web可视化分析模块,确定所述服务与所述web可视化分析模块间的连接通道,通过该连接通道将所述更新数据传输给所述web可视化分析模块。

第二方面,本发明实施例提供一种数据同步装置,包括:

连接通道创建模块,用于在web应用与位于服务器端的服务之间建立连接通道;所述连接通道包括用于数据清洗与转换的应用;

数据更新查询模块,用于查询数据的更新情况;

更新数据推送模块,用于在数据发生更新后,从数据库读取更新后的数据,通过所述连接通道中的用于数据清洗与转换的应用对更新后的数据做数据清洗与转换,然后通过所述连接通道传输给所述web应用。

第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述数据同步方法的步骤。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述数据同步方法的步骤。

本发明实施例提供的数据同步方法及装置通过webflux建立连接通道,连接通道中包括有采用java脚本或groovy脚本实现的应用,使得它无需依赖redis缓存和消息服务器,就可实现对数据的实时同步,且当数据没有变化时,无需推送数据,节省了数据库的性能消耗。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的数据同步方法的时序图;

图2为本发明实施例所提供的数据同步方法的流程图;

图3为本发明实施例提供的一种数据同步装置的示意图;

图4示例了一种电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例所提供的数据同步方法的时序图,从图1中可以看出,本发明实施例提供的数据同步方法涉及到用户、位于客户端的web应用、位于服务器端的服务以及位于服务器端的数据库。本发明实施例提供的数据同步方法实现了数据库中的数据与web应用中的数据的同步。

为了便于理解,在对本发明实施例提供的数据同步方法做详细说明前,对数据同步过程中所涉及到的角色做一简要描述。

本发明实施例中所描述的web应用是具有可视化分析功能的web应用,它包括有web可视化分析模块,一种web可视化分析的数据呈现方式可对应至少一个web可视化分析模块。例如,web可视化分析的数据呈现方式可以有列表、柱状图、折线图、趋势图、饼状图等多种,列表这一数据呈现方式可对应至少一个专门的web可视化分析模块,柱状图这一数据呈现方式可对应至少一个专门的web可视化分析模块,其他数据呈现方式依次类推。

本发明实施例中所描述的数据库可以有多种类型,如hbase、elasticsearch、mongodb等索引数据库,也可以是关系数据库。这些数据库中的数据均可同步到web应用中。源自上述类型数据库外的数据,如数据湖中的数据,可通过清洗、转换等操作存入索引数据库或关系数据库,然后再同步到web应用中。

数据源是一个不同于数据库的概念,数据源可以是数据库中的一张表或一个视图,也可以是sql查询语句。一般的,数据源会与某一特定的web可视化分析模块绑定,使得该数据源中的数据以一种较为固定的方式呈现。例如,数据库中所存储的用于记录日平均气温的数据与一个对应于折线图的web可视化分析模块。由于同一个数据库中可以包括多种类型的数据,因此一个数据库可以与多个可视化分析模块绑定。

本发明实施例中所描述的位于服务器端的服务是实现数据同步的主体,由该服务来实现数据的查询、同步等功能。在下面对数据同步方法的具体描述中,将会对服务所做的具体操作做进一步说明。

图2为本发明实施例所提供的数据同步方法的流程图,参考图1和图2,本发明实施例提供的数据同步方法包括:

步骤201、位于客户端的web应用被打开后,与位于服务器端的服务之间建立连接通道。

当用户打开客户端的web应用后,web应用中包含的web可视化分析模块与位于服务器端的服务之间建立连接通道。在本发明实施例中,web应用与服务建立连接通道时采用springboot的webflux,webflux是典型的非阻塞异步框架,它的核心是基于reactor的相关api实现的。具体的说,web应用中的各个web可视化分析模块通过连接webflux接口来实现web应用与服务之间连接通道的建立。

采用webflux所建立的连接通道包括有用于数据清洗与转换的应用,所述应用在建立连接管道时不会被执行,在连接管道建立后,更新后的数据通过该连接管道推送到web应用时方才执行所述用于数据清洗与转换的应用。

用于数据清洗与转换的应用可通过多种方式实现,如以java编程的方式实现,在本发明实施例中,作为一种优选实现方式,采用groovy脚本的方式实现。groovy脚本为动态脚本,可灵活配置修改,可在不重启服务的情况下对代码进行更新。

groovy脚本在配置时可存储在数据库中,当web应用与服务之间建立连接通道时,从数据库中获取groovy脚本。groovy脚本可以有多个,针对不同的数据源,可以有对应的groovy脚本,每个groovy脚本用于实现对特定类型数据的清洗与转换。

web应用与服务之间的连接通道建立成功后,向web应用返回一个长连接,位于服务器端的服务则会生成一个独立的线程来处理后续的数据推送工作。

步骤202、查询数据的更新情况。

当数据库中的数据发生变化时,变化后的数据需要实时地在web应用上展示。这就需要及时了解数据库中数据的更新情况。在本发明实施例中,可采用轮询的方式对各个数据库的数据更新情况进行检查。

对数据库中的数据更新情况进行查询可根据数据库的具体类型有多种实现方式。例如,对于诸如elasticsearch的文档型数据库,此类数据库使用乐观锁,所以文档自带版本号,只要数据有变化,版本号便会自动增加,此时通过轮询文档的版本号可判断数据是否有更新。又如,对于jdbc数据接口,可以通过触发器或者监控操作日志等方式检查数据是否有更新。

特别的,数据库中的数据在web应用上首次展示时,可同样将其视为一种更新。

步骤203、数据发生更新后,从数据库中读取更新后的数据,然后对更新后的数据做清洗与转换,并发送给web应用。

更新后的数据被读取后,需要利用web应用与服务之间的连接通道推送给web应用。在连接通道建立时已经包含了用于数据清洗与转换的应用,但当时并未执行该应用。在本步骤中,在推送数据之前,首先调用用于数据清洗与转换的应用,采用该应用对更新后的数据做数据清洗与转换;然后利用web应用与服务之间的连接通道推送更新后的数据。

在本发明实施例中,对更新后数据的清洗与转换采用groovy脚本实现。在前文中已经提及:groovy脚本可以有多个,针对不同的数据源,可以有对应的groovy脚本,每个groovy脚本用于实现对特定类型数据的清洗与转换。因此在本步骤中,根据数据源调用对应的groovy脚本。

在前文中已经提到,web应用中的web可视化分析模块可与数据源绑定在一起。在推送更新数据时,根据更新数据所来自的数据源查找服务与对应web可视化分析模块间的连接通道,通过该连接通道将更新数据推送给对应的web可视化分析模块,进而以特定的数据呈现方式来呈现更新后的数据。

以上是对本发明实施例所提供的数据同步方法的步骤描述。本发明实施例所提供的数据同步方法通过webflux建立连接通道,连接通道中包括有采用java脚本或groovy脚本实现的应用,使得它无需依赖redis缓存和消息服务器,就可实现对数据的实时同步,且当数据没有变化时,无需推送数据,节省了数据库的性能消耗。

基于上述任一实施例,图3为本发明实施例提供的一种数据同步装置的示意图,如图3所示,本发明实施例提供的数据同步装置包括:

连接通道创建模块301,用于在web应用与位于服务器端的服务之间建立连接通道;所述连接通道包括用于数据清洗与转换的应用;其中,

所述连接通道采用webflux建立;连接通道中的用于数据清洗与转换的应用采用java脚本或groovy脚本的方式实现,优选的,采用groovy脚本的方式实现。

数据更新查询模块302,用于查询数据的更新情况;

更新数据推送模块303,用于在数据发生更新后,从数据库读取更新后的数据,通过所述连接通道中的用于数据清洗与转换的应用对更新后的数据做数据清洗与转换,然后通过所述连接通道传输给所述web应用。

本发明实施例提供的数据同步装置通过webflux建立连接通道,连接通道中包括有采用java脚本或groovy脚本实现的应用,使得它无需依赖redis缓存和消息服务器,就可实现对数据的实时同步,且当数据没有变化时,无需推送数据,节省了数据库的性能消耗。

图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(communicationsinterface)420、存储器(memory)440和通信总线440,其中,处理器410,通信接口420,存储器440通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行如下方法:web应用与位于服务器端的服务之间建立连接通道;所述连接通道包括用于数据清洗与转换的应用;查询数据的更新情况;在数据发生更新后,从数据库读取更新后的数据,通过所述连接通道中的用于数据清洗与转换的应用对更新后的数据做数据清洗与转换,然后通过所述连接通道传输给所述web应用。

此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:web应用与位于服务器端的服务之间建立连接通道;所述连接通道包括用于数据清洗与转换的应用;查询数据的更新情况;在数据发生更新后,从数据库读取更新后的数据,通过所述连接通道中的用于数据清洗与转换的应用对更新后的数据做数据清洗与转换,然后通过所述连接通道传输给所述web应用。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1