掌桥专利:专业的专利平台
掌桥专利
首页

一种冷热数据分离方法、装置及其设备

文献发布时间:2023-06-19 11:39:06


一种冷热数据分离方法、装置及其设备

技术领域

本申请涉及计算机技术领域,尤其涉及一种冷热数据分离方法、装置及其设备。

背景技术

随着数据量的不断增长积累,不同类别的数据也会呈现出不同的访问热度。例如一个广告平台会不断地写入最新的广告花费数据,对于该平台中的广告花费数据,用户往往会有不同的时效性要求。比如实时性较高的广告花费实时数据(可归纳为访问频率较高的热数据),需要不断地访问最新的广告花费数据,而实时性较低的广告花费月度报表(可归纳为访问频率较低的冷数据),则只需要每隔一个月访问。

为了应对上述不同时效性要求的冷热数据的访问需求,现有技术通常采用以下两种常见的冷热数据分离的处理方法:第一种,按照业务维度对冷热数据进行分区分表,但这种方式需要对所有数据进行重新归类,需要耗费大量的时间和精力进行后台代码的修改;第二种,按照业务维度只对冷数据进行归档,也就是将访问频率较低的冷数据压缩成数据包存储到磁盘中,这种冷数据处理方式虽然节省了冷数据的存储空间,但却造成了压缩成数据包的冷数据不可查询的问题。

因此,亟需一种冷热数据分离方法以解决现有的冷热数据分离的处理方法不够优化,会耗费大量的时间和精力进行后台代码修改或者造成冷数据不可查的问题。

发明内容

本申请实施例提供了一种冷热数据分离方法、装置及其设备,以解决现有的冷热数据分离的处理方法不够优化,会耗费大量的时间和精力进行后台代码修改甚至造成冷数据不可查的问题。

为解决上述技术问题,本申请实施例是这样实现的:

第一方面,提出了一种冷热数据分离方法,包括:

将目标业务的数据写入MySQL数据库;

在所述目标业务的数据被写入MySQL数据库之后,将所述目标业务的数据异步发送至HBASE数据库的指定消息队列;

根据预设的冷数据定义,从所述MySQL数据库中删除所述目标业务的冷数据,所述冷数据为所述目标业务的数据中时效性需求小于设定阈值的数据,以使得所述MySQL数据库中存储的数据为时效性需求大于或等于所述设定阈值的热数据;

按照预设的数据格式重组从所述指定消息队列中获取的数据,得到具备指定前缀的重组数据,并将具备所述指定前缀的重组数据写入所述HBASE数据库,以使得所述HBASE数据库中存储的数据为所述目标业务的全量数据,所述指定前缀中包含具备所述指定前缀的重组数据对应的业务标识。

第二方面,提出了一种冷热数据分离装置,包括:

第一写入模块,用于将目标业务的数据写入MySQL数据库;

数据发送模块,用于在所述目标业务的数据被写入MySQL数据库之后,将所述目标业务的数据异步发送至HBASE数据库的指定消息队列;

冷数据删除模块,用于根据预设的冷数据定义,从所述MySQL数据库中删除所述目标业务的冷数据,所述冷数据为所述目标业务的数据中时效性需求小于设定阈值的数据,以使得所述MySQL数据库中存储的数据为时效性需求大于或等于所述设定阈值的热数据;

第二写入模块,用于按照预设的数据格式重组从所述指定消息队列中获取的数据,得到具备指定前缀的重组数据,并将具备所述指定前缀的重组数据写入所述HBASE数据库,以使得所述HBASE数据库中存储的数据为所述目标业务的全量数据,所述指定前缀中包含具备所述指定前缀的重组数据对应的业务标识。

第三方面,提出了一种电子设备,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现如上述第一方面所述的冷热数据分离方法的步骤。

第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现如上述第一方面所述的冷热数据分离方法的步骤。

本申请实施例采用上述技术方案至少可以达到下述技术效果:

本说明书实施例中提供的冷热数据分离方法,能够将目标业务的数据存储到MySQL数据库中之后,将目标业务的数据异步存储到HBASE数据库,并删除MySQL数据库中目标业务的冷数据,使得MySQL数据库存储目标业务的热数据,而HBASE数据库中存储目标业务的全量数据,从而实现了目标业务的热数据从全量数据中的有效分离,避免了热数据分离过程中投入大量的代码修改工作,而且包含目标业务的冷数据的全量数据存储在HBASE数据库也不影响冷数据查询的问题。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本说明书一个实施例提供的一种游戏角色的生成方法的实施流程示意图;

图2为本说明书一个实施例提供的游戏角色的生成方法应用于实际场景中的过程示意图;

图3为本说明书一个实施例提供的游戏角色的生成方法中游戏角色之间的对话的生成过程示意图;

图4为本说明书一个实施例提供的一种游戏角色的生成装置的结构示意图;

图5为本说明书一个实施例提供的一种电子设备的结构示意图。

具体实施方式

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

以下结合附图,详细说明本申请各实施例提供的技术方案。

为解决现有的冷热数据分离的处理方法不够优化,会耗费大量的时间和精力进行后台代码修改或者造成冷数据不可查的问题,本说明书实施例提供一种冷热数据分离方法,能够将目标业务的数据存储到MySQL数据库中之后,将目标业务的数据异步存储到HBASE数据库,并删除MySQL数据库中目标业务的冷数据,使得MySQL数据库存储目标业务的热数据,而HBASE数据库中存储目标业务的全量数据,从而实现了目标业务的热数据从全量数据中的有效分离,避免了热数据分离过程中投入大量的代码修改工作,而且包含目标业务的冷数据的全量数据存储在HBASE数据库也不影响冷数据查询的问题。

具体地,本说明书一个或多个实施例提供的一种冷热数据分离方法的实现流程示意图如图1所示,包括:

步骤110,将目标业务的数据写入MySQL数据库。

为实现将目标业务的数据写入到MySQL数据库,可预先开发出一个独立的数据写入接口,可通过调用该数据写入接口将目标业务的数据写入MySQL数据库中。数据写入接口开发完成后,可通过Dubbo(一种开源分布式服务框架)暴露写入接口,Duboo可采用单一长连接的dubbo协议(缺省协议)暴露,该协议适用于大量调用但单次调用信息量小的场景,能保证服务的吞吐量。上述数据写入接口可采用jsonRpc规范,方便各语言调用。

应理解,目标业务可以是一个不断能够实时产生业务数据的业务,比如可以是统计广告花费的业务、统计用户消费的业务等。上述目标业务的数据在首次被写入MySQL数据库时,可以是目标业务已生成的全量数据,而在目标业务的数据已被写入MySQL数据库之后,上述目标业务的数据可以是目标业务实时生成的数据,也就是最新生成的数据。

为便于目标业务的数据的存储,在将目标业务的数据写入MySQL数据库时,可根据MySQL数据表的结构构造出目标业务的数据的参数实体,调用MySQL数据库的数据访问层接口按照MySQL数据表的结构写入并存储目标业务的数据。如果在将目标业务的数据写入MySQL数据表的过程中发生数据写入失败的情况,则可以进行回滚操作,并告知数据写入的调用方。

步骤120,在目标业务的数据被写入MySQL数据库之后,将目标业务的数据异步发送至HBASE数据库的指定消息队列。

在将目标业务的数据成功写入MySQL数据库之后,可将目标业务的数据异步发送至HBASE数据库的指定消息队列。该指定消息队列可以是HBASE数据库的消息队列中指定类型的消息队列。由于目标业务的数据被成功写入MySQL数据库之后,才将目标业务的数据异步发送至HBASE数据库的指定消息队列,因此,目标业务的数据被写入到MySQL数据库中的过程并不会受到指定消息队列的影响。

步骤130,根据预设的冷数据定义,从MySQL数据库中删除目标业务的冷数据,冷数据为目标业务的数据中时效性需求小于设定阈值的数据,以使得MySQL数据库中存储的数据为时效性需求大于或等于设定阈值的热数据。

其中,预设的冷数据定义可根据实际经验需求,对冷数据进行定义,比如可以按照业务时间、业务状态等对冷数据进行定义。比如可以将目标业务近七天内生成的数据定义为热数据,将目标业务七天以前生成的数据定义为冷数据。

可选地,为了避免从MySQL数据库中错删数据,以便后期能够顺利恢复从MySQL数据库中删除的数据,可将MySQL数据库中删除的数据存储到第三方存储设备中进行备份。具体地,根据预设的冷数据定义,从MySQL数据库中删除目标业务的冷数据,包括:

每隔预设时间段,根据预设的冷数据定义,从MySQL数据库中导出目标业务的冷数据;

将目标业务的冷数据压缩为数据包存储到第三方存储设备中;

从MySQL数据库中删除目标业务的冷数据。

应理解,为了节省MySQL数据库中的存储空间,可将MySQL中的冷数据导出并压缩为数据包存储到第三方存储设备中,再将MySQL数据库中的冷数据删除。

应理解,在删除了MySQL数据库中的冷数据之后,可能会出现MySQL数据库中数据索引不连续带来的页内数据空洞,导致MySQL数据库中的数据表的实际占用空间增大,也就是删除数据后的高水位问题。为了解决这一问题,可执行碎片化整理命令(optimize),提高Mysql的性能,使得MySQL中存储的热数据的查询效率也提高了。

步骤140,按照预设的数据格式重组从指定消息队列中获取的数据,得到具备指定前缀的重组数据,并将具备指定前缀的重组数据写入HBASE数据库,以使得HBASE数据库中存储的数据为目标业务的全量数据,指定前缀中包含具备指定前缀的重组数据对应的业务标识。

其中,指定前缀在HBASE数据库中可称为rowkey,该指定前缀用于查询rowkey对应的数据实体。

可选地,为了获取指定消息队列中的数据,可另起一个指定多线程服务来消费指定消息队列中的数据。按照预设的数据格式重组从指定消息队列中获取的数据,得到具备指定前缀的重组数据,包括:

通过指定多线程从指定消息队列获取多个数据;

将通过指定多线程从指定消息队列获取的多个数据组装为数据实体;

根据数据实体的业务标识,得到指定前缀;

将指定前缀和数据实体进行拼接,得到具备指定前缀的重组数据。

其中,指定多线程可根据线程的数量来获取与线程的数量相对应的多个数据。比如指定多线程为20个线程,则可以一次从指定消息队列中获取20个数据,再将这20个数据组装为数据实体,然后根据数据实体的业务标识,得到指定前缀,最后,将指定前缀和数据实体进行拼接,得到具备指定前缀的重组数据。再通过该指定多线程从指定消息队列中获取第21-第40个数据,组装成数据实体,……,以此类推,直至将消息队列中的所有数据到获取到,并组装成具备指定前缀的重组数据。

图2为本说明书一个实施例提供的将目标业务的数据写入到MySQL数据库和HBASE数据库中实现冷热数据分离的过程示意图,包括:

S21,调用数据写入接口。

S22,通过数据写入接口将目标业务的数据同步写入MySQL数据库。

S23,通过数据写入接口将目标业务的数据异步写入HBASE数据库的指定消息队列。

S24,通过MySQL数据库集群存储目标业务的数据。

S25,每隔预设时间段启动冷数据归档任务。

其中,冷数据归档任务的执行过程包括:

S251,是否为冷数据。

逐条判断目标业务的每一条数据是否为冷数据。如果是,则执行S252。

S252,将冷数据导出压缩为数据包存储到第三方存储设备中。

S253,删除MySQL数据库集群中的冷数据。

S26,启动指定多线程获取指定消息队列中的多个数据。

S27,将获取的多个数据组装为数据实体。

S28,根据数据实体的业务标识,得到指定前缀。

S29,将指定前缀和对应的数据实体拼接,存储到HBASE数据库中。

以目标业务为统计广告花费的业务为例,将目标业务的数据写入到MySQL数据库和HBASE数据库实现冷热数据分离的过程包括:

首先,实现数据写入接口,依照MySQL数据库汇总的广告花费明细表的结构构造出实体,实体内包含广告id,包名,投放时间等关键属性。再调用数据访问层接口同步写入广告花费明细表(ad_amount_detail)。将目标业务的数据成功写入MySQL数据库后,则另起一线程异步发送到HBASE数据库的RocketMq消息队列的名称为“ad_finance_detail”的指定消息队列,再通过Dubbo暴露写入接口,Duboo采用单一长连接的dubbo协议暴露。

然后,通过指定多线程消费名称为“ad_finance_detail”的指定队列,将消费到的数据组装成广告花费明细实体,再根据广告id,包名,投放时间拼装成指定前缀的rowkey,比如:“123_com_google_20201231122011”,最后通过HBASEjava客户端,将拼装好的rowkey“123_com_google_20201231122011”和广告花费明细实体写入到HBASE数据库。

最后,每隔预设时间段在MySQL数据库中调用老数据的归档和碎片化整理Task程序。具体可将广告花费明细表中广告投放时间距离当前时间大于7天的明细数据下载为insertSQL,并压缩为数据包存储到第三方存储设备中,之后将这些数据从广告花费明细表中删除,再执行碎片化整理命令“optimizetable ad_amount_detail”。

可选地,将具备指定前缀的重组数据写入HBASE数据库之后,可根据查询请求中的查询类别来确定查询请求的时效性需求,并基于该时效性需求,确定是从MySQL数据库中查询数据还是从HBASE数据库中查询数据。具体地,本说明书实施例提供的方法还包括:

获取针对目标业务的数据的查询请求,查询请求中包含对目标业务的数据的查询类别;

基于查询请求中的查询类别确定查询请求的时效性需求;

根据查询请求的时效性需求,从MySQL数据库和HBASE数据库中确定优先查询的数据库。

可选地,由于MySQL数据库中存储的是热数据,也就是时效性需求较高的数据,而HBASE数据库中存储了目标业务的全量数据。如果查询请求是要查询热数据,则可直接从MySQL中查询数据,如果查询请求是要查询冷数据,则可从HBASE数据库中查询。具体地,根据查询请求的时效性需求,从MySQL数据库和HBASE数据库中确定优先查询的数据库,包括:

如果查询请求的时效性需求大于或等于设定阈值,则优先从MySQL数据库中获取与查询请求中的关键词相匹配的数据;

如果查询请求的时效性需求小于设定阈值,则优先从HBASE数据库中获取与查询请求中的关键词相匹配的数据。

可选地,由于冷数据定义的准确性的问题,有些热数据可能会被定义为冷数据,在这种情况下,可从HBASE数据库中查询MySQL数据库中没有查询到的数据。具体地,优先从MySQL数据库中获取与查询请求中的关键词相匹配的数据,包括:

如果MySQL数据库中不存在与查询请求中的关键词相匹配的数据,则从HBASE数据库中获取与查询请求中的关键词相匹配的数据;

如果MySQL数据库中存在与查询请求中的关键词相匹配的数据,则从MySQL数据库中获取与查询请求中的关键词相匹配的数据。

可选地,由于目标业务的数据优先被写入MySQL数据库中,再异步写入到HBASE数据库,因此,会存在部分数据在MySQL数据库中,而没有被写入HBASE数据库中。在这种情况下,可从MySQL数据库中查询HBASE数据库中没有查询到的数据。具体地,优先从HBASE数据库中获取与查询请求中的关键词相匹配的数据,包括:

如果HBASE数据库中不存在与查询请求中的关键词相匹配的数据,则从MySQL数据库中获取与查询请求中的关键词相匹配的数据;

如果HBASE数据库中存在与查询请求中的关键词相匹配的数据,则从HBASE数据库中获取与查询请求中的关键词相匹配的数据。

图3为本说明书一个实施例提供的冷热数据分离方法中数据的读取过程示意图,包括:

S31,调用数据读取接口。

S32,获取查询请求。

S33,确定查询请求的业务类型的时效性需求是否大于或等于设定阈值。

如果查询请求的业务类型的时效性需求大于或等于设定阈值则执行S34,否则执行S37。

S34,在MySQL数据库中查询。

S35,是否命中请求查询的数据。

如果MySQL数据库中能够命中请求查询的数据,即MySQL数据库中存在与查询请求中的关键字相匹配的数据,则执行S36,否则,执行S37。

S36,返回命中的数据。

即将MySQL数据库中与查询请求中的关键字相匹配的数据返回给请求查询的用户。

S37,从HBASE数据库中查询。

S38,是否命中请求查询的数据。

如果HBASE数据库中能够命中请求查询的数据,即HBASE数据库中存在与查询请求中的关键字相匹配的数据,则执行S39,否则执行S34。

S39,返回命中的数据。

即将HBASE数据库中与查询请求中的关键字相匹配的数据返回给请求查询的用户。

继续沿用上述目标业务为统计广告花费的业务为例,在为该目标业务实现了数据写入接口,并将目标业务的数据存储到MySQL数据库和HBASE数据库中之后,还可为该目标业务实现查询系统。在广告花费明细表的配置表中配置业务id“花费月度报表”的时效性需求为“弱时效”,以及业务id“花费实时监控”的时效性需求为“强时效”。查询系统基于查询请求确定查询请求中的查询类别所对应的时效性需求,并根据不同的时效性需求执行不同查询逻辑。

如果确定查询请求的查询类别为“花费月度报表”,则优先查询HBASE数据库;如果HBASE数据库没有命中请求查询的数据,则查询MySQL数据库;如果MySQL数据库命中请求查询的数据,则返回查询到的数据。

如果确定查询请求的查询类别为“花费实时监控”,则优先查询MySQL数据库;如果MySQL数据库没有命中请求查询的数据,则查询HBASE数据库;如果HBASE数据库命中请求查询的数据,则返回查询到的数据。

本说明书实施例中提供的冷热数据分离方法,能够将目标业务的数据存储到MySQL数据库中之后,将目标业务的数据异步存储到HBASE数据库,并删除MySQL数据库中目标业务的冷数据,使得MySQL数据库存储目标业务的热数据,而HBASE数据库中存储目标业务的全量数据,从而实现了目标业务的热数据从全量数据中的有效分离,避免了热数据分离过程中投入大量的代码修改工作,而且包含目标业务的冷数据的全量数据存储在HBASE数据库也不影响冷数据查询的问题。

图4是本说明书提供的冷热数据分离装置400的结构示意图。请参考图4,在一种软件实施方式中,冷热数据分离装置400可包括,其中:

第一写入模块401,用于将目标业务的数据写入MySQL数据库;

数据发送模块402,用于在所述目标业务的数据被写入MySQL数据库之后,将所述目标业务的数据异步发送至HBASE数据库的指定消息队列;

冷数据删除模块403,用于根据预设的冷数据定义,从所述MySQL数据库中删除所述目标业务的冷数据,所述冷数据为所述目标业务的数据中时效性需求小于设定阈值的数据,以使得所述MySQL数据库中存储的数据为时效性需求大于或等于所述设定阈值的热数据;

第二写入模块404,用于按照预设的数据格式重组从所述指定消息队列中获取的数据,得到具备指定前缀的重组数据,并将具备所述指定前缀的重组数据写入所述HBASE数据库,以使得所述HBASE数据库中存储的数据为所述目标业务的全量数据,所述指定前缀中包含具备所述指定前缀的重组数据对应的业务标识。

可选地,在一种实施方式中,在所述第二写入模块404将具备所述指定前缀的重组数据写入所述HBASE数据库之后,所述装置还包括:

请求获取模块405,用于获取针对所述目标业务的数据的查询请求,所述查询请求中包含对所述目标业务的数据的查询类别;

需求确定模块406,用于基于所述查询请求中的查询类别确定所述查询请求的时效性需求;

数据库确定模块407,用于根据所述查询请求的时效性需求,从所述MySQL数据库和所述HBASE数据库中确定优先查询的数据库。

可选地,在一种实施方式中,所述数据库确定模块407,用于:

如果所述查询请求的时效性需求大于或等于设定阈值,则优先从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述查询请求的时效性需求小于设定阈值,则优先从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据。

可选地,在一种实施方式中,所述数据库确定模块407,用于:

如果所述MySQL数据库中不存在与所述查询请求中的关键词相匹配的数据,则从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述MySQL数据库中存在与所述查询请求中的关键词相匹配的数据,则从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据。

可选地,在一种实施方式中,所述数据库确定模块407,用于:

如果所述HBASE数据库中不存在与所述查询请求中的关键词相匹配的数据,则从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述HBASE数据库中存在与所述查询请求中的关键词相匹配的数据,则从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据。

可选地,在一种实施方式中,所述冷数据删除模块403,用于:

每隔预设时间段,根据所述预设的冷数据定义,从所述MySQL数据库中导出所述目标业务的冷数据;

将所述目标业务的冷数据压缩为数据包存储到第三方存储设备中;

从所述MySQL数据库中删除所述目标业务的冷数据。

可选地,在一种实施方式中,所述第二写入模块404,用于:

通过指定多线程从所述指定消息队列获取多个数据;

将通过所述指定多线程从所述指定消息队列获取的所述多个数据组装为数据实体;

根据所述数据实体的业务标识,得到所述指定前缀;

将所述指定前缀和所述数据实体进行拼接,得到具备所述指定前缀的重组数据。

冷热数据分离装置400能够实现图1~图3的冷热数据分离方法实施例的方法,具体可参考图1~图3所示实施例的冷热数据分离方法,不再赘述。

本发明实施例还提供了一种电子设备,图5为本申请实施例提供的电子设备的结构示意图。如图5所示,电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器501和存储器502,存储器502中可以存储有一个或一个以上存储应用程序或数据。其中,存储器502可以是短暂存储或持久存储。存储在存储器502的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对内存数据加载设备中的一系列计算机可执行指令。更进一步地,处理器501可以设置为与存储器502通信,在内存数据加载设备上执行存储器502中的一系列计算机可执行指令。内存数据加载设备还可以包括一个或一个以上电源503,一个或一个以上有线或无线网络接口504,一个或一个以上输入输出接口505,一个或一个以上键盘506等。

在一个具体的实施例中,电子设备500包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现以下流程:

将目标业务的数据写入MySQL数据库;

在所述目标业务的数据被写入MySQL数据库之后,将所述目标业务的数据异步发送至HBASE数据库的指定消息队列;

根据预设的冷数据定义,从所述MySQL数据库中删除所述目标业务的冷数据,所述冷数据为所述目标业务的数据中时效性需求小于设定阈值的数据,以使得所述MySQL数据库中存储的数据为时效性需求大于或等于所述设定阈值的热数据;

按照预设的数据格式重组从所述指定消息队列中获取的数据,得到具备指定前缀的重组数据,并将具备所述指定前缀的重组数据写入所述HBASE数据库,以使得所述HBASE数据库中存储的数据为所述目标业务的全量数据,所述指定前缀中包含具备所述指定前缀的重组数据对应的业务标识。

可选地,所述计算机可执行指令被所述处理器执行时,

将具备所述指定前缀的重组数据写入所述HBASE数据库之后,所述方法还包括:

获取针对所述目标业务的数据的查询请求,所述查询请求中包含对所述目标业务的数据的查询类别;

基于所述查询请求中的查询类别确定所述查询请求的时效性需求;

根据所述查询请求的时效性需求,从所述MySQL数据库和所述HBASE数据库中确定优先查询的数据库。

根据所述查询请求的时效性需求,从所述MySQL数据库和所述HBASE数据库中确定优先查询的数据库,包括:

如果所述查询请求的时效性需求大于或等于设定阈值,则优先从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述查询请求的时效性需求小于设定阈值,则优先从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据。

从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据,包括:

如果所述MySQL数据库中不存在与所述查询请求中的关键词相匹配的数据,则从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述MySQL数据库中存在与所述查询请求中的关键词相匹配的数据,则从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据。

从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据,包括:

如果所述HBASE数据库中不存在与所述查询请求中的关键词相匹配的数据,则从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述HBASE数据库中存在与所述查询请求中的关键词相匹配的数据,则从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据。

根据预设的冷数据定义,从所述MySQL数据库中删除所述目标业务的冷数据,包括:

每隔预设时间段,根据所述预设的冷数据定义,从所述MySQL数据库中导出所述目标业务的冷数据;

将所述目标业务的冷数据压缩为数据包存储到第三方存储设备中;

从所述MySQL数据库中删除所述目标业务的冷数据。

按照预设的数据格式重组从所述指定消息队列中获取的数据,得到具备指定前缀的重组数据,包括:

通过指定多线程从所述指定消息队列获取多个数据;

将通过所述指定多线程从所述指定消息队列获取的所述多个数据组装为数据实体;

根据所述数据实体的业务标识,得到所述指定前缀;

将所述指定前缀和所述数据实体进行拼接,得到具备所述指定前缀的重组数据。

本说明书实施例中提供的冷热数据分离方法,能够将目标业务的数据存储到MySQL数据库中之后,将目标业务的数据异步存储到HBASE数据库,并删除MySQL数据库中目标业务的冷数据,使得MySQL数据库存储目标业务的热数据,而HBASE数据库中存储目标业务的全量数据,从而实现了目标业务的热数据从全量数据中的有效分离,避免了热数据分离过程中投入大量的代码修改工作,而且包含目标业务的冷数据的全量数据存储在HBASE数据库也不影响冷数据查询的问题。

进一步地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现以下流程:

将目标业务的数据写入MySQL数据库;

在所述目标业务的数据被写入MySQL数据库之后,将所述目标业务的数据异步发送至HBASE数据库的指定消息队列;

根据预设的冷数据定义,从所述MySQL数据库中删除所述目标业务的冷数据,所述冷数据为所述目标业务的数据中时效性需求小于设定阈值的数据,以使得所述MySQL数据库中存储的数据为时效性需求大于或等于所述设定阈值的热数据;

按照预设的数据格式重组从所述指定消息队列中获取的数据,得到具备指定前缀的重组数据,并将具备所述指定前缀的重组数据写入所述HBASE数据库,以使得所述HBASE数据库中存储的数据为所述目标业务的全量数据,所述指定前缀中包含具备所述指定前缀的重组数据对应的业务标识。

可选地,所述计算机可执行指令被所述处理器执行时,

将具备所述指定前缀的重组数据写入所述HBASE数据库之后,所述方法还包括:

获取针对所述目标业务的数据的查询请求,所述查询请求中包含对所述目标业务的数据的查询类别;

基于所述查询请求中的查询类别确定所述查询请求的时效性需求;

根据所述查询请求的时效性需求,从所述MySQL数据库和所述HBASE数据库中确定优先查询的数据库。

根据所述查询请求的时效性需求,从所述MySQL数据库和所述HBASE数据库中确定优先查询的数据库,包括:

如果所述查询请求的时效性需求大于或等于设定阈值,则优先从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述查询请求的时效性需求小于设定阈值,则优先从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据。

从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据,包括:

如果所述MySQL数据库中不存在与所述查询请求中的关键词相匹配的数据,则从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述MySQL数据库中存在与所述查询请求中的关键词相匹配的数据,则从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据。

从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据,包括:

如果所述HBASE数据库中不存在与所述查询请求中的关键词相匹配的数据,则从所述MySQL数据库中获取与所述查询请求中的关键词相匹配的数据;

如果所述HBASE数据库中存在与所述查询请求中的关键词相匹配的数据,则从所述HBASE数据库中获取与所述查询请求中的关键词相匹配的数据。

根据预设的冷数据定义,从所述MySQL数据库中删除所述目标业务的冷数据,包括:

每隔预设时间段,根据所述预设的冷数据定义,从所述MySQL数据库中导出所述目标业务的冷数据;

将所述目标业务的冷数据压缩为数据包存储到第三方存储设备中;

从所述MySQL数据库中删除所述目标业务的冷数据。

按照预设的数据格式重组从所述指定消息队列中获取的数据,得到具备指定前缀的重组数据,包括:

通过指定多线程从所述指定消息队列获取多个数据;

将通过所述指定多线程从所述指定消息队列获取的所述多个数据组装为数据实体;

根据所述数据实体的业务标识,得到所述指定前缀;

将所述指定前缀和所述数据实体进行拼接,得到具备所述指定前缀的重组数据。

本说明书实施例中提供的冷热数据分离方法,能够将目标业务的数据存储到MySQL数据库中之后,将目标业务的数据异步存储到HBASE数据库,并删除MySQL数据库中目标业务的冷数据,使得MySQL数据库存储目标业务的热数据,而HBASE数据库中存储目标业务的全量数据,从而实现了目标业务的热数据从全量数据中的有效分离,避免了热数据分离过程中投入大量的代码修改工作,而且包含目标业务的冷数据的全量数据存储在HBASE数据库也不影响冷数据查询的问题。

其中,所述的计算机可读存储介质包括只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 一种冷热数据分离方法、装置及其设备
  • 优化的冷热数据分离方法、装置、计算机设备及存储介质
技术分类

06120113008185