CN115827647A - 数据存储方法、装置、存储介质以及电子设备 - Google Patents
数据存储方法、装置、存储介质以及电子设备 Download PDFInfo
- Publication number
- CN115827647A CN115827647A CN202210841811.9A CN202210841811A CN115827647A CN 115827647 A CN115827647 A CN 115827647A CN 202210841811 A CN202210841811 A CN 202210841811A CN 115827647 A CN115827647 A CN 115827647A
- Authority
- CN
- China
- Prior art keywords
- target data
- data
- target
- message queue
- cache
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储方法、装置、存储介质以及电子设备,涉及大数据领域。该方法包括:接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中;判断目标数据是否成功写入消息队列中;在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中;在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。通过本申请,解决了相关技术中MySQL数据库无法并发存储大量数据的问题。
Description
技术领域
本申请涉及大数据领域,具体而言,涉及一种数据存储方法、装置、存储介质以及电子设备。
背景技术
随着信息化技术飞速的发展,数据呈现爆炸式的增长,随着数据逐渐增多,对数据存储的要求也逐渐增高。现有技术方案中的数据存储流程通常为:用户请求发送至网关,由网关进行一个负载均衡的转发,转发到后台应用服务,后台应用服务接受到请求,生成对应的数据,并将数据存入对应的数据库中,并将数据反馈至用户端,其中,数据库通常使用MySQL数据库。
但是,由于MySQL数据库的主要瓶颈存在于输入输出性能,导致MySQL数据库不能很好的运用在并发比较大的场景。在我们的业务系统中如果在使用者较多或者并发较大的情况下,MySQL数据库就会成为系统的瓶颈,导致数据存储系统卡顿。此外在瞬时并发较大的情况下,MySQL数据库并不能的很好的抵抗流量洪峰。但是MySQL数据库是很好的关系性数据库,因此需要通过对数据存储系统进行优化,从而解决MySQL数据库中存在的存储问题。
针对相关技术中MySQL数据库无法并发存储大量数据的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供一种数据存储方法、装置、存储介质以及电子设备,以解决相关技术中MySQL数据库无法并发存储大量数据的问题。
根据本申请的一个方面,提供了一种数据存储方法。该方法包括:接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中;判断目标数据是否成功写入消息队列中;在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中;在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。
可选地,在将目标数据发送至目标引擎中之后,该方法还包括:通过目标引擎中的预设规则确定目标数据的数据属性信息,得到目标属性信息;根据目标属性信息和预设映射关系确定目标数据对应的数据处理方法,得到目标数据处理方法,其中,预设映射关系用于表征多个预设数据属性信息与对应的数据处理方法之间的关系,数据处理方法至少包括以下之一:数据存储方法、预警通知方法和数据删除方法;在目标数据处理方法为数据存储方法的情况下,执行定时将目标引擎中的目标数据重新写入消息队列中的操作;在目标数据处理方法为预警通知方法的情况下,确定发送目标数据的机构,生成目标数据的告警信息,并将告警信息发送至机构;在目标数据处理方法为数据删除方法的情况下,删除目标引擎中的目标数据,并删除缓存中的目标数据。
可选地,通过目标引擎中的预设规则确定目标数据的数据属性信息,得到目标数据的目标属性信息包括:判断目标数据是否携带重要度标识和/或用户预设标识;在目标数据携带重要度标识的情况下,将重要度标识确定为目标属性信息;和/或在目标数据携带用户预设标识的情况下,将用户预设标识确定为目标属性信息;在目标数据未携带重要度标识和用户预设标识的情况下,将目标数据输入自然语言处理模型中,得到目标数据对应的属性标识,并将属性标识确定为目标属性信息,其中,自然语言处理模型为通过属性标识和历史数据训练得到的模型。
可选地,在定时从目标引擎中获取目标数据,重新将目标数据写入消息队列中之前,该方法还包括:获取将目标数据写入消息队列的写入失败次数,并判断写入失败次数是否大于次数阈值;在写入失败次数小于等于次数阈值的情况下,执行定时将目标引擎中的目标数据重新写入消息队列中的步骤;在写入失败次数大于次数阈值的情况下,确定发送目标数据的机构,生成目标数据的告警信息,并将告警信息发送至机构。
可选地,在将目标数据通过消息队列存储至数据库集群中之后,该方法还包括:接收用户端发送的数据获取请求,其中,数据获取请求用于获取目标数据;从缓存中获取目标数据,并将目标数据发送至用户端。
可选地,在将目标数据通过消息队列存储至数据库集群中之后,该方法还包括:按照预设周期将缓存中的目标数据与数据库集群中的目标数据进行对比,得到对比结果;在对比结果表征缓存中的目标数据的版本与数据库集群中的目标数据的版本不一致的情况下,将版本低的目标数据更新为版本高的目标数据,其中,版本表征数据的更新版本;在对比结果表征缓存中的目标数据的数据内容与数据库集群中的目标数据的数据内容不一致的情况下,将缓存中的目标数据通过消息队列发送至数据库集群,以更新数据库集群中的目标数据。
可选地,在将目标数据通过消息队列存储至数据库集群中之后,该方法还包括:在接收到修改指令后,根据修改指令修改缓存中的目标数据,并通过缓存将修改后的目标数据发送至消息队列中,其中,修改指令用于对目标数据进行修改;通过消息队列将修改后的目标数据发送至数据库集群中,并将数据库集群中的目标数据更新为修改后的目标数据。
根据本申请的另一方面,提供了一种数据存储装置。该装置包括:存储单元,用于接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中;判断单元,用于判断目标数据是否成功写入消息队列中;第一发送单元,用于在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中;监听单元,用于在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。
根据本发明实施例的另一方面,还提供了一种计算机存储介质,计算机存储介质用于存储程序,其中,程序运行时控制计算机存储介质所在的设备执行一种数据存储方法。
根据本发明实施例的另一方面,还提供了一种电子设备,包含一个或多个处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种数据存储方法。
通过本申请,采用以下步骤:接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中;判断目标数据是否成功写入消息队列中;在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中;在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。解决了相关技术中MySQL数据库无法并发存储大量数据的问题。通过先将目标数据存储至每秒查询率较高的缓存中,并通过缓存将目标数据发送至消息队列中,由于消息队列的解耦性、异步性和削峰性,可以将目标数据平滑的写入MySQL数据库中,并将无法成功写入的数据存储至目标引擎中,并定时重新写入消息队列中,进而达到了通过消息队列和目标引擎辅助MySQL数据库进行并发存储大量数据的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的数据存储方法的流程图;
图2是根据本发明实施例的一种可选的数据存储系统的示意图;
图3是根据本申请实施例提供的数据存储装置的示意图;
图4为根据本申请实施例提供的一种电子设备的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
需要说明的是,本公开所确定的数据存储方法、装置、存储介质以及电子设备可用于大数据领域,也可用于除大数据领域之外的任意领域,本公开所确定的数据存储方法、装置、存储介质以及电子设备的应用领域不做限定。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
消息队列:基础数据结构中“先进先出”的一种数据结构,可用于解决应用解耦,异步消息,流量削峰等问题。
缓存:可以进行高速数据交换的存储器,其访问速度比RAM快。
每秒查询率:对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
根据本申请的实施例,提供了一种数据存储方法。
Redis:Remote Dictionary Server远程字典服务,是一个开源的数据库,并提供多种语言的API。
图1是根据本申请实施例提供的数据存储方法的流程图。如图1所示,该方法包括以下步骤:
步骤S101,接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中。
具体的,目标数据可以为根据用户需求生成的对应的数据,并在向用户反馈该数据的时候,将该数据进行存储。由于MySQL数据库无法高并发的存储大量数据,因此需要先将数据存储至缓存中,并从缓存中存储至消息队列中进行短暂的存储,消息队列可以按照MySQL数据库的最大并发存储量进行数据存储量的控制,从而保证数据可以正常的存储至MySQL数据库中。
步骤S102,判断目标数据是否成功写入消息队列中。
具体的,在向消息队列中写入目标数据的时候,可能会出现写入异常的现象,此时,会产生大量的写入失败数据,因此需要在向消息队列中写入目标数据的时候,判断目标数据是否成功的写入,从而及时的处理未成功写入的数据。
步骤S103,在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中。
具体的,在目标数据未成功写入的情况下,需要将目标数据发送至目标引擎中,并在目标引擎中对目标数据进行处理和存储,并且目标插件会定时将目标引擎中的目标数据重新写入消息队列中,从而保证全部数据均可以通过消息队列添加至数据库集群中。
步骤S104,在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。
具体的,成功写入消息队列的目标数据会被目标插件实时监听,并在消息队列指示将目标数据发送至数据库集群的时候,目标插件将所述目标数据添加至数据库集群中,从而完成目标数据的持久化存储。
在本实施例中,如图2所示,可以通过一种可选的数据存储系统为执行主体执行前述的数据存储方法,该数据存储系统至少包括后台应用、目标插件、缓存组件、消息队列、目标引擎以及MySQL数据库。
具体的,如图2所示,后台应用在根据用户请求生成相应的目标数据后,将目标数据发送至目标插件中,此时,目标插件接收到目标数据,并将目标数据存储至缓存组件中,并通过缓存组件将目标数据发送至消息队列中,可选地,由于目标插件中具有暂存组件,因此也可以通过目标插件同时将所述目标数据发送至缓存组件和消息队列中,将目标数据通过缓存组件发送至消息队列中的目的是为了保证数据一致性,防止消息队列和缓存组件的数据不同的现象发生。
例如,缓存组件可以为Redis,先确定目标插件对应的配置文件,其中,配置文件中的主要配置有:需要监听的消息队列地址、订阅的消息队列的topic(标志)名称、失败消息拉取间隔时间、失败消息拉取阈值、定时任务线程池配置、Redis地址、Redis连接池配置等,基于这些配置去创建对应的线程池以及启动目标插件。在目标插件启动后首先去连接Redis,并且创建Redis服务的连接池,然后基于消息队列的配置信息去连接消息队列,并且向消息队列订阅配置文件中指定的topic以监听topic。基于线程池配置信息创建一个定时任务线程池用于定时的去拉取数据库中存放的写入消息队列失败的数据。在目标插件运行过程中,当需要通过目标插件来写入数据时,可以指定对应的路由key以及要写入的数据,通过异步写入的方式将任务提交到目标插件内部提供的线程池中,然后由线程池中的线程进行写入Redis,然后写入消息队列中。由于目标插件在启动时便订阅了消息队列相应的topic,一旦消息队列中的topic有消息写入时,目标插件中订阅该topic的线程池中的线程便会收到这个消息,由该线程将接收到的消息平滑的持久化到数据库中,完成数据落库。
进一步的,在将数据写入消息队列时,可能会出现写入异常的情况,此时,目标插件会将写入失败的目标数据发送至目标引擎中,并在目标引擎中对目标数据进行处理和存储,并且目标插件会定时将目标引擎中的目标数据重新写入消息队列中,从而保证全部数据均可以通过消息队列添加至数据库集群中,其中,数据库集群可以为MySQL数据库。
若目标数据可以成功写入消息队列中,则目标插件实时监听消息队列,在消息队列指示将目标数据发送至数据库集群的时候,目标插件将所述目标数据添加至数据库集群中。
例如,以大量用户在商城界面上收藏了某个商品为例。大量用户在收藏商品时,为了快速响应用户请求并且生成收藏信息数据,目标插件会将生成的大量目标数据存储至缓存中,然后将这数据信息添加到消息队列以后就立即向用户返回收藏成功的结果。而消息队列将这条写入的数据推送给订阅了对应Topic的应用程序进行消费,消费方消费到该数据后将该数据持久化到MySQL数据库。由于消息队列可以控制推送速度,并且高吞吐,消息可靠性高等特性,所以当有大批量数据写入时也能够抗住流量洪峰,不会导致数据存储系统和MySQL数据库发生异常。
本申请实施例提供的数据存储方法,通过接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中;判断目标数据是否成功写入消息队列中;在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中;在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。解决了相关技术中MySQL数据库无法并发存储大量数据的问题。通过先将目标数据存储至每秒查询率较高的缓存中,并通过缓存将目标数据发送至消息队列中,由于消息队列的解耦性、异步性和削峰性,可以将目标数据平滑的写入MySQL数据库中,并将无法成功写入的数据存储至目标引擎中,并定时重新写入消息队列中,进而达到了通过消息队列和目标引擎辅助MySQL数据库进行并发存储大量数据的效果。
为了在目标引擎中对不同的目标数据进行相应的处理,可选地,在本申请实施例提供的数据存储方法中,在将目标数据发送至目标引擎中之后,该方法还包括:通过目标引擎中的预设规则确定目标数据的数据属性信息,得到目标属性信息;根据目标属性信息和预设映射关系确定目标数据对应的数据处理方法,得到目标数据处理方法,其中,预设映射关系用于表征多个预设数据属性信息与对应的数据处理方法之间的关系,数据处理方法至少包括以下之一:数据存储方法、预警通知方法和数据删除方法;在目标数据处理方法为数据存储方法的情况下,执行定时将目标引擎中的目标数据重新写入消息队列中的操作;在目标数据处理方法为预警通知方法的情况下,确定发送目标数据的机构,生成目标数据的告警信息,并将告警信息发送至机构;在目标数据处理方法为数据删除方法的情况下,删除目标引擎中的目标数据,并删除缓存中的目标数据。
具体的,在将无法成功写入消息队列的目标数据发送至目标引擎中之后,需要在目标引擎中对目标数据进行处理,从而确定将无法成功写入消息队列的目标数据进行合理的处置。
首先,需要预设规则确定目标数据的数据属性信息,得到目标属性信息,其中,目标属性信息可以为目标数据自身携带的数据属性,例如,目标数据是否为重要数据、是否为异常数据、是否为加密数据等,在确定目标属性信息后,需要根据目标属性信息和预设映射关系确定目标数据对应的数据处理方法,得到目标数据处理方法,也即,根据预设映射关系中的目标属性信息与数据处理方法之间的对应关系进行目标数据的数据处理方法的确定。
例如,目标属性信息可以为目标数据为重要数据,预设映射关系中,重要数据对应的数据处理方法为数据存储方法,则目标数据的数据处理方法即为数据存储方法。
进一步的,在目标数据处理方法为数据存储方法的情况下,表明目标引擎已将目标数据存储至目标引擎中的数据库中,则可以对目标数据执行定时将目标引擎中的目标数据重新写入消息队列中的操作;在目标数据处理方法为预警通知方法的情况下,表明该数据出现异常,需要通知目标数据对应的系统维护人员,也即目标数据对应的机构,并将异常该告警信息发送至对应的机构中;在目标数据处理方法为数据删除方法的情况下,证明该数据较为重要,不可以返回至请求方,需要删除目标引擎中的目标数据,并删除缓存中的目标数据,从而对数据进行保护。本实施例通过在目标引擎中对不同的数据进行不同的操作,达到了对不同数据进行合理处置的效果。
为了准确的确定目标数据的属性信息,可选地,在本申请实施例提供的数据存储方法中,通过目标引擎中的预设规则确定目标数据的数据属性信息,得到目标数据的目标属性信息包括:判断目标数据是否携带重要度标识和/或用户预设标识;在目标数据携带重要度标识的情况下,将重要度标识确定为目标属性信息;和/或在目标数据携带用户预设标识的情况下,将用户预设标识确定为目标属性信息;在目标数据未携带重要度标识和用户预设标识的情况下,将目标数据输入自然语言处理模型中,得到目标数据对应的属性标识,并将属性标识确定为目标属性信息,其中,自然语言处理模型为通过属性标识和历史数据训练得到的模型。
具体的,目标数据中可能还存在对应的标识,该标识为目标数据在创建时人为添加的标识,在将目标数据发送至目标引擎后,目标引擎会根据重要度规则检查目标数据是否携带了状态,也即,目标数据是否携带重要度标识,在携带重要度标识的情况下,可以表明目标数据为重要数据。
进一步的,还需要根据用户自定义规则确定目标数据是否符合用户自定义规则,也即目标数据是否携带用户预设标识,在携带用户预设标识的情况下,确定目标数据符合用户自定义规则。
在目标数据既不符合重要度规则,也不符合用户自定义规则的情况下,也即,目标数据未携带重要度标识和用户预设标识的情况下,将目标数据输入自然语言处理模型中,通过自然语言处理模型确定目标数据的目标属性信息,其中,自然语言处理模型可以为完成训练的NPL自然语言处理模型,可以通过大量属性标识以及相应的历史数据对NPL自然语言处理模型进行训练,从而得到完成训练的NPL自然语言处理模型。
可选地,在本申请实施例提供的数据存储方法中,在定时从目标引擎中获取目标数据,重新将目标数据写入消息队列中之前,该方法还包括:获取将目标数据写入消息队列的写入失败次数,并判断写入失败次数是否大于次数阈值;在写入失败次数小于等于次数阈值的情况下,执行定时将目标引擎中的目标数据重新写入消息队列中的步骤;在写入失败次数大于次数阈值的情况下,确定发送目标数据的机构,生成目标数据的告警信息,并将告警信息发送至机构。
需要说明的是,由于在定时从目标引擎中获取目标数据后,需要重新将目标数据写入消息队列中,因此,会出现将目标数据再次写入消息队列时仍写入失败的现象,因此,为了防止陷入重复写入失败的死循环中,所以,在每次写入消息队列失败的时候,将目标数据中的写入失败次数进行变更,从而可以通过写入失败次数确定是否需要再次执行重复写入消息队列的操作。
具体的,可以将目标数据的写入失败次数与次数阈值进行对比,并根据对比结果确定是否继续执行目标数据写入操作。在写入失败次数小于等于次数阈值的情况下,可以再次执行目标数据写入操作,在写入失败次数大于次数阈值的情况下,表征失败次数过多,数据可能存在问题,因此需要通知目标数据对应的系统维护人员,也即目标数据对应的机构,并将异常该告警信息发送至对应的机构中,从而告知请求人数据处于异常状态,无法进行存储。本实施例达到了避免陷入重复写入失败的死循环的现象出现的效果。
可选地,在本申请实施例提供的数据存储方法中,在将目标数据通过消息队列存储至数据库集群中之后,该方法还包括:接收用户端发送的数据获取请求,其中,数据获取请求用于获取目标数据;从缓存中获取目标数据,并将目标数据发送至用户端。
具体的,在用户再次请求获取目标数据的时候,由于缓存的并发量较大,并且数据传输速度较快,因此可以直接从缓存中获取目标数据,并直接将缓存数据返回至用户端,从而达到数据存储系统快速响应用户需求的效果。
可选地,在本申请实施例提供的数据存储方法中,在将目标数据通过消息队列存储至数据库集群中之后,该方法还包括:按照预设周期将缓存中的目标数据与数据库集群中的目标数据进行对比,得到对比结果;在对比结果表征缓存中的目标数据的版本与数据库集群中的目标数据的版本不一致的情况下,将版本低的目标数据更新为版本高的目标数据,其中,版本表征数据的更新版本;在对比结果表征缓存中的目标数据的数据内容与数据库集群中的目标数据的数据内容不一致的情况下,将缓存中的目标数据通过消息队列发送至数据库集群,以更新数据库集群中的目标数据。
需要说明的是,由于缓存的作用是高并发、快速传输,数据库集群的作用是持久化存储,因此,保证目标数据在缓存和数据库集群中的数据一致是至关重要的。因此,需要保证目标数据在缓存和数据库集群中的数据版本和数据内容均一致。
具体的,在缓存中的目标数据的版本与数据库集群中的目标数据的版本不一致的情况下,需要确定两个存储位置中的较高版本的数据,并在缓存中的目标数据版本较高的情况下,通过消息队列将高版本数据发送至数据库集群中,替换数据库集群中的低版本目标数据,在数据库集群中的目标数据版本较高的情况下,通过目标插件将数据库集群中的目标数据发送至缓存中,替换缓存中的低版本目标数据,从而将版本低的目标数据更新为版本高的目标数据,使得缓存中的目标数据的版本与数据库集群中的目标数据的版本均为最新版本,也即较高版本。
进一步的,在缓存中的目标数据的数据内容与数据库集群中的目标数据的数据内容不一致的情况下,需要以缓存中的目标数据为基准,将数据库集群中的数据进行更改,从而保证数据的准确性。
可选地,在本申请实施例提供的数据存储方法中,在将目标数据通过消息队列存储至数据库集群中之后,该方法还包括:在接收到修改指令后,根据修改指令修改缓存中的目标数据,并通过缓存将修改后的目标数据发送至消息队列中,其中,修改指令用于对目标数据进行修改;通过消息队列将修改后的目标数据发送至数据库集群中,并将数据库集群中的目标数据更新为修改后的目标数据。
具体的,还会出现对数据库集群中的目标数据进行修改的场景,在对数据库集群中的目标数据进行修改的时候,先根据修改指令修改缓存中的目标数据,并通过缓存将修改后的目标数据发送至消息队列中,从而将修改后的数据发送至数据库集群中,从而通过修改后的目标数据替换数据库集群中的未修改的目标数据,从而完成目标数据的更新。
需要说明的是,在修改指令为删除目标数据的时候,由于先将缓存中的数据进行删除,无法向消息队列中添加修改后的目标数据,则直接将删除指令发送至消息队列中,并在数据库集群中执行目标数据的删除操作。
例如,以用户要取消某个收藏的商品场景为例。收到用户的取消请求后,首先从缓存中根据该用户的ID找到该用户收藏的商品,然后将该商品从该用户的收藏中删除。而用户收藏的商品在缓存中通过哈希结构来存放,key为用户ID,hash key为收藏的商品ID,value为商品的详细数据。然后发送一条删除用户收藏某个商品的消息到消息队列中。目标插件将删除指令从消息队列发送至MySQL数据库后,根据用户ID+商品ID删除MySQL数据库中这个收藏的商品记录。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种数据存储装置,需要说明的是,本申请实施例的数据存储装置可以用于执行本申请实施例所提供的用于数据存储方法。以下对本申请实施例提供的数据存储装置进行介绍。
图3是根据本申请实施例提供的数据存储装置的示意图。如图3所示,该装置包括:存储单元31,判断单元32,第一发送单元33,监听单元34。
存储单元31,用于接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中。
判断单元32,用于判断目标数据是否成功写入消息队列中。
第一发送单元33,用于在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中。
监听单元34,用于在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。
本申请实施例提供的数据存储装置,通过存储单元31接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中。判断单元32判断目标数据是否成功写入消息队列中。第一发送单元33在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中。监听单元34在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。解决了相关技术中MySQL数据库无法并发存储大量数据的问题。通过先将目标数据存储至每秒查询率较高的缓存中,并通过缓存将目标数据发送至消息队列中,由于消息队列的解耦性、异步性和削峰性,可以将目标数据平滑的写入MySQL数据库中,并将无法成功写入的数据存储至目标引擎中,并定时重新写入消息队列中,进而达到了通过消息队列和目标引擎辅助MySQL数据库进行并发存储大量数据的效果。
可选地,在本申请实施例提供的数据存储装置中,该装置还包括:第一确定单元,用于通过目标引擎中的预设规则确定目标数据的数据属性信息,得到目标属性信息;第二确定单元,用于根据目标属性信息和预设映射关系确定目标数据对应的数据处理方法,得到目标数据处理方法,其中,预设映射关系用于表征多个预设数据属性信息与对应的数据处理方法之间的关系,数据处理方法至少包括以下之一:数据存储方法、预警通知方法和数据删除方法;第一执行单元,用于在目标数据处理方法为数据存储方法的情况下,执行定时将目标引擎中的目标数据重新写入消息队列中的操作;第三确定单元,用于在目标数据处理方法为预警通知方法的情况下,确定发送目标数据的机构,生成目标数据的告警信息,并将告警信息发送至机构;删除单元,用于在目标数据处理方法为数据删除方法的情况下,删除目标引擎中的目标数据,并删除缓存中的目标数据。
可选地,在本申请实施例提供的数据存储装置中,第一确定单元包括:判断模块,用于判断目标数据是否携带重要度标识和/或用户预设标识;第一确定模块,用于在目标数据携带重要度标识的情况下,将重要度标识确定为目标属性信息;和/或第二确定模块,用于在目标数据携带用户预设标识的情况下,将用户预设标识确定为目标属性信息;第三确定模块,用于在目标数据未携带重要度标识和用户预设标识的情况下,将目标数据输入自然语言处理模型中,得到目标数据对应的属性标识,并将属性标识确定为目标属性信息,其中,自然语言处理模型为通过属性标识和历史数据训练得到的模型。
可选地,在本申请实施例提供的数据存储装置中,在定时从目标引擎中获取目标数据,重新将目标数据写入消息队列中之前,该装置还包括:第一获取单元,用于获取将目标数据写入消息队列的写入失败次数,并判断写入失败次数是否大于次数阈值;第二执行单元,用于在写入失败次数小于等于次数阈值的情况下,执行定时将目标引擎中的目标数据重新写入消息队列中的步骤;第四确定单元,用于在写入失败次数大于次数阈值的情况下,确定发送目标数据的机构,生成目标数据的告警信息,并将告警信息发送至机构。
可选地,在本申请实施例提供的数据存储装置中,在将目标数据通过消息队列存储至数据库集群中之后,该装置还包括:接收单元,用于接收用户端发送的数据获取请求,其中,数据获取请求用于获取目标数据;第二获取单元,用于从缓存中获取目标数据,并将目标数据发送至用户端。
可选地,在本申请实施例提供的数据存储装置中,在将目标数据通过消息队列存储至数据库集群中之后,该装置还包括:对比单元,用于按照预设周期将缓存中的目标数据与数据库集群中的目标数据进行对比,得到对比结果;第一更新单元,用于在对比结果表征缓存中的目标数据的版本与数据库集群中的目标数据的版本不一致的情况下,将版本低的目标数据更新为版本高的目标数据,其中,版本表征数据的更新版本;第二发送单元,用于在对比结果表征缓存中的目标数据的数据内容与数据库集群中的目标数据的数据内容不一致的情况下,将缓存中的目标数据通过消息队列发送至数据库集群,以更新数据库集群中的目标数据。
可选地,在本申请实施例提供的数据存储装置中,在将目标数据通过消息队列存储至数据库集群中之后,该装置还包括:第三发送单元,用于在接收到修改指令后,根据修改指令修改缓存中的目标数据,并通过缓存将修改后的目标数据发送至消息队列中,其中,修改指令用于对目标数据进行修改;第二更新单元,用于通过消息队列将修改后的目标数据发送至数据库集群中,并将数据库集群中的目标数据更新为修改后的目标数据。
上述数据存储装置包括处理器和存储器,上述存储单元31,判断单元32,第一发送单元33,监听单元34等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决了相关技术中MySQL数据库无法并发存储大量数据的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述数据存储方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据存储方法。
如图4所示,本发明实施例提供了一种电子设备,电子设备40包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中;判断目标数据是否成功写入消息队列中;在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中;在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收待存储的目标数据,将目标数据存储至缓存中,并通过缓存将目标数据写入消息队列中;判断目标数据是否成功写入消息队列中;在目标数据未成功写入消息队列中的情况下,将目标数据发送至目标引擎中,并定时将目标引擎中的目标数据重新写入消息队列中;在目标数据成功写入消息队列中的情况下,监听消息队列,并将消息队列中的目标数据存储至数据库集群中。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
接收待存储的目标数据,将所述目标数据存储至缓存中,并通过所述缓存将所述目标数据写入消息队列中;
判断所述目标数据是否成功写入所述消息队列中;
在所述目标数据未成功写入所述消息队列中的情况下,将所述目标数据发送至目标引擎中,并定时将所述目标引擎中的所述目标数据重新写入所述消息队列中;
在所述目标数据成功写入所述消息队列中的情况下,监听所述消息队列,并将所述消息队列中的所述目标数据存储至数据库集群中。
2.根据权利要求1所述的方法,其特征在于,在将所述目标数据发送至目标引擎中之后,所述方法还包括:
通过所述目标引擎中的预设规则确定所述目标数据的数据属性信息,得到目标属性信息;
根据所述目标属性信息和预设映射关系确定所述目标数据对应的数据处理方法,得到目标数据处理方法,其中,所述预设映射关系用于表征多个预设数据属性信息与对应的数据处理方法之间的关系,所述数据处理方法至少包括以下之一:数据存储方法、预警通知方法和数据删除方法;
在所述目标数据处理方法为所述数据存储方法的情况下,执行所述定时将所述目标引擎中的所述目标数据重新写入所述消息队列中的操作;
在所述目标数据处理方法为所述预警通知方法的情况下,确定发送所述目标数据的机构,生成所述目标数据的告警信息,并将所述告警信息发送至所述机构;
在所述目标数据处理方法为所述数据删除方法的情况下,删除所述目标引擎中的所述目标数据,并删除所述缓存中的所述目标数据。
3.根据权利要求2所述的方法,其特征在于,通过所述目标引擎中的预设规则确定所述目标数据的数据属性信息,得到所述目标数据的目标属性信息包括:
判断所述目标数据是否携带重要度标识和/或用户预设标识;
在所述目标数据携带所述重要度标识的情况下,将所述重要度标识确定为所述目标属性信息;和/或在所述目标数据携带所述用户预设标识的情况下,将所述用户预设标识确定为所述目标属性信息;
在所述目标数据未携带所述重要度标识和所述用户预设标识的情况下,将所述目标数据输入自然语言处理模型中,得到所述目标数据对应的属性标识,并将所述属性标识确定为所述目标属性信息,其中,所述自然语言处理模型为通过属性标识和历史数据训练得到的模型。
4.根据权利要求1所述的方法,其特征在于,在定时从所述目标引擎中获取所述目标数据,重新将所述目标数据写入所述消息队列中之前,所述方法还包括:
获取将所述目标数据写入所述消息队列的写入失败次数,并判断所述写入失败次数是否大于次数阈值;
在所述写入失败次数小于等于所述次数阈值的情况下,执行所述定时将所述目标引擎中的所述目标数据重新写入所述消息队列中的步骤;
在所述写入失败次数大于所述次数阈值的情况下,确定发送所述目标数据的机构,生成所述目标数据的告警信息,并将所述告警信息发送至所述机构。
5.根据权利要求1所述的方法,其特征在于,在将所述目标数据通过所述消息队列存储至数据库集群中之后,所述方法还包括:
接收用户端发送的数据获取请求,其中,所述数据获取请求用于获取所述目标数据;
从所述缓存中获取所述目标数据,并将所述目标数据发送至所述用户端。
6.根据权利要求1所述的方法,其特征在于,在将所述目标数据通过所述消息队列存储至数据库集群中之后,所述方法还包括:
按照预设周期将所述缓存中的所述目标数据与所述数据库集群中的所述目标数据进行对比,得到对比结果;
在所述对比结果表征所述缓存中的所述目标数据的版本与所述数据库集群中的所述目标数据的版本不一致的情况下,将版本低的所述目标数据更新为版本高的所述目标数据,其中,所述版本表征数据的更新版本;
在所述对比结果表征所述缓存中的所述目标数据的数据内容与所述数据库集群中的所述目标数据的数据内容不一致的情况下,将所述缓存中的所述目标数据通过所述消息队列发送至所述数据库集群,以更新所述数据库集群中的所述目标数据。
7.根据权利要求1所述的方法,其特征在于,在将所述目标数据通过所述消息队列存储至数据库集群中之后,所述方法还包括:
在接收到修改指令后,根据所述修改指令修改所述缓存中的所述目标数据,并通过所述缓存将修改后的目标数据发送至消息队列中,其中,所述修改指令用于对所述目标数据进行修改;
通过所述消息队列将所述修改后的目标数据发送至所述数据库集群中,并将所述数据库集群中的所述目标数据更新为所述修改后的目标数据。
8.一种数据存储装置,其特征在于,包括:
存储单元,用于接收待存储的目标数据,将所述目标数据存储至缓存中,并通过所述缓存将所述目标数据写入消息队列中;
判断单元,用于判断所述目标数据是否成功写入所述消息队列中;
第一发送单元,用于在所述目标数据未成功写入所述消息队列中的情况下,将所述目标数据发送至目标引擎中,并定时将所述目标引擎中的所述目标数据重新写入所述消息队列中;
监听单元,用于在所述目标数据成功写入所述消息队列中的情况下,监听所述消息队列,并将所述消息队列中的所述目标数据存储至数据库集群中。
9.一种计算机存储介质,其特征在于,所述计算机存储介质用于存储程序,其中,所述程序运行时控制所述计算机存储介质所在的设备执行权利要求1至7中任意一项所述的数据存储方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210841811.9A CN115827647A (zh) | 2022-07-18 | 2022-07-18 | 数据存储方法、装置、存储介质以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210841811.9A CN115827647A (zh) | 2022-07-18 | 2022-07-18 | 数据存储方法、装置、存储介质以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115827647A true CN115827647A (zh) | 2023-03-21 |
Family
ID=85522861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210841811.9A Pending CN115827647A (zh) | 2022-07-18 | 2022-07-18 | 数据存储方法、装置、存储介质以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827647A (zh) |
-
2022
- 2022-07-18 CN CN202210841811.9A patent/CN115827647A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10404822B2 (en) | Predictive rollup and caching for application performance data | |
US10439937B2 (en) | Service addressing in distributed environment | |
US10771306B2 (en) | Log monitoring system | |
US10459780B2 (en) | Automatic application repair by network device agent | |
US10296435B2 (en) | Storage of mass data for monitoring | |
US11093319B2 (en) | Automated recovery of webpage functionality | |
US10452463B2 (en) | Predictive analytics on database wait events | |
CN111770002B (zh) | 测试数据转发控制方法、装置、可读存储介质和电子设备 | |
US10191800B2 (en) | Metric payload ingestion and replay | |
US20200057714A1 (en) | Testing data changes in production systems | |
CN112506915A (zh) | 一种应用数据的管理系统以及处理方法、装置和服务器 | |
CN111522703A (zh) | 监控访问请求的方法、设备和计算机程序产品 | |
CN111078418B (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
US20180287914A1 (en) | System and method for management of services in a cloud environment | |
CN112597151A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN111130882A (zh) | 网络设备的监控系统及方法 | |
CN115562933A (zh) | 作业监控数据的处理方法及装置、存储介质、电子设备 | |
CN115827647A (zh) | 数据存储方法、装置、存储介质以及电子设备 | |
US20230169168A1 (en) | Detect anomalous container deployment at a container orchestration service | |
CN113961611A (zh) | 日志的处理方法、装置、设备以及存储介质 | |
US8032797B1 (en) | Storage of mass data for monitoring | |
EP3382555A1 (en) | System and method for management of services in a cloud environment | |
US20240061494A1 (en) | Monitoring energy consumption associated with users of a distributed computing system using tracing | |
US11741096B1 (en) | Granular performance analysis for database queries | |
US8880963B2 (en) | Message processing device and method thereof |
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 |