本发明涉及大数据查询,尤其涉及一种基于sql查询模板提取数据的查询加速方法、系统及装置。
背景技术:
1、现有技术中,数据查询加速技术经常出现在报表场景中,因为报表查询通常需要极致的响应性能比如需要在3s内打开,除了页面渲染及其他流程的耗时外,真实的sql查询只剩下1s。目前想要实现数据查询加速的解决方案有三种:通过预计算实现;在存储计算层(比如选择列存、mpp计算引擎)上进行优化进而进行加速;或基于缓存热点查询结果,下次查询时可直接返回。
2、而对于大数据量的报表来说,第二种方案存在计算并不能满足极致的性能要求;第三种方案能解决重复查询的性能问题,但是无法解决查询日期变化的场景。在较为固定的查询模式下,预计算属于更优的方案,而目前的预计算一般通过如下两种方式:打cube,比如kylin,按某些维度列对某个聚合列进行预先计算;或构建物化视图来实现。
3、而目前预计算的不足之处在于:无法保证所有报表的极致查询性能,预计算的配置比如kylin cube和物化视图都需要专业的数据人员支持,且需要经常进行维护,即使存在这样的数据专家,也无法保证所有报表查询的极致性能。比如kylin的cube,配置的维度列和聚合列一旦和实际的查询有差异,会存在二次计算(实际场景报告配置人员和数据模型构建配置cube的人员是独立的两个部门),导致性能满足不了要求。构建物化视图同样存在一样的问题,且不是所有的数据源都支持物化视图。
技术实现思路
1、本发明针对现有技术中的缺点,提供了一种基于sql查询模板提取数据的查询加速方法、系统及装置。
2、为了解决上述技术问题,本发明通过下述技术方案得以解决:
3、一种基于sql查询模板提取数据的查询加速方法,包括以下步骤:
4、基于历史行为数据提取查询实例的初始sql查询模式,其中,初始sql查询模式包括动态参数及参数历史值;
5、基于所述动态参数及参数历史值生成参数维度表;
6、将所述初始sql查询模式和所述参数维度表按照预设模型进行改写,生成关系投影sql;
7、基于动态参数调度所述关系投影sql,调度执行关系投影sql得到执行结果,将执行结果转为查询模式相应的所有查询实例,将查询实例和对应的结果一对一映射存储于hbase数据库中;
8、查询待查询实例对应的结果是否存在hbase数据库内,若是,则请求hbase数据库。
9、作为一种可实施方式,所述基于历史行为数据提取查询实例的初始sql查询模式,包括以下步骤:
10、获取历史行为数据,所述历史行为数据中包括查询实例的所有数据;
11、获取查询实例的所有数据,其中,所述所有数据包括查询实例,基于所述查询实例推断出动态参数及动态参数的历史组合值;
12、对所有数据按照预设聚类模型进行聚类抽取,得到相应的初始sql查询模式,其中,预设聚类模型基于动态参数设置。
13、作为一种可实施方式,所述基于所述动态参数及参数历史值生成参数维度表,包括以下步骤:
14、将所述动态参数及参数历史值对应的所有数据进行提取,得到动态参数,所述动态参数包括日期动态参数和非日期动态参数,基于非日期动态参数的每个历史值组合生成唯一标识符;
15、将所述非日期动态参数的每个历史值组合及唯一标识符,作为参数维度表的字段。
16、作为一种可实施方式,所述调度执行所述关系投影sql得到执行结果,将所述执行结果转化为所述查询实例对应的结果,包括以下步骤:
17、获取关系投影sql,将相同标识符的数据进行组合,转化为对应的查询实例sql对应的结果。
18、作为一种可实施方式,所述查询待查询实例对应的结果是否存在hbase数据库内,若是,则请求hbase数据库,包括以下步骤;
19、响应于待查询实例的查询请求,判断待查询实例对应的结果是否存在hbase数据库内;若存在,直接查询hbase数据库,若不存在,则直接下发到原始数据库进行数据查询。
20、作为一种可实施方式,所述并存储到hbase数据库内,包括以下步骤:
21、将唯一标识符将查询实例sql作为key,compose_uk为01的数据集合作为value存到kv存储hbase中。
22、作为一种可实施方式,所述将初始sql查询模式和参数维度表按照预设模型进行改写,还包括以下步骤:若初始sql查询模式存在嵌套的sql子查询,则查找所有非日期动态参数动态参数所在的最近公共父节点sql子查询;
23、基于最近公共父节点sql子查询的位置和参数维度表按照预设模型进行改写。
24、一种基于sql查询模板提取数据的查询加速系统,包括模板提取模块、参数唯维度表生成模块、改写生成模块、调度执行模块及查询请求模块;
25、所述模板提取模块,基于历史行为数据提取查询实例的初始sql查询模式,其中,初始sql查询模式包括动态参数及参数历史值;
26、所述参数唯维度表生成模块,基于所述动态参数及参数历史值生成参数维度表;
27、所述改写生成模块,用于将所述初始sql查询模式和所述参数维度表按照预设模型进行改写,生成关系投影sql;
28、所述调度执行模块,用于根据日期参数调度所述关系投影sql,调度执行关系投影sql得到执行结果,将执行结果转为查询模式相应的所有查询实例,将查询实例和对应的结果一对一映射存储于hbase数据库中;
29、所述查询请求模块,用于查询待查询实例对应的结果是否存在hbase数据库内,若是,则请求hbase数据库。
30、一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法。
31、一种基于sql查询模板提取数据的查询加速装置,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的方法。
32、本发明由于采用了以上技术方案,具有显著的技术效果:
33、本发明通过利用sql查询模板及历史参数值,进行sql物化改写,按日期进行调度,可提前计算出所有可能会被查询的sql实例,以此实现极致的查询性能。
1.一种基于sql查询模板提取数据的查询加速方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于sql查询模板提取数据的查询加速方法,其特征在于,所述基于历史行为数据提取查询实例的初始sql查询模式,包括以下步骤:
3.根据权利要求1所述的基于sql查询模板提取数据的查询加速方法,其特征在于,所述基于所述动态参数及参数历史值生成参数维度表,包括以下步骤:
4.根据权利要求1所述的基于sql查询模板提取数据的查询加速方法,其特征在于,所述调度执行所述关系投影sql得到执行结果,将所述执行结果转化为所述查询实例对应的结果,包括以下步骤:
5.根据权利要求1所述的基于sql查询模板提取数据的查询加速方法,其特征在于,所述查询待查询实例对应的结果是否存在hbase数据库内,若是,则请求hbase数据库,包括以下步骤;
6.根据权利要求5所述的基于sql查询模板提取数据的查询加速方法,其特征在于,所述并存储到hbase数据库内,包括以下步骤:
7.根据权利要求1所述的基于sql查询模板提取数据的查询加速方法,其特征在于,所述将初始sql查询模式和参数维度表按照预设模型进行改写,还包括以下步骤:若初始sql查询模式存在嵌套的sql子查询,则查找所有非日期动态参数动态参数所在的最近公共父节点sql子查询;
8.一种基于sql查询模板提取数据的查询加速系统,其特征在于,包括模板提取模块、参数唯维度表生成模块、改写生成模块、调度执行模块及查询请求模块;
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述的方法。
10.一种基于sql查询模板提取数据的查询加速装置,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任意一项所述的方法。