首页> 中国专利> 适用于OLAP查询引擎的查询方法及装置

适用于OLAP查询引擎的查询方法及装置

摘要

本发明提供一种适用于OLAP查询引擎的优化方案及装置,包括客户端代理模块、查询模式匹配模块、查询分布式执行模块以及预聚合模块。查询模式匹配模块,用于获取OLAP查询引擎接收到的MDX查询请求,对所述MDX查询请求基于维度处理生成至少一组聚合查询集合,所述一组聚合查询集合包括多个聚合查询请求;查询分布式执行模块,用于基于OLAP查询引擎对所述多个聚合查询请求并行处理获得数据库中相对应的多个聚合查询结果,所述聚合查询请求与所述聚合查询结果对应设置。本发明提供的方法及装置能够在构建出一个高效的OLAP查询执行引擎,应对各类报表系统的复杂OLAP查询,可以显著提高MDX查询的执行效率,加速响应报表系统的分析请求。

著录项

  • 公开/公告号CN112559567A

    专利类型发明专利

  • 公开/公告日2021-03-26

    原文格式PDF

  • 申请/专利权人 跬云(上海)信息科技有限公司;

    申请/专利号CN202011434001.9

  • 发明设计人 刘文政;李栋;李扬;韩卿;

    申请日2020-12-10

  • 分类号G06F16/2455(20190101);G06F16/2453(20190101);

  • 代理机构11541 北京知果之信知识产权代理有限公司;

  • 代理人卜荣丽;李志刚

  • 地址 200120 上海市浦东新区中国(上海)自由贸易试验区亮秀路112号B座401室

  • 入库时间 2023-06-19 10:24:22

说明书

技术领域

本发明涉及数据查询技术,尤其涉及一种适用于OLAP查询引擎的查询方法及装置。

背景技术

如何提高OLAP查询的执行效率,快速响应业务的报表分析需求,一直都是OLAP查询系统关注的热点问题。

OLAP (在线联机分析)通常使用的查询语言是 MDX,大多数报表系统(包括但不限于Excel, Power BI, Tableau, MSTR, Smartbi等等)都支持使用MDX接口。

当前,业界传统的支持MDX的OLAP引擎有SSAS和Mondrian等。这些传统的OLAP引擎在遇到报表系统发送的MDX查询较复杂时,响应性能会严重下降。究其原因有三点,第一,MDX接口的数据交换格式是XMLA, 此格式传输数据效率低下,在遇到一些查询结果集大的情况,查询网络传输时间非常长。第二,传统的OLAP引擎执行MDX查询是基于每个MDX算子逐步计算的,而未考虑到报表系统的MDX查询特征进行优化。第三,传统的OLAP引擎是单机执行MDX查询的,在一些查询请求量较大的情况下,可能会出现执行缓慢,内存溢出的情况。

针对于现有技术中MDX引擎技术存在的缺陷,导致难以快速响应报表的查询请求的问题,现有技术中还未提供有效的解决方案。

发明内容

本发明实施例提供一种适用于OLAP查询引擎的查询方法及装置,能够在构建出一个高效的OLAP查询执行引擎,应对各类报表系统的复杂OLAP查询,可以显著提高MDX查询的执行效率,加速响应报表系统的分析请求。

本发明实施例的第一方面,提供一种适用于OLAP查询引擎的查询方法,包括:

获取OLAP查询引擎接收到的MDX查询请求,对所述MDX查询请求基于维度处理生成至少一组聚合查询集合,所述一组聚合查询集合包括多个聚合查询请求;

基于OLAP查询引擎对所述多个聚合查询请求并行处理获得数据库中相对应的多个查询结果,所述聚合查询请求与所述查询结果对应设置。

可选地,在第一方面的一种可能实现方式中,获取OLAP查询引擎接收到的MDX查询请求包括:

将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种。

可选地,在第一方面的一种可能实现方式中,在所述将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种之前,还包括:

判断所述MDX查询请求的数值是否大于第一预设值;

如果所述MDX查询请求的数值大于第一预设值,则将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种。

可选地,在第一方面的一种可能实现方式中,在所述基于OLAP查询引擎对所述多个聚合查询请求并行处理获得数据库中相对应的多个查询结果之后,还包括:

将所述多个查询结果反馈至OLAP查询引擎以及报表系统内。

可选地,在第一方面的一种可能实现方式中,获取业务需求数据,所述业务需求数据包括维度信息;

根据所述维度信息将数据仓库中包括的原始明细数据构建成与所述维度信息相对应的Cube。

本发明实施例的第二方面,提供一种适用于OLAP查询引擎的查询装置,其特征在于,包括:

查询模式匹配模块,用于获取OLAP查询引擎接收到的MDX查询请求,对所述MDX查询请求基于维度处理生成至少一组聚合查询集合,所述一组聚合查询集合包括多个聚合查询请求;

查询分布式执行模块,用于基于OLAP查询引擎对所述多个聚合查询请求并行处理获得数据库中相对应的多个查询结果,所述聚合查询请求与所述查询结果对应设置。

可选地,在第二方面的一种可能实现方式中,还包括客户端代理模块,用于将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种。

可选地,在第二方面的一种可能实现方式中,所述客户端代理模块用于判断所述MDX查询请求的数值是否大于第一预设值;

如果所述MDX查询请求的数值大于第一预设值,则将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种。

可选地,在第二方面的一种可能实现方式中,还包括预聚合模块,用于获取业务需求数据,所述业务需求数据包括维度信息;

根据所述维度信息将数据仓库中包括的原始明细数据构建成与所述维度信息相对应的Cube。

本发明实施例的第三面,提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现本发明第一方面及第一方面各种可能设计的所述方法。

本发明提供的一种适用于OLAP查询引擎的查询方法及装置,能够将MDX查询请求基于维度处理生成至少一组聚合查询集合,在OLAP查询引擎的查询过程中进行并处理获取相应的查询结果,在此过程中,由于本方法控制的OLAP查询引擎在对报表系统查询的数据前先基于维度生成聚合查询集合,在对聚合查询集合进行搜索时采用并行的处理方式,相较于传统的方式效率更高。

并且,本发明提供了OLAP引擎在查询结果集大时网络传输的性能优化方案,极大降低了报表系统和OLAP引擎之间的网络传输数据量。

并且,本发明提供了OLAP引擎在处理复杂MDX查询的执行流程优化方案,将更多MDX算子合并起来运算,简化了运算流程,并增强了MDX执行的并行度。

并且,本发明还供了OLAP引擎在处理大数据量时的查询优化方案,结合了分布式计算和预计算的优势,极大地提高了查询性能。

附图说明

图1为适用于OLAP查询引擎的查询方法的第一种实施方式的流程图;

图2为适用于OLAP查询引擎的查询方法的第二种实施方式的流程图;

图3为适用于OLAP查询引擎的查询方法的第三种实施方式的流程图;

图4为适用于OLAP查询引擎的查询方法的第一种实施方式的结构图;

图5为适用于OLAP查询引擎的查询方法的第二种实施方式的结构图。

具体实施方式

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

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含A、B和C”、“包含A、B、C”是指A、B、C三者都包含,“包含A、B或C”是指包含A、B、C三者之一,“包含A、B和/或C”是指包含A、B、C三者中任1个或任2个或3个。

应当理解,在本发明中,“与A对应的B”、“与A相对应的B”、“A与B相对应”或者“B与A相对应”,表示B与A相关联,根据A可以确定B。根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。A与B的匹配,是A与B的相似度大于或等于预设的阈值。

取决于语境,如在此所使用的“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

术语定义,OLAP:联机数据分析, 一种使分析人员能够迅速、从多个维度洞察数据的技术;MDX: 多维表达式(multi-dimensional expressions),常用于OLAP的查询;Cube:多维数据集;XMLA:一种数据访问协议。

本发明提供一种适用于OLAP查询引擎的查询方法,如图1所示,包括:

步骤S20、获取OLAP查询引擎接收到的MDX查询请求,对所述MDX查询请求基于维度处理生成至少一组聚合查询集合,所述一组聚合查询集合包括多个聚合查询请求。

在步骤步骤S20,主要对OLAP查询引擎接收到的MDX查询进行分析,产出适应报表布局的聚合查询计划。首先,通过模式匹配分析出MDX查询所包含的报表操作和布局要素,比如维度度量的选择、排序、过滤,报表筛选器的使用,层级的下钻,小计和总计等等,然后,分解得出每个聚合层级下报表的布局要素,最后,生成一组聚合查询集合的计划,每一个计划包含要获取的维度度量信息,过滤、排序信息等。

本步骤够有效地优化整个OLAP查询引擎的执行过程,将更多的MDX算子合并执行,并且增强了MDX执行过程的并行度。

步骤S40、基于OLAP查询引擎对所述多个聚合查询请求并行处理获得数据库中相对应的多个查询结果,所述聚合查询请求与所述查询结果对应设置。

在步骤S40中,主要将对多个聚合查询请求、计划分布式地进行执行。首先,根据维度度量信息查找到对应的数据源的数据信息、即查询结果(可以是预先聚合的Cube信息,也可以是数据仓库中的原始表数据),然后,向分布式执行引擎提交查询任务,任务包含将数据源中的数据加载到分布式执行引擎中(分布式执行引擎包括但不限于Spark, MapReduce等),在分布式执行引擎中执行过滤排序等操作,以及一些MDX的函数运算等。其中查询结果可以是数据库中预先存储的。

步骤S20、获取OLAP查询引擎接收到的MDX查询请求包括:

步骤S202、将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种。

在步骤S202之前,如图2所示,还包括:

步骤S200、判断所述MDX查询请求的数值是否大于第一预设值;

步骤S201、如果所述MDX查询请求的数值大于第一预设值,则将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种。

在步骤S200、步骤S201以及步骤S202中,其中第一预设值可以预先设置。主要用于代理报表系统的OLAP查询,首先,将OLAP查询的数据格式从XMLA转换成更加轻量的、高效的数据格式(包括但不限于JSON,Protobuf等),并使用压缩算法将网络数据传输量进一步减小, 然后,以此数据格式与OLAP查询引擎进行交互,最后,将从OLAP查询引擎获取到的结果的数据格式转换成XMLA,返回给报表系统。上述步骤能大大降低原来报表系统和OLAP查询引擎的网络数据传输量。在查询结果量较小时,也可以不使用本步骤。

在步骤S40之后,还包括:

步骤S50、将所述多个查询结果反馈至OLAP查询引擎以及报表系统内。

通过步骤S50,在分布式执行引擎按照聚合查询计划执行完毕后,将结果收集回OLAP查询引擎中,并返回。此步骤解决了查询请求量大时存在的性能问题。

在一个实施例中,如图3所示,还包括以下步骤:

步骤S60、获取业务需求数据,所述业务需求数据包括维度信息;

步骤S80、根据所述维度信息将数据仓库中包括的原始明细数据构建成与所述维度信息相对应的Cube。

在步骤S60和步骤S80中,主要根据业务的OLAP分析需求(需要分析哪些维度度量),将数据仓库中原始明细数据构建成Cube,提供OLAP查询所需要的聚合数据。本步骤采用的是业界通用的OLAP建模工具(包括但不限于kylin等),主要提高了聚合查询的查询效率。需要注意的是,本步骤非主流程。在查询请求量较小时,也可以不使用本步骤。

申请人基于Apache Kylin 作为预聚合模块,测试了传统的OLAP查询引擎和本方案构建的OLAP查询引擎在常用报表系统下的查询性能,后者比前者在普通查询下速度快2-5倍,复杂查询下速度快10-100倍。

本发明还提供一种适用于OLAP查询引擎的查询装置,如图4所示,包括:

查询模式匹配模块,用于获取OLAP查询引擎接收到的MDX查询请求,对所述MDX查询请求基于维度处理生成至少一组聚合查询集合,所述一组聚合查询集合包括多个聚合查询请求;

查询分布式执行模块,用于基于OLAP查询引擎对所述多个聚合查询请求并行处理获得数据库中相对应的多个查询结果,所述聚合查询请求与所述查询结果对应设置。

进一步的,如图5所示,还包括客户端代理模块,用于将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种。

进一步的,所述客户端代理模块用于判断所述MDX查询请求的数值是否大于第一预设值;

如果所述MDX查询请求的数值大于第一预设值,则将所述MDX查询请求的格式由XMLA转换为JSON格式以及Protobuf格式中的任意一种或多种。

进一步的,还包括预聚合模块,用于获取业务需求数据,所述业务需求数据包括维度信息;

根据所述维度信息将数据仓库中包括的原始明细数据构建成与所述维度信息相对应的Cube。

其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(ApplicationSpecific Integrated Circuits,简称:ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。

在上述终端或者服务器的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号