本申请提出了基于特征摘要的离线数据查询复用方法及其应用,包括以下步骤:S00、获取查询SQL语句;S10、构建SQL解析语法树;S20、解析SQL语句用到的所有数据表并进行滤重排序;S30、遍历滤重排序后的所有数据表,获取每张数据表的最后更新时间的字符串组合;S40、将SQL进行重组格式化;S50、将字符串组合与格式化SQL文本进行组合;S60、生成特征摘要文本;S70、从数仓查询历史表中查找相同特征摘要文本的记录;S80、根据特征摘要文本从数仓查询历史表中获取SQL查询状况。本申请具有查询历史结果可以永久追溯,并且最大限度地避免数据重复存储的优点。储的优点。储的优点。
【技术实现步骤摘要】
基于特征摘要的离线数据查询复用方法及其应用
[0001]本申请涉及大数据
,特别是涉及基于特征摘要的离线数据查询复用方法及其应用。
技术介绍
[0002]随着大数据时代的到来,数据量发生了显著的增加,业务系统越来越复杂,数据分析的要求也越来越高。此时,继续在业务系统做数据分析就变得不是很合适,原因之一是业务系统的架构并不擅长处理大量的历史数据分析和多维度的数据建模,二是数据分析对业务系统的性能造成非常大的挑战,甚至影响正常交易进行。
[0003]基于这样一个情况,政府、企事业单位等纷纷构建了自己的数据仓库,这些数据仓库对数据的实时性要求没有那么高往往是T+1或者T+N,基于这些数据仓库进行的数据建模分析不断地涌现和频繁使用,使得数仓往往需要不断地扩容计算能力来满足用户的分析需求或者限制用户的查询请求、复用查询结果,或者排队机制来保证上层应用的稳定,扩容计算能力往往需要不断提高数仓的维护成本,而限制查询请求和排队机制通常会带来不好的用户体验,尽管应用侧在提高查询复用方面做了一些努力,但是仍然有进一步提升的空间。
[0004]而且目前技术的查询复用方案基于查询SQL进行数据缓存,即基于查询SQL作为数据缓存Key,查询结果作为Value缓存到缓存中间件或者文件系统,存在如下缺陷:
[0005]1、缓存往往具有时效性,时间过长,SQL涉及的相关表更新后不能及时取得最新数据,时间过短,缓存过期后往往需要二次查询甚至同一个SQL在同一个数据周期内多次查询;
[0006]2、由于SQL写法上有差异,导致完全相同语义的SQL可能因为字段、表名称、大小写、空格、换行导致SQL不同,而不能对查询结果进行复用;
[0007]3、如果数据查询历史可追溯,往往现有方案会产生重复的数据副本。
[0008]综上,亟待一种基于特征摘要的离线数据查询复用方法及其应用,以解决上述问题。
技术实现思路
[0009]本申请实施例提供了基于特征摘要的离线数据查询复用方法及其应用,针对目前技术用户体验不好的问题。
[0010]本申请核心技术主要是采用预分析数据查询SQL,构建SQL解析语法树,获取查询数据表和格式化SQL,然后基于格式化SQL和率重数据表和数据表更新时间形成的组合文本,提取摘要,作为特征摘要。同摘要的查询SQL从文件系统中获取数据,非同摘要的查询SQL则从数仓中查询结果,并将结果写入文件系统,并记录数仓查询结果,最终将查询结果返回。
[0011]第一方面,本申请提供了基于特征摘要的离线数据查询复用方法,所述方法包括以下步骤:
[0012]S00、响应数仓查询指令,以获取查询SQL语句;
[0013]S10、基于查询SQL构建SQL解析语法树;
[0014]S20、通过SQL解析语法树解析SQL用到的所有数据表,并进行滤重排序;
[0015]S30、遍历滤重排序后的所有数据表,获取每张数据表的最后更新时间的字符串组合;
[0016]S40、通过SQL解析语法树,将SQL语句进行重组格式化,得到相同语义的格式化SQL文本;
[0017]S50、将字符串组合与格式化SQL文本进行组合,形成组合字符串表;
[0018]S60、基于组合字符串表生成特征摘要文本;
[0019]S70、根据特征摘要文本,从数仓查询历史表中查找相同特征摘要文本的记录;
[0020]S80、若查到记录则获取对应的文件数据作为查询结果,记录数据查询历史并返回结果;
[0021]若未查到记录,则在数仓中查询格式化的SQL语句,获取查询的数据并将结果写入文件系统,同时将特征摘要文本和文件路径写入数仓查询历史表,记录数据查询历史并返回结果。
[0022]进一步地,S30步骤中,数仓更新情况表由ID、表名称、最后更新时间字段组成,当数仓的数据表的数据更新后表更新情况表同步进行更新,即数仓中新表加入、或者周期更新后,将数据的最后更新时间同步到表更新情况表中。
[0023]进一步地,S40步骤中,重组格式化具体为:
[0024]将空白符数量、SQL关键词大小写、表名称大小写、字段大小写、输出字段顺序、as表定义以及关联表条件按设定规则统一格式。
[0025]进一步地,重组格式化具体为:
[0026]将空白符统一转换为一个空格、SQL关键词统一为大写、表名称统一为小写、字段统一为小写、输出字段顺序按照Ascii码升序、as表重定义以及关联表条件按as表的Ascii码升序重新排序。
[0027]进一步地,S60步骤中,通过摘要算法MD5生成特征摘要文本。
[0028]进一步地,S70步骤中,数仓查询历史表的字段包括ID、SQL摘要、查询时间、文件路径及格式化SQL。
[0029]第二方面,本申请提供了一种基于特征摘要的离线数据查询复用装置,包括:
[0030]数据分析服务模块,用于发送SQL查询请求和接收返回的查询结果;
[0031]数据查询服务模块,分别与数据分析服务模块、数据查询服务数据库、数仓模块及文件服务模块通信连接,用于执行权利要求1
‑
6任意一项的基于特征摘要的离线数据查询复用方法;
[0032]数据查询服务数据库,用于存储数据和响应数据查询服务模块和数仓模块的请求以及向数据查询服务模块返回结果;
[0033]数仓模块,用于响应数据查询服务模块的请求、进行数仓操作、向数据查询服务数据库发送请求以及向数据查询服务模块返回结果;
[0034]文件服务模块,用于响应数据查询服务模块的请求和向数据查询服务模块返回结果。
[0035]第三方面,本申请提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述的基于特征摘要的离线数据查询复用方法。
[0036]第四方面,本申请提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序包括用于控制过程以执行过程的程序代码,过程包括根据上述的基于特征摘要的离线数据查询复用方法。
[0037]本申请的主要贡献和创新点如下:1、与现有技术相比,本申请通过格式化SQL可避免因为SQL写法上的差异导致的不能对查询结果进行复用的问题,不再需要像现有技术一样基于查询SQL作为数据缓存Key,查询结果作为Value缓存到缓存中间件或者文件系统;
[0038]2、与现有技术相比,本申请在同一个数据更新周期内,同一语义的SQL只在数仓中进行一次查询,而且数据更新周期内做到一次查询永久有效,减少同语义SQL查询请求对数仓底层的查询压力。借助文件系统,查询历史结果可以永久追溯,并且最大限度地避免数据重复存储。
[0039]本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
[0040]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.基于特征摘要的离线数据查询复用方法,其特征在于,包括以下步骤:S00、响应数仓查询指令,以获取查询SQL语句;S10、基于所述查询SQL构建SQL解析语法树;S20、通过所述SQL解析语法树解析SQL用到的所有数据表,并进行滤重排序;S30、遍历滤重排序后的所有数据表,获取每张数据表的最后更新时间的字符串组合;S40、通过所述SQL解析语法树,将SQL语句进行重组格式化,得到相同语义的格式化SQL文本;S50、将所述字符串组合与所述格式化SQL文本进行组合,形成组合字符串表;S60、基于所述组合字符串表生成特征摘要文本;S70、根据所述特征摘要文本,从数仓查询历史表中查找相同特征摘要文本的记录;S80、若查到记录则获取对应的文件数据作为查询结果,记录数据查询历史并返回结果;若未查到记录,则在数仓中查询格式化的SQL语句,获取查询的数据并将结果写入文件系统,同时将特征摘要文本和文件路径写入数仓查询历史表,记录数据查询历史并返回结果。2.如权利要求1所述的基于特征摘要的离线数据查询复用方法,其特征在于,S30步骤中,数仓更新情况表由ID、表名称、最后更新时间字段组成,当数仓的数据表的数据更新后表更新情况表同步进行更新,即数仓中新表加入、或者周期更新后,将数据的最后更新时间同步到表更新情况表中。3.如权利要求1所述的基于特征摘要的离线数据查询复用方法,其特征在于,S40步骤中,重组格式化具体为:将空白符数量、SQL关键词大小写、表名称大小写、字段大小写、输出字段顺序、as表定义以及关联表条件按设定规则统一格式。4.如权利要求3所述的基于特征摘要的离线数据查询复用方法,其特征在于,重组格式化具体为:将空白符统一转换为一个空格、SQ...
【专利技术属性】
技术研发人员:黄练纲,王永杰,张磊,盛小娟,
申请(专利权)人:城云科技中国有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。