一种数据更新方法、装置及电子设备与流程

文档序号:11707683阅读:230来源:国知局
一种数据更新方法、装置及电子设备与流程

本发明涉及信息处理技术领域,特别涉及一种数据更新方法、装置及电子设备。



背景技术:

电商网站通常是使用关系数据库(例如mysql数据库)保存用户、商品数据。当需要查询数据时,需要通过关系查询语句扫描mysql数据库,从而实现数据查询。

然而,电商网站的数据量随时间推移、以及用户、商品的增加会越来越大,甚至可以积累到上gb甚至上tb级别,此时,使用传统的查询方法:通过关系查询语句在大量数据中查询一条数据时,查询速度将会非常慢,无法满足用户的快速查询目的。

因此,如何实现快速的大数据查询已成为一个亟待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种数据更新方法、装置及电子设备,能够实现快速的大数据查询。

为了达到上述目的,本发明提供了如下技术方案:

一种数据更新方法,应用于大数据存储与检索系统,所述大数据存储与检索系统包括主数据库和从数据库,所述主数据库通过向从数据推送数据更新日志实现主数据库和从数据库之间的数据同步更新,所述大数据存储与检索系统中还部署有数据更新服务设备和提供了用户检索接口的索引服务设备;该方法包括:

数据更新服务设备从主数据库获取数据更新日志,基于获取的数据更新日志获取更新数据;

数据更新服务设备将更新数据同步到索引服务设备,以使索引服务设备根据从数据更新服务设备同步来的更新数据维护索引,并在用户检索接口接收到检索请求时基于维护的索引进行数据检索。

一种数据更新装置,应用于大数据存储与检索系统,所述大数据存储与检索系统包括主数据库和从数据库,所述主数据库通过向从数据推送数据更新日志实现主数据库和从数据库之间的数据同步更新,所述大数据存储与检索系统中还部署有数据更新服务设备和提供了用户检索接口的索引服务设备,该装置为所述数据更新服务设备,包括:获取单元、同步单元;

所述获取单元,用于从主数据库获取数据更新日志,基于获取的数据更新日志获取更新数据;

所述同步单元,用于将获取单元从数据更新日志中获取的更新数据同步到索引服务设备,以使索引服务设备根据从该装置同步来的更新数据维护索引,并在用户检索接口接收到检索请求时基于维护的索引进行数据检索。

一种电子设备,包括至少一个处理器,以及与所述至少一个处理器通过总线相连的存储器;所述存储器存储有可被所述至少一个处理器执行的计算机指令;所述至少一个处理器执行所述指令时实现上述的方法步骤。

由上面的技术方案可知,本发明中,通过在大数据存储与检索系统中部署数据更新服务设备和索引服务设备,新部署的数据更新服务设备通过获取大数据存储系统原有的主数据库推送的日志,并从中解析出更新数据,从而把更新数据同步到索引服务设备中,使得索引服务设备根据同步来的更新数据进行索引维护,并基于维护的索引向用户提供检索服务。由于索引服务设备是基于维护的索引对用户提供检索服务,与现有技术中利用关系查询语句在数据库中进行检索相比,其查询速度得到了显著提升。

附图说明

图1是本发明实施例提供的大数据存储与检索系统的架构示意图;

图2是本发明实施例数据更新方法的流程图;

图3是本发明实施例数据更新装置的结构示意图;

图4是本发明实施例电子设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并据实施例,对本发明的技术方案进行详细说明。

在电商网站中使用的传统的大数据存储与检索系统中,仅包括主数据库和从数据库(主数据库和从数据库为关系数据库,例如mysql数据库),其中的主数据库通过向从数据库推送数据更新日志,使得从数据库通过数据更新日志实现数据同步。在这种大数据存储与检索系统中,用户只能使用关系查询语句扫描数据库进行数据检索,当数据库中存储的数据量过大时,检索速度会非常慢。

本发明中,为了提高上述传统大数据存储与检索系统的检索速度,在大数据存储与检索系统中部署新的设备,以下结合图1进行说明。

参见图1,图1是本发明实施例提供的大数据存储与检索系统的架构示意图,如图1所示,在该系统中,包括主数据库(简称主库)、从数据库(简称从库),此外,还部署有数据更新服务设备,索引服务设备和聚合库。

在图1所示系统中,数据更新服务设备用于获取主数据库的更新数据,并同步至索引服务设备和聚合库;索引服务设备用于对从数据更新服务设备同步来的更新数据进行索引维护,并提供了用户检索接口供用户进行数据检索;聚合库用于存储从数据更新服务设备同步来的更新数据,作为索引服务设备中数据的备份,目的是防止索引服务设备中的数据丢失。

在现有技术中,主数据库通过向从数据库推送binlog(二进制日志)实现主数据库与从数据库之间的更新数据同步,具体过程如下:

步骤a、主数据库将改变记录到二进制日志(binarylog)中(这些记录叫做二进制日志事件,binarylogevents,可以通过showbinlogevents进行查看);

步骤b、从数据库将主数据库的binarylogevents拷贝到它的中继日志(relaylog);

步骤c、从数据库重做中继日志中的二进制日志事件,将改变反映它自己的数据,从而实现从数据库中数据的更新。

本发明中,为了提供大数据存储与检索系统的检索速度,用户不再直接对主、从数据库进行数据查询,而是通过索引服务设备提供的用户检索接口进行数据查询。为此,需要将主、从数据库中的数据变化同步至索引服务设备,此同步操作由数据更新服务设备完成。

数据更新服务设备借鉴现有技术中从数据库从主数据库获取二进制日志实现从数据库中数据更新的思想,通过获取主数据库推送的二进制日志,并解析二进制日志获取更新数据,从而将更新数据同步至索引服务设备和聚合库,从而实现主数据库到索引服务设备和聚合库的更新数据同步。

索引服务设备接收数据更新服务设备同步来的更新数据,根据更新数据进行索引维护,具体包括:索引中已存储有更新数据对应的更新前的数据,则用更新数据覆盖更新前的数据,索引中不存在更新数据对应的更新前的数据(也即更新数据是主数据库中新增的一条数据,同步至索引服务设备后,在索引服务设备中查不到该条数据对应的更新前的数据),则对该更新数据建立索引,其中建立索引的方法采用现有技术即可,例如,对该条数据的部分或全部字段建立倒排索引,现在有开源的实现方法,如elasticsearch集群作为索引服务。这样用户就可以通过索引服务设备提供的用户检索接口提交检索关键词,则索引服务设备会通过查找索引对应的数据并反馈给用户。

聚合库接收数据更新服务设备同步来的更新数据,存储到数据库表中,作为索引服务设备中数据的备份。如果索引服务设备的数据丢失,则在用户检索数据时,索引服务设备会存在检索失败(包括检索不到结果或检索时间过长)的情况,此时,索引服务设备可以继续到聚合库中进行数据检索,从而实现降级检索,从而可以避免因索引服务设备中数据丢失或损坏而导致的检索失败的情况。在实际应用中,考虑到用户一般只检索的最近一段时间内的数据,因此,聚合库中可以只保存最近一段时间内的数据。

可以看出,本发明中,用户是通过索引服务设备提供用户检索接口对进行数据查询,取代了现有技术中利用关系查询语句在主、从数据库中的数据查询。

参见图2,图2是本发明实施例数据更新方法的流程图,该方法应用于大数据存储与检索系统,所述大数据存储与检索系统包括主数据库和从数据库,所述主数据库通过向从数据推送数据更新日志实现主数据库和从数据库之间的数据同步更新,其中,所述大数据存储与检索系统中还部署有数据更新服务设备和提供了用户检索接口的索引服务设备;如图2所示,该方法主要包括以下步骤:

步骤201、从主数据库获取数据更新日志。

本发明中,从主数据库获取数据更新日志的方法至少有以下两种:

1)数据更新服务设备伪装成从数据库向主数据库请求日志,具体方法为:模拟从数据库向主数据库发送日志推送请求,接收主数据库推送的日志,从主数据库推送的日志中提取与读/写操作相关的日志作为数据更新日志。其中读/写操的含义是:读和/或写操作,例如insert操作为写操作,update则同时涉及到读操作和写操作。

2)在主数据库向从数据库推送日志时,数据更新服务设备截获主数据库向从数据库推送的日志,从主数据库推送的日志中提取与读/写操作相关的日志作为数据更新日志。

在实际应用中,主数据库和从数据库可以为mysql数据库,此时,数据更新服务设备伪装自己是从数据库发出的日志推送请求为dump请求。

在mysql中,从数据库向主数据库发送dump请求,主数据库接收到dump请求后,开始向该从数据库推送日志(二进制日志)。在本发明中,主数据库接收到数据更新服务设备模拟从数据库发来的dump请求后,开始向数据更新服务设备推送日志,从而数据更新服务设备可以从主数据库推送的日志中提取涉及到读/写操作的日志,进而将这些日志作为数据更新日志。

步骤202、基于获取的数据更新日志获取更新数据。

数据更新日志中涉及到读/写操作(例如数据插入操作insert、数据更新操作update),其中包括读/写操作的目标数据库表、目标主键、以及具体的包括部分字段或全部字段的更新数据等内容,本发明中,获取数据更新日志后,可以通过解析数据更新日志中的读/写操作,确定读/写操作的目标数据库表和目标主键,并提取目标数据库表中目标主键对应的更新数据。

从而将读/写操作的目标数据库表、目标主键、以及目标数据库表中目标主键对应的更新数据作为更新数据同步到索引服务设备和聚合库中。另外,在实际实现中,也可以在解析确定读/写操作的目标数据库表和目标主键后,通过查询主数据库或从数据库获得目标数据库表中目标主键对应的包括全部字段的一条数据,从而将查询得到的数据作为更新数据。

步骤203、将更新数据同步到索引服务设备和聚合库。

本发明中,当主数据库和从数据库为mysql数据库时,可以利用mq消息将更新数据同步到索引服务设备和聚合库中,也即,将更新数据携带在mq消息中发送到索引服务设备和聚合库,从而实现索引服务和聚合库中的数据更新。索引服务设备和聚合库接收到更新数据后执行的更新操作采用现有方法,不再赘述。

以下以一电商业务系统为例,对图2所示方法进行详细说明:

假设该电商业务系统一天有100万订单量,一年则产生约3.6亿订单,订单数据表很大,如果订单表为20个字段,一个字段100个字符大小,则一条订单需要2000个字节存储,约为2kb,那么3.6亿则产生3400gb的存储需求,这个肯定需要用到多个数据库存储。所以将这些数据分布到多个数据库1、2、3,多个子表中,各个子表可以通过id的范围区间里进行区分,其中的数据库1为主库,数据库2、3为从库,所有的读写操作都会经过主库,并同步到各个从库中。

数据更新服务设备可以监听数据库的主从库操作日志,每当订单增加的时候,数据更新服务设备可以监听到相关的数据变动,此时可以截获主库向从库推送的日志。或者,数据更新服务设备还可以通过模拟mysql从库的交互协议,伪装自己是从库,向mysql主库发送dump请求,mysql主库收到dump请求,会推送日志给数据更新服务设备。

数据更新服务设备解析mysql主库推送的日志,从而把涉及到读写操作的日志过滤出来。对过滤出来的日志进行解析得到更新数据,再通过消息队列同步到索引服务设备和聚合库中进行数据更新,例如发送activemq消息,其中的消息体内可以包括具体的目标数据库表和目标主键等更新数据内容。

索引服务设备接收到数据更新服务设备同步过来的更新数据之后,将更新数据同步到索引服务中,作为文件缓存。索引服务不能当作数据库来使用,它并不能百分之百保证数据完整性,所以一定要有数据备份,为此使用了聚合库,将这些更新数据保存到聚合库中。聚合库中保存一段时间内的数据,用于降级检索使用,一旦索引服务设备检索数据失败,则可以进一步到聚合库中进行数据查询(本发明中称此为降级检索)。

用户端或者下游的业务子系统如果需要查询数据,则可以通过http协议查询索引服务,例如查询某个订单,可以在索引服务中查到的话,则退出,在索引服务中查不到时,则查询聚合表,以实现降级检索。

用户下单则是通过直接写数据库,写完以后,数据更新服务设备监听到主数据库发往从数据库的byte流中有日志,则提取日志中的更新数据并同步到索引服务,同时也同步或延后批量更新到聚合库,做备份使用。

可以看出,在本发明实施例提供的大数据存储与检索系统中,数据存储是直接对主、从数据库进行操作,此过程中涉及到的数据更新会反馈到索引服务设备。而数据检索则是在索引服务设备中执行,不涉及主、从数据库。这样,一方面可以减轻主、从数据库的操作压力,另一方面,利用查询索引服务取代查询数据库,有效提高查询速度,可以满足用户的快速大数据查询需求。

以上对本发明实施例数据更新方法进行了详细说明,本发明还提供了一种数据更新装置,以下结合图3进行说明。

参见图3,图3是本发明实施例数据更新装置的结构示意图,该装置应用于大数据存储与检索系统,所述大数据存储与检索系统包括主数据库和从数据库,所述主数据库通过向从数据推送数据更新日志实现主数据库和从数据库之间的数据同步更新,其中,所述大数据存储与检索系统中还部署有数据更新服务设备和提供了用户检索接口的索引服务设备,该装置为所述数据更新服务设备,包括:获取单元301、同步单元302;其中,

获取单元301,用于从主数据库获取数据更新日志,基于获取的数据更新日志获取更新数据;

同步单元302,用于将获取单元301从数据更新日志中获取的更新数据同步到索引服务设备,以使索引服务设备根据从该装置同步来的更新数据维护索引,并在用户检索接口接收到检索请求时基于维护的索引进行数据检索。

图3所示装置中,

所述大数据存储与检索系统中还部署有聚合库,所述聚合库与数据更新服务设备和索引服务设备均相连;

所述同步单元302,将更新数据同步到索引服务设备时,进一步将更新数据同步到聚合库,使得聚合库作为索引服务设备中数据的备份,在索引服务设备检索数据失败时,继续基于聚合库中存储的备份数据进行数据检索。

图3所示装置中,

所述获取单元301,从主数据库获取数据更新日志时,用于:

模拟从数据库向主数据库发送日志推送请求,接收主数据库推送的日志,从主数据库推送的日志中提取与读/写操作相关的日志作为数据更新日志;

或者,

截获主数据库向从数据库推送的日志,从主数据库推送的日志中提取与读/写操作相关的日志作为数据更新日志。

图3所示装置中,

所述获取单元301,基于获取的数据更新日志获取更新数据时,用于:解析数据更新日志中的读/写操作,确定读/写操作的目标数据库表和目标主键,并提取目标数据库表中目标主键对应的更新数据。

图3所示装置中,

所述主数据库和从数据库为mysql数据库;

所述日志推送请求为dump请求;

所述同步单元302,将更新数据同步到索引服务设备和聚合库时,用于:将更新数据携带在mq消息中发送到索引服务设备和聚合库。

本发明的另一实施例还提供了一种电子设备,该电子设备的功能与如图3所示装置相同,以下结合图4进行说明:

如图4所示,电子设备包括至少一个处理器401、存储器402。所述存储器402和所述至少一个处理器401通过总线连接,所述存储器402用于存储计算机指令;当所述电子设备运行时,所述处理器401执行所述存储器402存储的计算机指令,使得所述电子设备执行如图2所示的方法流程。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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