CN110928885A - Mysql数据库的数据更新到Es数据库的方法及装置 - Google Patents
Mysql数据库的数据更新到Es数据库的方法及装置 Download PDFInfo
- Publication number
- CN110928885A CN110928885A CN201811028161.6A CN201811028161A CN110928885A CN 110928885 A CN110928885 A CN 110928885A CN 201811028161 A CN201811028161 A CN 201811028161A CN 110928885 A CN110928885 A CN 110928885A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- message
- updating
- type
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种Mysql数据库的数据更新到Es数据库的方法及装置,该方法包括:基于Mysql数据库创建本地消息列表,当Mysql数据库产生数据更新事件时,将数据更新事件对应的数据更新记录写入本地消息列表中。然后,利用预先启动的第一类常驻进程实时读取本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中。若采用预先启动的第二类常驻进程在消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新Es数据库。由此,本发明实施例将Mysql数据库中的数据更新记录先写入位于Mysql数据库本地的消息列表中,然后再将完整的更新数据写入Es数据库,从而使得最终更新至Es数据库中数据是高可用的完整数据。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种Mysql数据库的数据更新到Es数据库的方法及装置。
背景技术
通常情况下,项目.页面的列表需要用到的信息比较多,如果直接从Mysql数据库中读取信息,则需要联查很多数据表,从而导致信息的查找速度较慢,因此,可以考虑将数据库中的数据索引到Es(Elastic Search,分布式搜索服务器)数据库中。
但是,在现有技术中,例如对于Mysql数据库的update(更新)动作,通常是直接将更新的数据写入消息队列,而常驻进程一但监听到写入消息队列的消息便会立刻去消费这个消息,这样容易出现更新的数据可能还没有完整的写入消息队列中,常驻进程就会将不完整或不可信或不可用的数据更新至Es数据库中,从而影响数据更新的准确性。而后续若要将完整的更新数据写入Es数据库,还需要依靠补偿机制去补偿,这样就导致数据更新的实时性会较差。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的Mysql数据库的数据更新到Es数据库的方法及装置。
依据本发明的一方面,提供了一种Mysql数据库的数据更新到Es数据库的方法,包括:
基于Mysql数据库创建本地消息列表;
当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中;
利用预先启动的第一类常驻进程实时读取所述本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中;
若采用预先启动的第二类常驻进程在所述消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新所述Es数据库。
可选地,当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中,包括:
在所述Mysql数据库的数据访问对象Dao中增加钩子函数;
当Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述钩子函数中;
利用所述钩子函数将所述数据更新记录写入所述本地消息列表中。
可选地,所述消息队列包括基于存储***Redis或分布式发布订阅消息***kafka实现的消息队列。
可选地,所述方法还包括:
若存在多个Es数据库关注了相应的Topic消息,则为各Es数据库分别启动第二类常驻进程;
任一个Es数据库对应的第二类常驻进程在所述消息队列中监听该Es数据库关注的Topic消息。
可选地,所述数据更新事件包括以下至少之一:添加数据、删除数据、修改数据。
可选地,基于获取到的Topic消息更新所述Es数据库,包括:
分析获取到的Topic消息的类型;
依据所述Topic消息的类型触发对应的数据处理事件,基于数据处理事件对所述Es数据库中与Topic消息对应的数据进行处理,以更新所述Es数据库。
可选地,所述Topic消息的类型与所述数据更新事件相关,
若所述数据更新事件为添加数据,则所述Topic消息的类型为添加类型;
若所述数据更新事件为删除数据,则所述Topic消息的类型为删除类型;
若所述数据更新事件为修改数据,则所述Topic消息的类型为修改类型。
可选地,依据所述Topic消息的类型触发对应的数据处理事件,基于数据处理事件对所述Es数据库中与Topic消息对应的数据进行处理,包括:
若所述Topic消息的类型为添加类型,则触发数据添加事件,在所述Es数据库中添加与所述Topic消息对应的数据;
若所述Topic消息的类型为删除类型,则触发数据删除事件,将所述Es数据库中与所述Topic消息对应的数据删除;
若所述Topic消息的类型为修改类型,则触发数据修改事件,对所述Es数据库中与所述Topic消息对应的数据进行相应的修改。
可选地,所述方法还包括:
按照预设时间间隔检测所述Mysql数据库中是否存在数据更新;
若是,则将所述预设时间间隔内更新的数据补偿至所述Es数据库中。
可选地,所述方法还包括:
检测服务器属性列表所在页面是否接收到编辑操作,其中,所述服务器列表中包括与所述服务器相关的属性信息,且所述服务器相关的属性信息存储于所述Mysql数据库中;
若是,则调用预置在所述Es数据库上的实时更新接口对所述Es数据库中与编辑操作对应的数据进行更新。
可选地,与所述服务器相关的属性信息包括以下至少之一:
服务器IP地址、服务器配置参数、服务器品牌、服务器型号。
依据本发明另一方面,还提供了一种Mysql数据库的数据更新到Es数据库的装置,包括:
创建模块,适于基于Mysql数据库创建本地消息列表;
写入模块,适于当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中;
读取模块,适于利用预先启动的第一类常驻进程实时读取所述本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中;
更新模块,适于若采用预先启动的第二类常驻进程在所述消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新所述Es数据库。
可选地,所述写入模块还适于:
在所述Mysql数据库的数据访问对象Dao中增加钩子函数;
当Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述钩子函数中;
利用所述钩子函数将所述数据更新记录写入所述本地消息列表中。
可选地,所述消息队列包括基于存储***Redis或分布式发布订阅消息***kafka实现的消息队列。
可选地,所述装置还包括:
启动模块,适于若存在多个Es数据库关注了相应的Topic消息,则为各Es数据库分别启动第二类常驻进程;
监听模块,适于任一个Es数据库对应的第二类常驻进程在所述消息队列中监听该Es数据库关注的Topic消息。
可选地,所述数据更新事件包括以下至少之一:添加数据、删除数据、修改数据。
可选地,所述更新模块还适于:
分析获取到的Topic消息的类型;
依据所述Topic消息的类型触发对应的数据处理事件,基于数据处理事件对所述Es数据库中与Topic消息对应的数据进行处理,以更新所述Es数据库。
可选地,所述Topic消息的类型与所述数据更新事件相关,
若所述数据更新事件为添加数据,则所述Topic消息的类型为添加类型;
若所述数据更新事件为删除数据,则所述Topic消息的类型为删除类型;
若所述数据更新事件为修改数据,则所述Topic消息的类型为修改类型。
可选地,所述更新模块还适于:
若所述Topic消息的类型为添加类型,则触发数据添加事件,在所述Es数据库中添加与所述Topic消息对应的数据;
若所述Topic消息的类型为删除类型,则触发数据删除事件,将所述Es数据库中与所述Topic消息对应的数据删除;
若所述Topic消息的类型为修改类型,则触发数据修改事件,对所述Es数据库中与所述Topic消息对应的数据进行相应的修改。
可选地,所述装置,还包括:
检测模块,适于按照预设时间间隔检测所述Mysql数据库中是否存在数据更新;
补偿模块,适于若检测模块按照预设时间间隔检测到所述Mysql数据库中存在数据更新,则将所述预设时间间隔内更新的数据补偿至所述Es数据库中。
可选地,所述检测模块,还适于检测服务器属性列表所在页面是否接收到编辑操作,其中,所述服务器列表中包括与所述服务器相关的属性信息,且所述服务器相关的属性信息存储于所述Mysql数据库中;
所述更新模块,还适于若所述检测模块检测到服务器属性列表所在页面接收到编辑操作,则调用预置在所述Es数据库上的实时更新接口对所述Es数据库中与编辑操作对应的数据进行更新。
可选地,与所述服务器相关的属性信息包括以下至少之一:
服务器IP地址、服务器配置参数、服务器品牌、服务器型号。
依据本发明的再一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上文任一实施例所述的Mysql数据库的数据更新到Es数据库的方法。
依据本发明的再一方面,还提供了一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上文任一实施例所述的Mysql数据库的数据更新到Es数据库的方法。
在本发明实施例中,首先,基于Mysql数据库创建本地消息列表,当Mysql数据库产生数据更新事件时,将数据更新事件对应的数据更新记录写入本地消息列表中。然后,利用预先启动的第一类常驻进程实时读取本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中。若采用预先启动的第二类常驻进程在消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新Es数据库。由此,本发明实施例并未将Mysql数据库中的数据更新记录直接写入消息队列,而是先写入新创建的位于Mysql数据库本地的消息列表中,这样,可以在本地消息列表中记录到完整的Mysql数据库更新数据后,再将完整的更新数据写入Es数据库,进而使得最终更新至Es数据库中数据是高可用的完整数据。本发明实施例将Mysql数据库中的数据更新至Es数据库的实现过程简洁高效,还有效保证了更新至Es数据库中数据的实时性和准确性。进一步地,用户在查询数据列表时也无需直接从Mysql数据库联查多个数据表,而可以直接在Es数据库中查找所需数据,提高了数据的查询效率,减少了数据的查询时间。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的Mysql数据库的数据更新到Es数据库的方法的流程示意图;
图2示出了根据本发明一个实施例的Mysql数据库的数据发布到消息队列中的过程示意图;
图3示出了根据本发明一个实施例的消息队列中的消息更新至Es数据库的过程示意图;
图4示出了根据本发明一个实施例的Mysql数据库的数据更新到Es数据库的装置的结构示意图;以及
图5示出了根据本发明另一个实施例的Mysql数据库的数据更新到Es数据库的装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提供了一种Mysql数据库的数据更新到Es数据库的方法。图1示出了根据本发明一个实施例的Mysql数据库的数据更新到Es数据库的方法的流程示意图。参见图1,该方法至少包括步骤S102至步骤S108。
步骤S102,基于Mysql数据库创建本地消息列表。
步骤S104,当Mysql数据库产生数据更新事件时,将数据更新事件对应的数据更新记录写入本地消息列表中。
步骤S106,利用预先启动的第一类常驻进程实时读取本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中。
在该步骤中,由于Mysql数据库中包含有多个数据表,而每个数据表都会对应一个Topic,因此,当Mysql数据库中的数据表内的数据发生更新时,会由第一类常驻进程将读取到的更新的数据发布到消息队列相应的Topic中。例如,Mysql数据库中包括device detail表,那么device detail表对应的topic的名称可以是cmdb.device detail,当devicedetail表中的数据更新时,可以将更新的数据发布到消息队列中相应的名称为cmdb.device detail的topic中。
步骤S108,若采用预先启动的第二类常驻进程在消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新Es数据库。
本发明实施例并未将Mysql数据库中的数据更新记录直接写入消息队列,而是先写入新创建的位于Mysql数据库本地的消息列表中,这样,可以在本地消息列表中记录到完整的Mysql数据库更新数据后,再将完整的更新数据写入Es数据库,进而使得最终更新至Es数据库中数据是高可用的完整数据。本发明实施例将Mysql数据库中的数据更新至Es数据库的实现过程简洁高效,还有效保证了更新至Es数据库中数据的实时性和准确性。通过实际的操作,采用本发明的方案可以将Mysql数据库产生的更新数据在30ms以内更新至Es数据库中,从而大大提高了Es数据库中数据的更新速度。进一步地,用户在查询数据列表时也无需直接从Mysql数据库联查多个数据表,而可以直接在Es数据库中查找所需数据,提高了数据的查询效率,减少了数据的查询时间。
参见上文步骤S104,在本发明一实施例中,在将数据更新事件对应的数据更新记录写入本地消息列表中时,还可以通过钩子函数将数据更新记录写入本地消息列表。具体的,首先,在Mysql数据库的数据访问对象Dao(Data Access Object,数据访问对象)中增加钩子函数。然后,当Mysql数据库产生数据更新事件时,将数据更新事件对应的数据更新记录写入钩子函数中,进而利用钩子函数将数据更新记录写入本地消息列表publish_list中。
参见上文步骤S106,在本发明一实施例中,消息队列可以包括基于key-value存储***Redis或分布式发布订阅消息***kafka实现的消息队列。例如,若消息队列基于存储***Redis实现,则其采用了存储***Redis的pubsub(Publish/Subscribe,发布/订阅模式)功能。当然,消息队列还可以是基于其他***实现的,本发明实施例对消息队列的类型不做具体的限定。
参见上文步骤S108,在本发明一实施例中,若存在多个Es数据库关注了相应的Topic消息,则可以为各Es数据库分别启动第二类常驻进程,进而任意一个Es数据库对应的第二类常驻进程都可以在消息队列中监听该Es数据库关注的Topic消息。当任一个第二类常驻进程在消息队列中监听到其对应的Es数据库关注的Topic消息后,则可以基于获取到的Topic消息更新相应的Es数据库。
在本发明一实施例中,数据更新事件可以包括添加数据、删除数据、修改数据中的至少一项。在步骤S108中,基于获取到的Topic消息更新Es数据库时,可以先对获取到的Topic消息进行相应的解析操作,即分析获取到的Topic消息的类型,然后依据分析到的Topic消息的类型触发对应的数据处理事件,进而基于数据处理事件对Es数据库中与Topic消息对应的数据进行处理,以更新Es数据库。
在该实施例中,Topic消息的类型与数据更新事件相关,例如,若数据更新事件为添加数据,则Topic消息的类型为添加类型。若数据更新事件为删除数据,则Topic消息的类型为删除类型。若数据更新事件为修改数据,则Topic消息的类型为修改类型。
在本发明一可选实施例中,依据Topic消息的类型触发对应的数据处理事件,基于数据处理事件对Es数据库中与Topic消息对应的数据进行处理时,若Topic消息的类型为添加类型,则触发数据添加事件,在Es数据库中添加与Topic消息相对应的数据。若Topic消息的类型为删除类型,则触发数据删除事件,将Es数据库中与Topic消息对应的数据删除。若Topic消息的类型为修改类型,则触发数据修改事件,对Es数据库中与Topic消息对应的数据进行相应的修改。
为了更加清楚地体现本发明方案,现以具体实施例对本发明的Mysql数据库的数据更新到Es数据库的过程进行详细介绍。
首先介绍Mysql数据库的数据发布到消息队列的过程。
参见图2,该实施例预先在Mysql数据库的数据访问对象Dao中增加了钩子函数,当Mysql数据库产生数据更新事件(图2中示出的数据更新事件为添加数据add)时,会先将数据更新事件对应的数据更新记录写入钩子函数中,进而利用钩子函数将数据更新记录写入本地消息列表publish_list中。上文已经介绍过,Mysql数据库中包含有多个数据表,而每个数据表都会对应一个Topic,因此,在图2所示实施例中,假设Mysql数据库中添加数据的数据列表对应于Topic-01。然后,采用预先启动的第一类常驻进程从本地消息列表publish_list中实时读取数据更新记录,并由第一类常驻进程将数据更新记录publish(发布)到基于key-value存储***Redis实现的消息队列中。
在该实施例中,图2所示的Model指的是业务逻辑层,通过该业务逻辑层可以设置相应的业务处理逻辑,如设置的业务处理逻辑可以包括增加数据add、修改数据update、删除数据delete。Mysql数据库是根据预先设置在业务逻辑层中的相应的业务处理逻辑产生数据更新事件的。
然后,介绍利用消息队列中的数据更新记录如何更新Es数据库的过程。
参见图3,消息队列相应的Topic中的数据包括了Mysql数据库中的数据更新记录。前文已经介绍了通过预先启动的第二类常驻进程在消息队列中监听到Es数据库关注的Topic消息。在该实施例中,是通过控制台Console启动的第二类常驻进程,其中,控制台Console可以是终端服务器。第二类常驻进程通过数据访问对象EDao在基于存储***Redis实现的消息队列中监听到Es数据库关注的Topic消息。例如,Es数据库可以关注Topic-01、Topic-02等等中的至少一个Topic消息。当第二类常驻进程监听到Es数据库关注的Topic消息之后会获取相应的Topic消息,触发EDao-event以在event中处理Topic消息,进而来更新Es数据库。
在本发明一实施例中,为了确保Mysql数据库中的更新数据能够准确地更新至Es数据库中,本发明实施例还可以基于上述方法提供一种补偿机制,通过该补偿机制则可以根据用户的需要调整时间来增量的刷新数据。具体的,按照预设时间间隔检测Mysql数据库中是否存在数据更新,若是,则将预设时间间隔内更新的数据补偿至Es数据库中。在该实施例中,预设时间间隔可以是5分钟、6分钟、7分钟等等预先设定的任意时间间隔,本发明实施例对此不做具体的限定。
例如,预先设定时间间隔为5分钟,那么,可以先启动一个新的常驻进程,以利用该新的常驻进程每隔5分钟检测一次Mysql数据库中是否存在更新的数据,当在某一时刻检测到Mysql数据库中存在更新的数据,则从Mysql数据库中获取当前时刻之前5分钟内的更新数据,且将获取到的更新的数据补偿至Es数据库中。这里补偿机制可以作为一种保底的操作,避免存在Mysql数据库中的数据更新,而由于其他原因(如更新数据未成功写入本地消息列表中、或者数据更新记录未成功发布到消息队列相应的Topic中等等)导致无法及时、准确的更新至Es数据库的情况。
在本发明另一实施例中,还可以检测服务器属性列表所在页面是否接收到编辑操作(如用户对页面的编辑操作),其中,服务器列表中包括与服务器相关的属性信息,且服务器相关的属性信息存储于Mysql数据库中。若是,则调用预置在Es数据库上的实时更新接口对Es数据库中与编辑操作对应的数据进行更新。这里对页面的检查过程实时进行的,即对于页面接收到的编辑操作,会将编辑操作产生的数据信息实时更新至Es数据库中,这个过程近似于0延迟。当然,在对页面进行编辑操作产生的数据信息也会存储至Mysql数据库中。
在该实施例中,服务器相关的属性信息可以包括服务器IP地址、服务器配置参数、服务器品牌、服务器型号、服务器的相关负责人信息、服务器的厂商等等中的至少一个。
基于同一发明构思,本发明实施例还提供了一种Mysql数据库的数据更新到Es数据库的装置,图4示出了根据本发明一个实施例的Mysql数据库的数据更新到Es数据库的装置的结构示意图。参见图4,Mysql数据库的数据更新到Es数据库的装置400至少包括创建模块410、写入模块420、读取模块430以及更新模块440。
现介绍本发明实施例的Mysql数据库的数据更新到Es数据库的装置400的各组成或器件的功能以及各部分间的连接关系:
创建模块410,适于基于Mysql数据库创建本地消息列表;
写入模块420,与创建模块410耦合,适于当Mysql数据库产生数据更新事件时,将数据更新事件对应的数据更新记录写入本地消息列表中;
读取模块430,与写入模块420耦合,适于利用预先启动的第一类常驻进程实时读取本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中;
更新模块440,与读取模块430耦合,适于若采用预先启动的第二类常驻进程在消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新Es数据库。
在本发明一实施例中,写入模块420还适于,在Mysql数据库的数据访问对象Dao中增加钩子函数,当Mysql数据库产生数据更新事件时,将数据更新事件对应的数据更新记录写入钩子函数中。利用钩子函数将数据更新记录写入本地消息列表中。
在本发明一实施例中,消息队列包括基于存储***Redis或分布式发布订阅消息***kafka实现的消息队列。
本发明实施例还提供了另一种Mysql数据库的数据更新到Es数据库的装置,图5示出了根据本发明另一个实施例的Mysql数据库的数据更新到Es数据库的装置的结构示意图。参见图5,Mysql数据库的数据更新到Es数据库的装置400除了包含上述各模块之外,还可以包括启动模块450、监听模块460、检测模块470以及补偿模块480。
启动模块450,适于若存在多个Es数据库关注了相应的Topic消息,则为各Es数据库分别启动第二类常驻进程。
监听模块460,与启动模块450和更新模块440分别耦合,适于任一个Es数据库对应的第二类常驻进程在消息队列中监听该Es数据库关注的Topic消息。
检测模块470,与创建模块410耦合,适于按照预设时间间隔检测Mysql数据库中是否存在数据更新。
补偿模块480,与检测模块470耦合,适于若检测模块470按照预设时间间隔检测到Mysql数据库中存在数据更新,则将预设时间间隔内更新的数据补偿至Es数据库中。
在本发明一实施例中,数据更新事件包括添加数据、删除数据、修改数据中至少一项。
在本发明一实施例中,更新模块440还适于,分析获取到的Topic消息的类型。依据Topic消息的类型触发对应的数据处理事件,基于数据处理事件对Es数据库中与Topic消息对应的数据进行处理,以更新Es数据库。
在本发明一实施例中,Topic消息的类型与数据更新事件相关,若数据更新事件为添加数据,则Topic消息的类型为添加类型。若数据更新事件为删除数据,则Topic消息的类型为删除类型。若数据更新事件为修改数据,则Topic消息的类型为修改类型。
在本发明一实施例中,更新模块440还适于,若Topic消息的类型为添加类型,则触发数据添加事件,在Es数据库中添加与Topic消息对应的数据。若Topic消息的类型为删除类型,则触发数据删除事件,将Es数据库中与Topic消息对应的数据删除。若Topic消息的类型为修改类型,则触发数据修改事件,对Es数据库中与Topic消息对应的数据进行相应的修改。
在本发明一实施例中,检测模块470还适于,检测服务器属性列表所在页面是否接收到编辑操作,其中,服务器列表中包括与服务器相关的属性信息,且服务器相关的属性信息存储于Mysql数据库中。更新模块440还适于,若检测模块470检测到服务器属性列表所在页面接收到编辑操作,则调用预置在Es数据库上的实时更新接口对Es数据库中与编辑操作对应的数据进行更新。
在本发明一实施例中,与服务器相关的属性信息包括服务器IP地址、服务器配置参数、服务器品牌、服务器型号等等中的至少之一。
依据本发明的再一方面,还提供了一种计算机存储介质,计算机存储介质存储有计算机程序代码,当计算机程序代码在计算设备上运行时,导致计算设备执行上文任一实施例的Mysql数据库的数据更新到Es数据库的方法。
依据本发明的再一方面,还提供了一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当计算机程序代码被处理器运行时,导致计算设备执行上文任一实施例的Mysql数据库的数据更新到Es数据库的方法。
根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
在本发明实施例中,首先,基于Mysql数据库创建本地消息列表,当Mysql数据库产生数据更新事件时,将数据更新事件对应的数据更新记录写入本地消息列表中。然后,利用预先启动的第一类常驻进程实时读取本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中。若采用预先启动的第二类常驻进程在消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新Es数据库。由此,本发明实施例并未将Mysql数据库中的数据更新记录直接写入消息队列,而是先写入新创建的位于Mysql数据库本地的消息列表中,这样,可以在本地消息列表中记录到完整的Mysql数据库更新数据后,再将完整的更新数据写入Es数据库,进而使得最终更新至Es数据库中数据是高可用的完整数据。本发明实施例将Mysql数据库中的数据更新至Es数据库的实现过程简洁高效,还有效保证了更新至Es数据库中数据的实时性和准确性。进一步地,用户在查询数据列表时也无需直接从Mysql数据库联查多个数据表,而可以直接在Es数据库中查找所需数据,提高了数据的查询效率,减少了数据的查询时间。
所属领域的技术人员可以清楚地了解到,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。
本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。
在本发明一实施例中,提供了A1、一种Mysql数据库的数据更新到Es数据库的方法,包括:
基于Mysql数据库创建本地消息列表;
当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中;
利用预先启动的第一类常驻进程实时读取所述本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中;
若采用预先启动的第二类常驻进程在所述消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新所述Es数据库。
A2、根据A1所述的方法,其中,当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中,包括:
在所述Mysql数据库的数据访问对象Dao中增加钩子函数;
当Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述钩子函数中;
利用所述钩子函数将所述数据更新记录写入所述本地消息列表中。
A3、根据A1或A2所述的方法,其中,所述消息队列包括基于存储***Redis或分布式发布订阅消息***kafka实现的消息队列。
A4、根据A1或A2所述的方法,其中,还包括:
若存在多个Es数据库关注了相应的Topic消息,则为各Es数据库分别启动第二类常驻进程;
任一个Es数据库对应的第二类常驻进程在所述消息队列中监听该Es数据库关注的Topic消息。
A5、根据A1或A2所述的方法,其中,所述数据更新事件包括以下至少之一:添加数据、删除数据、修改数据。
A6、根据A5所述的方法,其中,基于获取到的Topic消息更新所述Es数据库,包括:
分析获取到的Topic消息的类型;
依据所述Topic消息的类型触发对应的数据处理事件,基于数据处理事件对所述Es数据库中与Topic消息对应的数据进行处理,以更新所述Es数据库。
A7、根据A6所述的方法,其中,所述Topic消息的类型与所述数据更新事件相关,
若所述数据更新事件为添加数据,则所述Topic消息的类型为添加类型;
若所述数据更新事件为删除数据,则所述Topic消息的类型为删除类型;
若所述数据更新事件为修改数据,则所述Topic消息的类型为修改类型。
A8、根据A7所述的方法,其中,依据所述Topic消息的类型触发对应的数据处理事件,基于数据处理事件对所述Es数据库中与Topic消息对应的数据进行处理,包括:
若所述Topic消息的类型为添加类型,则触发数据添加事件,在所述Es数据库中添加与所述Topic消息对应的数据;
若所述Topic消息的类型为删除类型,则触发数据删除事件,将所述Es数据库中与所述Topic消息对应的数据删除;
若所述Topic消息的类型为修改类型,则触发数据修改事件,对所述Es数据库中与所述Topic消息对应的数据进行相应的修改。
A9、根据A1或A2所述的方法,其中,还包括:
按照预设时间间隔检测所述Mysql数据库中是否存在数据更新;
若是,则将所述预设时间间隔内更新的数据补偿至所述Es数据库中。
A10、根据A1或A2所述的方法,其中,还包括:
检测服务器属性列表所在页面是否接收到编辑操作,其中,所述服务器列表中包括与所述服务器相关的属性信息,且所述服务器相关的属性信息存储于所述Mysql数据库中;
若是,则调用预置在所述Es数据库上的实时更新接口对所述Es数据库中与编辑操作对应的数据进行更新。
A11、根据A10所述的方法,其中,与所述服务器相关的属性信息包括以下至少之一:
服务器IP地址、服务器配置参数、服务器品牌、服务器型号。
B12、一种Mysql数据库的数据更新到Es数据库的装置,包括:
创建模块,适于基于Mysql数据库创建本地消息列表;
写入模块,适于当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中;
读取模块,适于利用预先启动的第一类常驻进程实时读取所述本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中;
更新模块,适于若采用预先启动的第二类常驻进程在所述消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新所述Es数据库。
B13、根据B12所述的装置,其中,所述写入模块还适于:
在所述Mysql数据库的数据访问对象Dao中增加钩子函数;
当Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述钩子函数中;
利用所述钩子函数将所述数据更新记录写入所述本地消息列表中。
B14、根据B12或B13所述的装置,其中,所述消息队列包括基于存储***Redis或分布式发布订阅消息***kafka实现的消息队列。
B15、根据B12或B13所述的装置,其中,还包括:
启动模块,适于若存在多个Es数据库关注了相应的Topic消息,则为各Es数据库分别启动第二类常驻进程;
监听模块,适于任一个Es数据库对应的第二类常驻进程在所述消息队列中监听该Es数据库关注的Topic消息。
B16、根据B12或B13所述的装置,其中,所述数据更新事件包括以下至少之一:添加数据、删除数据、修改数据。
B17、根据B16所述的装置,其中,所述更新模块还适于:
分析获取到的Topic消息的类型;
依据所述Topic消息的类型触发对应的数据处理事件,基于数据处理事件对所述Es数据库中与Topic消息对应的数据进行处理,以更新所述Es数据库。
B18、根据B17所述的装置,其中,所述Topic消息的类型与所述数据更新事件相关,
若所述数据更新事件为添加数据,则所述Topic消息的类型为添加类型;
若所述数据更新事件为删除数据,则所述Topic消息的类型为删除类型;
若所述数据更新事件为修改数据,则所述Topic消息的类型为修改类型。
B19、根据B18所述的装置,其中,所述更新模块还适于:
若所述Topic消息的类型为添加类型,则触发数据添加事件,在所述Es数据库中添加与所述Topic消息对应的数据;
若所述Topic消息的类型为删除类型,则触发数据删除事件,将所述Es数据库中与所述Topic消息对应的数据删除;
若所述Topic消息的类型为修改类型,则触发数据修改事件,对所述Es数据库中与所述Topic消息对应的数据进行相应的修改。
B20、根据B12或B13所述的装置,其中,还包括:
检测模块,适于按照预设时间间隔检测所述Mysql数据库中是否存在数据更新;
补偿模块,适于若检测模块按照预设时间间隔检测到所述Mysql数据库中存在数据更新,则将所述预设时间间隔内更新的数据补偿至所述Es数据库中。
B21、根据B12或B13所述的装置,其中,
所述检测模块,还适于检测服务器属性列表所在页面是否接收到编辑操作,其中,所述服务器列表中包括与所述服务器相关的属性信息,且所述服务器相关的属性信息存储于所述Mysql数据库中;
所述更新模块,还适于若所述检测模块检测到服务器属性列表所在页面接收到编辑操作,则调用预置在所述Es数据库上的实时更新接口对所述Es数据库中与编辑操作对应的数据进行更新。
B22、根据B21所述的装置,其中,与所述服务器相关的属性信息包括以下至少之一:
服务器IP地址、服务器配置参数、服务器品牌、服务器型号。
C23、一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行A1-A11任一项所述的Mysql数据库的数据更新到Es数据库的方法。
D24、一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行A1-A11任一项所述的Mysql数据库的数据更新到Es数据库的方法。
Claims (10)
1.一种Mysql数据库的数据更新到Es数据库的方法,包括:
基于Mysql数据库创建本地消息列表;
当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中;
利用预先启动的第一类常驻进程实时读取所述本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中;
若采用预先启动的第二类常驻进程在所述消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新所述Es数据库。
2.根据权利要求1所述的方法,其中,当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中,包括:
在所述Mysql数据库的数据访问对象Dao中增加钩子函数;
当Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述钩子函数中;
利用所述钩子函数将所述数据更新记录写入所述本地消息列表中。
3.根据权利要求1或2所述的方法,其中,所述消息队列包括基于存储***Redis或分布式发布订阅消息***kafka实现的消息队列。
4.根据权利要求1或2所述的方法,其中,还包括:
若存在多个Es数据库关注了相应的Topic消息,则为各Es数据库分别启动第二类常驻进程;
任一个Es数据库对应的第二类常驻进程在所述消息队列中监听该Es数据库关注的Topic消息。
5.根据权利要求1或2所述的方法,其中,所述数据更新事件包括以下至少之一:添加数据、删除数据、修改数据。
6.根据权利要求5所述的方法,其中,基于获取到的Topic消息更新所述Es数据库,包括:
分析获取到的Topic消息的类型;
依据所述Topic消息的类型触发对应的数据处理事件,基于数据处理事件对所述Es数据库中与Topic消息对应的数据进行处理,以更新所述Es数据库。
7.根据权利要求6所述的方法,其中,所述Topic消息的类型与所述数据更新事件相关,
若所述数据更新事件为添加数据,则所述Topic消息的类型为添加类型;
若所述数据更新事件为删除数据,则所述Topic消息的类型为删除类型;
若所述数据更新事件为修改数据,则所述Topic消息的类型为修改类型。
8.一种Mysql数据库的数据更新到Es数据库的装置,包括:
创建模块,适于基于Mysql数据库创建本地消息列表;
写入模块,适于当所述Mysql数据库产生数据更新事件时,将所述数据更新事件对应的数据更新记录写入所述本地消息列表中;
读取模块,适于利用预先启动的第一类常驻进程实时读取所述本地消息列表中的数据更新记录,且将读取到的数据更新记录发布到消息队列相应的Topic中;
更新模块,适于若采用预先启动的第二类常驻进程在所述消息队列中监听到Es数据库关注的Topic消息,获取监听到的Topic消息,基于获取到的Topic消息更新所述Es数据库。
9.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行权利要求1-7任一项所述的Mysql数据库的数据更新到Es数据库的方法。
10.一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行权利要求1-7任一项所述的Mysql数据库的数据更新到Es数据库的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811028161.6A CN110928885B (zh) | 2018-09-04 | 2018-09-04 | Mysql数据库的数据更新到Es数据库的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811028161.6A CN110928885B (zh) | 2018-09-04 | 2018-09-04 | Mysql数据库的数据更新到Es数据库的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928885A true CN110928885A (zh) | 2020-03-27 |
CN110928885B CN110928885B (zh) | 2023-05-16 |
Family
ID=69855739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811028161.6A Active CN110928885B (zh) | 2018-09-04 | 2018-09-04 | Mysql数据库的数据更新到Es数据库的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110928885B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111954038A (zh) * | 2020-08-21 | 2020-11-17 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于es高效自动同步可配置的搜索方法及*** |
CN111966719A (zh) * | 2020-10-21 | 2020-11-20 | 四川新网银行股份有限公司 | 一种分布式消费信贷***本地数据缓存实时刷新的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120030172A1 (en) * | 2010-07-27 | 2012-02-02 | Oracle International Corporation | Mysql database heterogeneous log based replication |
WO2016101752A1 (zh) * | 2014-12-22 | 2016-06-30 | 北京奇虎科技有限公司 | 数据同步方法及装置 |
CN106960007A (zh) * | 2017-02-28 | 2017-07-18 | 北京京东尚科信息技术有限公司 | 一种数据更新方法、装置及电子设备 |
CN107783975A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN107885804A (zh) * | 2017-11-02 | 2018-04-06 | 平安科技(深圳)有限公司 | 数据库同步方法、应用服务器及计算机可读存储介质 |
-
2018
- 2018-09-04 CN CN201811028161.6A patent/CN110928885B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120030172A1 (en) * | 2010-07-27 | 2012-02-02 | Oracle International Corporation | Mysql database heterogeneous log based replication |
WO2016101752A1 (zh) * | 2014-12-22 | 2016-06-30 | 北京奇虎科技有限公司 | 数据同步方法及装置 |
CN107783975A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN106960007A (zh) * | 2017-02-28 | 2017-07-18 | 北京京东尚科信息技术有限公司 | 一种数据更新方法、装置及电子设备 |
CN107885804A (zh) * | 2017-11-02 | 2018-04-06 | 平安科技(深圳)有限公司 | 数据库同步方法、应用服务器及计算机可读存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111954038A (zh) * | 2020-08-21 | 2020-11-17 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于es高效自动同步可配置的搜索方法及*** |
CN111954038B (zh) * | 2020-08-21 | 2021-12-21 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于es高效自动同步可配置的搜索方法及*** |
CN111966719A (zh) * | 2020-10-21 | 2020-11-20 | 四川新网银行股份有限公司 | 一种分布式消费信贷***本地数据缓存实时刷新的方法 |
CN111966719B (zh) * | 2020-10-21 | 2021-07-13 | 四川新网银行股份有限公司 | 一种分布式消费信贷***本地数据缓存实时刷新的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110928885B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7200259B2 (ja) | データオブジェクトストアのためのデータ保持ハンドリング | |
US9836346B2 (en) | Error troubleshooting using a correlated knowledge base | |
US9971777B2 (en) | Smart archiving of real-time performance monitoring data | |
US10204016B1 (en) | Incrementally backing up file system hard links based on change logs | |
CN110162512B (zh) | 一种日志检索方法、装置及存储介质 | |
US11093340B2 (en) | Summary file change log for faster forever incremental backup | |
CN107688626B (zh) | 慢查询日志处理方法、装置及电子设备 | |
US9031909B2 (en) | Provisioning and/or synchronizing using common metadata | |
CN110737682A (zh) | 一种缓存操作方法、装置、存储介质和电子设备 | |
CN108809704B (zh) | 基于动态时间窗的数据去重统计方法及装置 | |
US20200233837A1 (en) | Intelligent method to index storage system files accounting for snapshots | |
US20230359587A1 (en) | Analysis of streaming data using deltas and snapshots | |
CN110928885A (zh) | Mysql数据库的数据更新到Es数据库的方法及装置 | |
EP3832477A1 (en) | Efficient storage method for time series data | |
US11243979B1 (en) | Asynchronous propagation of database events | |
US9767180B2 (en) | Floating time dimension design | |
CN111435327A (zh) | 一种日志记录的处理方法、装置及*** | |
CN115454773A (zh) | 数据采集方法、装置、电子设备和存储介质 | |
CN112632428B (zh) | 一种页面局部刷新方法、装置、设备和存储介质 | |
CN104317820A (zh) | 报表的统计方法和装置 | |
CN114547501A (zh) | 一种基于vue管理的页面后退方法、装置及计算机设备 | |
CN110515803B (zh) | 针对日志消息的处理方法、装置以及电子设备 | |
JP6988178B2 (ja) | 情報処理装置、ログ管理プログラム及びログ管理方法 | |
CN112463741A (zh) | 一种聚合大文件的清理方法及相关设备 | |
US9069751B1 (en) | Systems and methods for managing document pedigrees |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230424 Address after: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, high tech Zone, Binhai New Area, Tianjin Applicant after: 3600 Technology Group Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Applicant before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |