首页> 中国专利> 一种新型的OLAP预计算模型及生成预计算结果的方法

一种新型的OLAP预计算模型及生成预计算结果的方法

摘要

本发明涉及一种新型的OLAP预计算模型及生成预计算结果的方法,该OLAP预计算模型包括:查询语句统计分析器、预计算结果生成器和预计算结果使用率监控器;还涉及一种方法,该方法包括:对查询语句进行统计分析;根据统计分析结果,判断是否存在匹配的预计算维度组合,若不存在,生成匹配的预计算维度组合;最后根据该匹配的预计算维度组合得到期望的查询结果,或者没有匹配的组合维度,直接从源数据中查询结果。通过本发明分析语句期望的最优维度组合,动态生成相应维度组合的预计算结果,提高后续相同或类似查询的查询效率,随着用户查询数目的增加,预计算结果越来越契合查询需求,查询效率则越高。

著录项

  • 公开/公告号CN108376143A

    专利类型发明专利

  • 公开/公告日2018-08-07

    原文格式PDF

  • 申请/专利权人 上海跬智信息技术有限公司;

    申请/专利号CN201810025700.4

  • 发明设计人 施继成;李扬;韩卿;

    申请日2018-01-11

  • 分类号G06F17/30(20060101);

  • 代理机构11212 北京轻创知识产权代理有限公司;

  • 代理人杨立;耿雪利

  • 地址 201203 上海市浦东新区自由贸易试验区亮秀路112号A座404A室

  • 入库时间 2023-06-19 06:31:23

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-27

    授权

    授权

  • 2018-08-31

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20180111

    实质审查的生效

  • 2018-08-07

    公开

    公开

说明书

技术领域

本发明属于OLAP预计算信息领域,尤其涉及一种新型的OLAP预计算模型及生成预计算结果的方法。

背景技术

在数据大爆炸的互联网时代,人们收集数据的规模越来越大,收集数据的分类越来越细致。如何有效地利用这些数据,挖掘数据中的潜在规律,最终给前瞻性的指导性的意见,成为了一个亟待解决的问题。

大数据时代的数据收集具有仅增量不修改的特点,即往往不会对历史数据进行修正,仅仅不断添加新增数据。而传统数据仓库采用的OLTP(online transactionprocessing)则不适用于该场景,尤其是数据量极其庞大的情况。其中的根本原因是,OLTP被设计成为处理复杂的应用场景,包括增删改查以及事务性,而为了能够实现这些复杂功能,OLTP在查询性能上则做出了让步,尤其在大规模数据的查询场景中表现欠佳。

相较于OLTP,OLAP则更加适合现代大数据的使用场景。OLAP提供了一种基于预计算提高多维分析效率的解决方案,即通过实现一个“数据立方体”对数据仓库中的数据按不同的维度组合进行预聚合,并把结果保存下来;当分析师进行实际业务查询时,无需重新对数据执行聚合运算,而是直接读取预计算结果,这使得对百万甚至上亿数据规模的分析变得可能。一些利用大规模计算机集群对大数据集做多维预计算的技术应用而生。这些技术常常将业务查询语义,转换成对数据立方体的检索,从而获得比从原始数据查询更高的性能。

然而在实际使用场景中,业务场景往往比较复杂,涉及的维度较多,如果将所有维度组合的数据立方体预先计算并且保存下来,会消耗大量的计算资源和存储空间。由于维度组合的数目随着维度数目的增加成指数级增长,因此在某些极度复杂的使用场景中,将所有数据立方体预计算是不可能完成的任务。不仅如此,在传统的OLAP数据立方体中,每一种维度的组合只会预计算出一个固定结果,即按照某一种维度排列顺序的预计算结果,但是实际的查询场景具有多变性,维度的排列顺序对查询效率具有显著影响,因此单一的维度排列顺序不能满足需求。

发明内容

本发明所要解决的技术问题是:现有的预计算模型只会按照一种维度组合进行预计算,无法满足用户多变的查询场景。

为解决上面的技术问题,本发明提供了一种新型的OLAP预计算模型,该OLAP预计算模型包括:查询语句统计分析器、动态维度组合生成器和预计算结果使用率监控器;

所述查询语句统计分析器,用于接收输入的查询语句,并对所述查询语句进行统计分析;以及用于根据统计分析结果,判断在预存储的预计算维度组合中是否存在与所述查询语句匹配的预计算维度组合;

所述动态维度组合生成器,用于当不存在匹配的预计算维度组合时,生成与所述查询语句对应的最优维度组合、与所述最优维度组合对应的最优组合排序,并根据所述最优维度组合、所述最优组合排序生成与所述查询语句匹配的预计算维度组合,同时存储所述匹配的预计算维度组合;

所述查询语句统计分析器,还用于根据所述匹配的预计算维度组合进行预计算查询,得到期望的查询结果;

所述预计算结果使用率监控器,用于对所述动态维度组合生成器生成的所有预计算维度组合进行监控,确定在预设时间段内每个预计算维度组合对应的预计算结果的使用次数,若使用次数低于预设阈值,则将与低于预设阈值的预计算维度组合对应的预计算结果删除。

本发明的有益效果:通过上述的模型持续不断地收集用户的查询语句,分析语句期望的最优维度组合,动态生成相应维度组合的预计算结果,提高后续相同或类似查询的查询效率,随着用户查询数目的增加,预计算结果越来越契合查询需求,查询效率则越高,解决OLAP预计算占用过多计算和存储资源等问题,同时为生成的维度组合安排最优的排列顺序,提高查询效率,能够满足用户多变的查询场景。

进一步地,所述查询语句统计分析器,还用于当在预存储的预计算维度组合中不存在与所述查询语句匹配的预计算维度组合时,在所述预存储的预计算维度组合中选取一个次优的预计算维度组合;

并根据所述次优的预计算维度组合和所述查询语句进行预计算查询,得到次优的查询结果;

对所述次优的查询结果进行聚合运算,得到所述期望的查询结果。

进一步地,所述查询语句统计分析器,具体用于接收输入的查询语句,并对所述查询语句中使用的数据表格、维度、度量和过滤条件进行统计分析。

进一步地,所述查询语句统计分析器,还用于当在所述查询语句统计分析器中不存在匹配的预计算维度组合和次优的预计算维度组合时,直接从源数据中读取与所述查询语句对应的数据;

将从源数据中读取的数据进行聚合计算和过滤,得到所述期望的查询结果。

本发明还涉及一种新型的生成预计算结果的方法,采用上述的OLAP预计算模型,该方法包括:

接收输入的查询语句,并对所述查询语句进行统计分析;

根据统计分析结果,判断在预存储的预计算维度组合中是否存在与所述查询语句匹配的预计算维度组合;

当不存在匹配的预计算维度组合时,生成与所述查询语句对应的所述最优维度组合、与所述最优维度组合对应的最优组合排序,并根据所述最优维度组合、所述最优组合排序生成与所述查询语句匹配的预计算维度组合,同时存储所述匹配的预计算维度组合;

根据所述匹配的预计算维度组合进行预计算查询,得到期望的查询结果;

对生成的所有预计算维度组合进行监控,确定在预设时间段内每个预计算维度组合对应的预计算结果的使用次数,若使用次数低于预设阈值,则将与低于预设阈值的预计算维度组合对应的预计算结果删除。

本发明的有益效果:通过上述的方法持续不断地收集用户的查询语句,分析语句期望的最优维度组合,动态生成相应维度组合的预计算结果,提高后续相同或类似查询的查询效率,随着用户查询数目的增加,预计算结果越来越契合查询需求,查询效率则越高,解决OLAP预计算占用过多计算和存储资源等问题,同时为生成的维度组合安排最优的排列顺序,提高查询效率,能够满足用户多变的查询场景。

进一步地,所述根据统计分析结果,判断在预存储的预计算维度组合中是否存在与所述查询语句匹配的预计算维度组合还包括:

当在预存储的预计算维度组合中不存在与所述查询语句匹配的预计算维度组合时,在所述预存储的预计算维度组合中选取一个次优的预计算维度组合;

根据所述次优的预计算维度组合进行预计算查询,得到次优的查询结果;

对所述次优的查询结果进行聚合运算,得到所述期望的查询结果。

进一步地,所述接收输入的查询语句,并对所述查询语句进行统计分析包括:

接收输入的查询语句,并对所述查询语句中使用的数据表格、维度、度量和过滤条件进行统计分析。

进一步地,所述根据统计分析结果,判断在预存储的预计算维度组合中是否存在与所述查询语句匹配的预计算维度组合还包括:

当在预存储的预计算维度组合中不存在与所述查询语句匹配的预计算维度组合,且也不存在次优的预计算维度组合时,直接从源数据中读取与所述查询语句对应的数据;

将从源数据中读取的数据进行聚合计算和过滤,得到所述期望的查询结果。

附图说明

图1为本发明的一种新型的OLAP预计算模型的结构示意图;

图2为本发明的一种新型的生成预计算结果的方法的流程图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,本发明实施例1提供的是一种新型的OLAP预计算模型,该OLAP预计算模型包括:查询语句统计分析器、动态维度组合生成器和预计算结果使用率监控器;

所述查询语句统计分析器,用于接收输入的查询语句,并对所述查询语句进行统计分析;以及用于根据统计分析结果,判断在预存储的预计算维度组合中是否存在与所述查询语句匹配的预计算维度组合;

所述动态维度组合生成器,用于当不存在匹配的预计算维度组合时,生成与所述查询语句对应的最优维度组合、与所述最优维度组合对应的最优组合排序,并根据所述最优维度组合、所述最优组合排序生成与所述查询语句匹配的预计算维度组合,同时存储所述匹配的预计算维度组合;

所述查询语句统计分析器,还用于根据所述匹配的预计算维度组合进行预计算查询,得到期望的查询结果;

所述预计算结果使用率监控器,用于对所述动态维度组合生成器生成的所有预计算维度组合进行监控,确定在预设时间段内每个预计算维度组合对应的预计算结果的使用次数,若使用次数低于预设阈值,则将与低于预设阈值的预计算维度组合对应的预计算结果删除。

需要说明的是,在本实施例1中持续不断地收集用户的查询语句,对这些查询语句进行统计分析,判断在之前存储的预计算维度组合中是否存在与该查询语句匹配的预计算维度组合,当不存在时,表明之前的预计算结果中不存在匹配的预计算维度组合,比如:对于查询语句“SELECT SUM(PRICE),YEAR FROM SALES_TABLE WHERE LOCAT ION=‘Shanghai’GROUP BY YEAR”这条查询语句中的YEAR和LOCAT ION就是需要的维度,仅仅包含这两个维度组合是最优组合。其中的YEAR为GROUP BY中的列,LOCATION是WHERE过滤条件中的列,一般而言查询维度是从这两个地方分析抽取。

当不存在时,生成与该查询语句对应的最优维度组合、与该最优维度组合对应的最优组合排序,并根据该最优维度组合、该最优组合排序生成与该查询语句匹配的预计算维度组合,同时存储该匹配的预计算维度组合。然后查询语句统计分析器就会根据所述匹配的预计算维度组合进行预计算查询,得到期望的查询结果,并保存所述期望的查询结果,比如:使用查询语句“SELECT SUM(PRICE),YEAR FROM SALES_TABLE WHERE LOCATION=‘Shanghai’GROUP BY YEAR”作为样例。从上述分析中可以看出,列YEAR和LOCATION为所需维度,最优维度组合为仅包含这两列的组合,而次优的组合可以是列YEAR、列LOCATION或者列PRICE这三个。另外对于上述如果没有任何满足需求的预计算结果,则需要从源数据读取需要的结果,比如上述例子,需要从源数据读取PRICE、YEAR、LOCATION这三列的数据,然后进行聚合计算和过滤得到最终结果。这样的查询语句会被发送给“动态维度组合生成器”,以生成预计算结果,加速相同或者类似的查询语句,另外使用预计算结果使用率监控器是因为用户的查询在不断变化,这个月关注的查询和上个月的不同,因此之前生成的预计算结果可能在一段时间后失去了有效性,即不再被用户访问。该监控器从查询模式统计分析器获得相关信息,判断出长时间不被访问的预计算结果,将预计算结果清除或转移到其他的存储设备上,空余出更多的存储空间,减少存储压力。

在另一实施例2中所述查询语句统计分析器,还用于当在预存储的预计算维度组合中不存在与所述查询语句匹配的预计算维度组合时,在所述预存储的预计算维度组合中选取一个次优的预计算维度组合;

并根据所述次优的预计算维度组合和所述查询语句进行预计算查询,得到次优的查询结果;

对所述次优的查询结果进行聚合运算,得到所述期望的查询结果。可以理解的是,在本实施例2中比如:使用查询语句“SELECT SUM(PRICE),YEAR FROM SALES_TABLE WHERELOCATION=‘Shanghai’GROUP BY YEAR”作为样例。从上述分析中可以看出,列YEAR和LOCATION为所需维度,最优维度组合为仅包含这两列的组合。如果存在一种维度组合,包含YEAR和LOCATION,但不限于这两种维度组合,例如维度组合YEAR、LOCATION、CATEGORY,这种维度组合为该查询的可用维度组合。该预计算结果仍然能够被用来加速查询,但需要对预计算结果进行一些简单的处理,比如在线的聚合运算,从而得到期望的查询结果,例如表一所示:该动态维度组合生成器从查询语句统计分析器接收到需要动态生成的维度组合,然后动态维度组合生成器以已经完成的预计算结果或者源数据为基础,生成新的匹配查询要求的维度组合预计算结果。这里需要指出,动态维度组合生成器不仅仅需要选择所需的维度,同时需要关注维度的排列顺序,即最终预计算结果的存储排布方式。

例如,所需的维度为A、B和C,由于查询以C作为查询条件,因此将C放到排列的第一位有利于该查询,生成的维度排列为CAB。反映到存储上,结果就会呈现类似表一所述结果:

维度C维度A维度B11007120054501079089803980410104

表一

如表一所示,考虑了维度组合的排列顺序后,针对维度C的过滤条件能够更有效率,读取的数据更集中,效率更高。

在另一实施例3中所述查询语句统计分析器,具体用于接收输入的查询语句,并对所述查询语句中使用的数据表格、维度、度量和过滤条件进行统计分析。

可以理解的是,在本实施例3中查询语句统计分析器在收集用户的每一条查询语句,分析和统计以下方面的信息:

1)查询用到的数据表格;2)查询用到的维度及其它信息;3)查询用到的度量及其它信息;4)查询用到的过滤条件;5)相同查询出现次数和概率;6)所期望最优的维度组合(包括其排列信息);7)其它可能的信息。

在另一实施例4中所述查询语句统计分析器,还用于当在所述查询语句统计分析器中不存在匹配的预计算维度组合和次优的预计算维度组合时,

直接从源数据中读取与所述查询语句对应的数据;

将从源数据中读取的数据进行聚合计算和过滤,得到所述期望的查询结果。

可以理解的是,在本实施例4中比如:使用查询语句“SELECT SUM(PRICE),YEARFROM SALES_TABLE WHERE LOCATION=‘Shanghai’GROUP BY YEAR”作为样例。从上述分析中可以看出,列YEAR和LOCATION为所需维度,最优维度组合为仅包含这两列的组合。但是对于没有任何满足需求的预计算结果,则需要从源数据读取需要的结果,比如上述例子,需要从源数据读取PRICE、YEAR、LOCATION这三列的数据,然后进行聚合计算和过滤得到最终结果。这样的查询语句会被发送给“动态维度组合生成器”,以生成预计算结果,加速相同或者类似的查询语句。

如图2所示,本发明实施例5中一种新型的生成预计算结果的方法,采用上述实施例1-4的OLAP预计算模型,该方法包括:

S1,接收输入的查询语句,并对所述查询语句进行统计分析;

S2,根据统计分析结果,判断在预存储的预计算维度组合中是否存在与所述查询语句匹配的预计算维度组合;

S3,当不存在匹配的预计算维度组合时,生成与所述查询语句对应的所述最优维度组合、与所述最优维度组合对应的最优组合排序,并根据所述最优维度组合、所述最优组合排序生成与所述查询语句匹配的预计算维度组合,同时存储所述匹配的预计算维度组合;

S4,根据所述匹配的预计算维度组合进行预计算查询,得到期望的查询结果;

S5,对所述动态维度组合生成器生成的所有预计算维度组合进行监控,确定在预设时间段内每个预计算维度组合对应的预计算结果的使用次数,若使用次数低于预设阈值,则将与低于预设阈值的预计算维度组合对应的预计算结果删除。

可以理解的是,在本实施例5中持续不断地收集用户的查询语句,对这些查询语句进行统计分析,判断在之前存储的预计算维度组合中是否存在与该查询语句匹配的预计算维度组合,当不存在时,表明之前的预计算结果中不存在匹配的预计算维度组合比如:对于查询语句“SELECT SUM(PRICE),YEAR FROM SALES_TABLE WHERE LOCATION=‘Shanghai’GROUP BY YEAR”这条查询语句中的YEAR和LOCATION就是需要的维度,仅仅包含这两个维度组合是最优组合,而次优的组合可以是列YEAR、列LOCATION或者列PRICE这三个。其中的YEAR为GROUP BY中的列,LOCATION是WHERE过滤条件中的列,一般而言查询维度是从这两个地方分析抽取。

在不存在时,生成与该查询语句对应的最优维度组合、与该最优维度组合对应的最优组合排序,并根据该最优维度组合、该最优组合排序生成与该查询语句匹配的预计算维度组合,同时存储该匹配的预计算维度组合。然后查询语句统计分析器就会根据所述匹配的预计算维度组合进行预计算查询,得到期望的查询结果,并保存所述期望的查询结果,比如:使用查询语句“SELECT SUM(PRICE),YEAR FROM SALES_TABLE WHERE LOCATION=‘Shanghai’GROUP BY YEAR”作为样例。从上述分析中可以看出,列YEAR和LOCATION为所需维度,最优维度组合为仅包含这两列的组合。另外对于上述如果没有任何满足需求的预计算结果,则需要从源数据读取需要的结果,比如上述例子,需要从源数据读取PRICE、YEAR、LOCATION这三列的数据,然后进行聚合计算和过滤得到最终结果。这样的查询语句会被发送给“动态维度组合生成器”,以生成预计算结果,加速相同或者类似的查询语句,另外使用预计算结果使用率监控器是因为用户的查询在不断变化,这个月关注的查询和上个月的不同,因此之前生成的预计算结果可能在一段时间后失去了有效性,即不再被用户访问。该监控器从查询模式统计分析器获得相关信息,判断出长时间不被访问的预计算结果,将结果清除或转移到其他的存储设备上,空余出更多的存储空间,减少存储压力。

在另一实施例6中所述根据统计分析结果,判断在预存储的预计算维度组合中是否存在与所述查询语句匹配的预计算维度组合还包括:

当在预存储的预计算维度组合中不存在与所述查询语句匹配的预计算维度组合时,在所述预存储的预计算维度组合中选取一个次优的预计算维度组合;

根据所述次优的预计算维度组合进行预计算查询,得到次优的查询结果;

对所述次优的查询结果进行聚合运算,得到所述期望的查询结果。可以理解的是,在本实施例6中比如:使用查询语句“SELECTSUM(PRICE),YEAR FROM SALES_TABLE WHERELOCATION=‘Shanghai’GROUP BY YEAR”作为样例。从上述分析中可以看出,列YEAR和LOCATION为所需维度,最优维度组合为仅包含这两列的组合。如果存在一种维度组合,包含YEAR和LOCATION,但不限于这两种维度组合,例如维度组合YEAR、LOCATION、CATEGORY,这种维度组合为该查询的可用维度组合。该预计算结果仍然能够被用来加速查询,但需要对预计算结果进行一些简单的处理,比如在线的聚合运算,从而得到期望的查询结果,例如表一所示:该动态维度组合生成器从查询语句统计分析器接收到需要动态生成的维度组合,然后动态维度组合生成器以已经完成的预计算结果或者源数据为基础,生成新的匹配查询要求的维度组合预计算结果。这里需要指出,动态维度组合生成器不仅仅需要选择所需的维度,同时需要关注维度的排列顺序,即最终预计算结果的存储排布方式。

例如,所需的维度为A、B和C,由于查询以C作为查询条件,因此将C放到排列的第一位有利于该查询,生成的维度排列为CAB。反映到存储上,结果就会呈现类似表一所述结果:

表一

如表一所示,考虑了维度组合的排列顺序后,针对维度C的过滤条件能够更有效率,读取的数据更集中,效率更高。

在另一实施例7中所述接收输入的查询语句,并对所述查询语句进行统计分析包括:

接收输入的查询语句,并对所述查询语句中使用的数据表格、维度、度量和过滤条件进行统计分析。

在另一实施例8中所述根据统计分析结果,判断在预存储的预计算维度组合中是否存在与所述查询语句匹配的预计算维度组合还包括:

当在预存储的预计算维度组合中不存在与所述查询语句匹配的预计算维度组合,且也不存在次优的预计算维度组合时,直接从源数据中读取与所述查询语句对应的数据;

将从源数据中读取的数据进行聚合计算和过滤,得到所述期望的查询结果。

可以理解的是,在本实施例8中比如:使用查询语句“SELECT SUM(PRICE),YEARFROM SALES_TABLE WHERE LOCATION=‘Shanghai’GROUP BY YEAR”作为样例。从上述分析中可以看出,列YEAR和LOCATION为所需维度,最优维度组合为仅包含这两列的组合。但是对于没有任何满足需求的预计算结果,则需要从源数据读取需要的结果,比如上述例子,需要从源数据读取PRICE、YEAR、LOCATION这三列的数据,然后进行聚合计算和过滤得到最终结果。这样的查询语句会被发送给“动态维度组合生成器”,以生成预计算结果,加速相同或者类似的查询语句。

在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号