数据库查询方法、装置和系统制造方法及图纸

技术编号:30430587 阅读:12 留言:0更新日期:2021-10-24 17:22
本发明专利技术涉及Redis实时缓存系统技术领域,公开了一种数据库查询方法、装置和系统,包括获取目标数据库的修改日志;解析修改日志,对修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息;将数据更新信息发送至缓存消息队列;依次从缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;接收目标数据库的查询语句,基于查询语句对本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。自动更新本地缓存数据库中缓存数据指定字段的索引,保证数据库与缓存的一致性。自动解析查询语句,能够直接通过SQL语句来查询Redis,不必在MySQL和Redis之间进行切换,降低延迟。降低延迟。降低延迟。

【技术实现步骤摘要】
数据库查询方法、装置和系统


[0001]本专利技术涉及Redis实时缓存系统
,特别是涉及一种数据库查询方法、装置和系统。

技术介绍

[0002]随着互联网的快速普及,数据规模和用户数量快速增加,用户对时延的要求也越来越高。传统的关系型数据库所面临的压力越来越大,需要进一步提高MySQL等关系型数据库的读写能力、降低时延。由于Redis只能存储key

value型数据,因此每次查询都需要给出key值来获取单条数据,导致其无法像关系型数据库那样快速进行索引查询。而通常多数查询都是带有条件的索引查询,如果这些查询只能通过数据库处理,需要在使用MySQL和Redis之间进行切换,那么依然会有较大延迟。

技术实现思路

[0003]基于此,有必要针对MySQL和Redis之间进行切换导致系统具有较大延迟的问题,提供一种数据库查询方法和数据库查询系统。
[0004]一种数据库查询方法,包括获取目标数据库的修改日志,所述修改日志包括当所述目标数据库中的数据发生修改时生成的数据信息;解析所述修改日志,对所述修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息;将所述数据更新信息发送至缓存消息队列;依次从所述缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
[0005]在其中一个实施例中,所述缓存数据为key

value型数据,其中,所述缓存数据为key

value型数据,其中,key值包括数据库名、表名、主键字段,value值包括所述索引数据的json值或hash值。
[0006]在其中一个实施例中,所述接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果包括接收目标数据库的查询语句,对所述查询语句进行解析,获取查询条件;根据所述查询条件生成执行语句;根据所述执行语句,对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
[0007]在其中一个实施例中,所述数据更新信息包括缓存更新信息和索引更新字段,所述根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新包括根据所述数据更新信息获取缓存更新信息和索引更新字段;根据所述缓存更新信息对本地缓存数据库中的缓存数据进行更新;根据所述索引更新字段对本地缓存数据库的索引数据进行更新。
[0008]在其中一个实施例中,所述索引数据包括索引记录表,所述索引记录表用于记录
各个索引方式所对应的索引表,根据所述索引更新字段对本地缓存数据库的索引数据进行更新包括在所述索引记录表中确定与所述索引更新字段相关联的索引表;根据所述索引更新字段对所述本地缓存数据库中所述相关联的索引表进行更新。
[0009]在其中一个实施例中,在根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新后,所述方法还包括获取对本地缓存数据库中的缓存数据和索引数据进行更新的更新结果;若所述更新结果为更新失败,则重新获取所述缓存消息队列中相对应的数据更新信息,并根据重新获取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新。
[0010]在其中一个实施例中,所述索引方式包括全表索引、单一条件索引和复合条件索引,其中,所述单一条件索引包括等值条件索引、区间条件索引和模糊条件索引。
[0011]一种数据库查询装置,包括更新获取模块,用于获取目标数据库的修改日志,所述修改日志包括当所述目标数据库中的数据发生修改时生成的数据信息;解析模块,与所述更新获取模块相连接,用于解析所述修改日志,对所述修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息,将所述数据更新信息发送至缓存消息队列;维护模块,用于依次从所述缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;查询模块,与所述维护模块相连接,用于接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
[0012]一种数据库查询系统,包括本地缓存数据库,用于存储缓存在本地的缓存数据和索引数据;以及所述数据库查询装置。
[0013]在其中一个实施例中,所述查询模块包括解析器,用于接收目标数据库的查询语句,并对所述查询语句进行分析获取查询条件;生成器,与所述解析器相连接,用于根据所述查询条件生成执行语句;执行器,与所述生成器相连接,用于运行所述执行语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
[0014]一种计算机可读存储介质,当所述计算机可读存储介质中的指令由计算机的处理器执行时,使得所述计算机能够执行如上述任意一项实施例所述的数据库查询方法。
[0015]一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被计算机的处理器执行时,使得所述计算机能够执行如上述任意一项实施例所述的数据库查询方法。
[0016]上述数据库查询方法,获取当目标数据库中的数据发生修改时,目标数据库根据数据修改情况生成的修改日志,对修改日志进行解析。对修改日志解析后的数据进行筛选以获取需要在本地缓存数据库中进行缓存的数据更新信息。将数据更新信息传输至缓存消息队列,从缓存消息列表中读取数据更新信息,并根据读取到的数据更新信息对本地缓存数据库中对应的缓存数据和索引数据进行更新。接收输入的查询语句,可以直接在本地缓存数据库中进行语句查询。通过本技术方案可以在确保例如Redis实时的本地缓存系统数据最终一致性的情况下,在本地缓存系统的基础上增加数据和索引的维护功能以及直接对本地缓存系统进行查询的功能,获得支持SQL索引查询的能力。直接在Redis缓存中进行SQL语句查询,不仅可以提高查询效率,同时可以不必在MySQL和Redis之间进行切换,在查询过程中不仅能起到对应用透明的效果,还可以提高实时缓存系统的查询效率。
附图说明
[0017]为了更清楚地说明本说明书实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为本专利技术其中一实施例的数据库查询方法的方法流程示意图;
[0019]图2为本专利技术其中一实施例的执行索引查询的方法流程示意图;
[0020]图3为本专利技术其中一实施例的对本地缓存数据库中的缓存数据和索引数据进行更新的方法流程示意图;
[0021]图4为本专利技术其中一实施例的对索引数据进行更新的方法流程示意图;
[0022]图5为本专利技术其中一实施例的对更新结果进行确认本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库查询方法,其特征在于,包括:获取目标数据库的修改日志,所述修改日志包括当所述目标数据库中的数据发生修改时生成的数据信息;解析所述修改日志,对所述修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息;将所述数据更新信息发送至缓存消息队列;依次从所述缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。2.根据权利要求1所述的数据库查询方法,其特征在于,所述缓存数据为key

value型数据,其中,key值包括数据库名、表名、主键字段,value值包括所述索引数据的json值或hash值。3.根据权利要求1或2所述的数据库查询方法,其特征在于,所述接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果包括:接收目标数据库的查询语句,对所述查询语句进行解析,获取查询条件;根据所述查询条件生成执行语句;根据所述执行语句,对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。4.根据权利要求2所述的数据库查询方法,其特征在于,所述数据更新信息包括缓存更新信息和索引更新字段,所述根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新包括:根据所述数据更新信息获取缓存更新信息和索引更新字段;根据所述缓存更新信息对本地缓存数据库中的缓存数据进行更新;根据所述索引更新字段对本地缓存数据库的索引数据进行更新。5.根据权利要求4所述的数据库查询方法,其特征在于,所述索引数据包括索引记录表,所述索引记录表用于记录各个索引方式所对应的索引表,根据所述索引更新字段对本地缓存数据库的索引数据进行更新包括:在所述索引记录表中确定与所述索引更新字段相关联的索引表;根据所述索引更新字段对所述本地缓存数据库中所述相关联的索引表进行更新。6.根据权利要求1所述的数据库查询方法,其特征在于,在根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据...

【专利技术属性】
技术研发人员:罗喜为古毅伟吴德柱
申请(专利权)人:上海浦东发展银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1