一种what‑if查询处理方法及系统与流程

文档序号:11199347阅读:672来源:国知局
本发明涉及数据库查询
技术领域
:,尤其涉及一种what-if查询处理方法及系统。
背景技术
::数据仓库存储大量的历史数据,从历史数据中挖掘有价值的信息,对企业的运营及策略调整起着至关重要的作用。基于olap的多维分析是企业决策的重要方法。在olap系统中,what-if分析又叫假设分析,它是基于历史数据对假设场景进行分析的一类olap技术。在企业决策支持系统中,what-if分析(what-ifanalysis)用于根据决策者的思路调整数据,并反映策略调整后对其它数据的影响,特别适合决策者对多种决策方案进行预测和评估。然而,what-if分析当前存在的难点是:如何来表示数据仓库上的假设数据、如何快速生成假设更新视图以及如何高效的执行olap查询。当前研究中,表示假设数据常用的方法有查询重写和delta表存储两类。前者是将对假设数据的操作,通过查询重写转换为对真实数据的操作,适用于简单的代数更新,无法进行多版本的复杂假设查询;后者是用delta表单独存储假设数据,并与历史数据合并生成假设更新视图,最后基于假设更新视图进行olap查询,该方法适用于所有的假设场景,支持多版本管理。在基于delta表的假设数据表示方法中,合并算法主要通过表连接操作实现。当数据量较大时,合并开销较大,会严重影响what-if查询的性能。此外,当what-if查询中包含多表连接、groupby、orderby等操作时,查询处理过程中涉及的数据量与计算量进一步增加,what-if分析的效率也进一步下降。技术实现要素:本发明提供一种what-if查询处理方法及系统,解决现有技术中数据采集存在非连续性,导致重要信息丢失的技术问题。本发明的目的是通过以下技术方案实现的:一种what-if查询处理方法,包括:通过图形化界面输入查询语句和假设数据,将用户的图形化表述转换为查询语句以提交给olap服务器,同时将所述假设数据存储在差分delta表中;采用布隆过滤器,过滤掉基表basetable中被假设更新影响的记录集;将被过滤掉的记录与所述delta表中的插入记录和更新的记录合并,以生成what-if数据视图;根据所述查询语句,所述olap服务器基于所述what-if数据视图进行olap查询。前述的what-if查询处理方法,所述根据所述查询语句,所述olap服务器基于所述what-if数据视图进行olap查询的步骤,包括:将所述查询语句映射为redis存储系统对应的key值;判断所述redis存储系统中是否存在所述key值;当所述redis存储系统中存在所述key值时,直接输出查询结果;当所述redis存储系统中不存在所述key值时,从所述olap服务器中查询,并将查询结果集写入所述redis存储系统。前述的what-if查询处理方法,所述采用布隆过滤器,过滤掉基表basetable中被假设更新影响的记录集的步骤,包括:利用k个独立的hash函数,将所述delta表中的记录集映射为m个bit位{1,……,m}的集合中,并将映射位置置为1;判断basetable记录的k个hash函数值对应的位置是否均为1,当均为1时,过滤掉所述basetable记录。一种what-if查询处理系统,包括:输入模块,用于通过图形化界面输入查询语句和假设数据,将用户的图形化表述转换为查询语句以提交给olap服务器,同时将所述假设数据存储在差分delta表中;过滤模块,用于采用布隆过滤器,过滤掉基表basetable中被假设更新影响的记录集;视图生成模块,用于将被过滤掉的记录与所述delta表中的插入记录和更新的记录合并,以生成what-if数据视图;查询模块,用于根据所述查询语句,基于所述what-if数据视图进行olap查询。前述的what-if查询处理系统,所述查询模块,包括:第一映射单元,用于将所述查询语句映射为redis存储系统对应的key值;第一判断单元,用于判断所述redis存储系统中是否存在所述key值;输出单元,用于当所述redis存储系统中存在所述key值时,直接输出查询结果;缓存单元,用于当所述redis存储系统中不存在所述key值时,从所述olap服务器中查询,并将查询结果集写入所述redis存储系统。前述的what-if查询处理系统,所述过滤模块,包括:第二映射单元,用于利用k个独立的hash函数,将所述delta表中的记录集映射为m个bit位{1,……,m}的集合中,并将映射位置置为1;第二判断单元,用于判断basetable记录的k个hash函数值对应的位置是否均为1,当均为1时,过滤掉所述basetable记录。本发明的技术效果为:通过图形化界面输入查询语句和假设数据,将用户的图形化表述转换为查询语句以提交给olap服务器,同时将所述假设数据存储在差分delta表中;采用布隆过滤器,过滤掉基表basetable中被假设更新影响的记录集;将被过滤掉的记录与所述delta表中的插入记录和更新的记录合并,以生成what-if数据视图;根据所述查询语句,所述olap服务器基于所述what-if数据视图进行olap查询。本发明使用布隆过滤器与查询缓存机制的结合,使what-if分析性能显著提高,查询时间大大缩短。附图说明图1为本发明实施例提供的一种what-if查询处理方法的流程图;图2为本发明实施例提供的what-if视图的合并示意图;图3为本发明实施例提供的what-if数据视图的生成过程;图4为本发明实施例提供的一种what-if查询处理系统的结构示意图。具体实施方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明实施例提供了一种what-if查询处理方法,如图1所示,包括:步骤101、通过图形化界面输入查询语句和假设数据,将用户的图形化表述转换为查询语句以提交给olap服务器,同时将所述假设数据存储在差分delta表中;其中,基表(basetable),基表为假设更新的基础数据表,可以是数据库中的任意关系,也可以是某个物化的查询视图,在基于值假设更新的应用场景中,基表主要指的是事实表,我们记为b(d1,d2,…,dm,m1,m2,…,mn),其中,d1,…,dm为维度属性,m1,…,mn为度量值属性。差分表(deltatable),delta表为在基表上进行假设更新的物化数据集,除与基表对应的属性外,还需要增加若干个附加属性来表示假设更新的类型和版本等信息.我们记为d(d1,d2,…,dm,m1,m2,…,mn,flag,ver),其中,ver表示假设更新记录的版本信息,flag表示假设更新的类型,假设更新包括update(0),insert(1)和delete(-1)这3种类型,分别以u,i和d来表示。步骤102、采用布隆过滤器,过滤掉基表basetable中被假设更新影响的记录集;其中,布隆过滤器通过hash值构建,并使用不同的hash函数。步骤103、将被过滤掉的记录与所述delta表中的插入记录和更新的记录合并,以生成what-if数据视图;其中,基于basetable和delta表的集合操作生成what-if数据视图,所谓集合操作是指基于集合的一些运算,比如常见的集合的交(∩)、并(∪)和差(-)等。集合合并运算的示意如图2所示,集合合并过程如图3所示,该过程可以通过关系代数的形式描述如下:tmpview=bloomfilter(b,d),tmpview为临时数据视图,bloomfliter(b,d)为布隆过滤器过滤删除记录集;本步骤中,将经过布隆过滤器过滤丢弃的部分与delta表中的相应部分(插入的数据和更新的数据)直接合并,有效消除连接操作,从而提升处理性能。步骤104、根据所述查询语句,所述olap服务器基于所述what-if数据视图进行olap查询。其中,步骤104具体可以包括:步骤104-1、将所述查询语句映射为redis存储系统对应的key值;步骤104-2、判断所述redis存储系统中是否存在所述key值;步骤104-3、当所述redis存储系统中存在所述key值时,直接输出查询结果;步骤104-4、当所述redis存储系统中不存在所述key值时,从所述olap服务器中查询,并将查询结果集写入所述redis存储系统。步骤103具体可以包括:步骤103-1、利用k个独立的hash函数,将所述delta表中的记录集映射为m个bit位{1,……,m}的集合中,并将映射位置置为1;步骤103-2、判断basetable记录的k个hash函数值对应的位置是否均为1,当均为1时,过滤掉所述basetable记录。本发明实施例通过图形化界面输入查询语句和假设数据,将用户的图形化表述转换为查询语句以提交给olap服务器,同时将所述假设数据存储在差分delta表中;采用布隆过滤器,过滤掉基表basetable中被假设更新影响的记录集;将被过滤掉的记录与所述delta表中的插入记录和更新的记录合并,以生成what-if数据视图;根据所述查询语句,所述olap服务器基于所述what-if数据视图进行olap查询。本发明使用布隆过滤器与查询缓存机制的结合,使what-if分析性能显著提高,查询时间大大缩短。本发明实施例还提供了一种what-if查询处理系统,如图4,包括:输入模块410,用于通过图形化界面输入查询语句和假设数据,将用户的图形化表述转换为查询语句以提交给olap服务器,同时将所述假设数据存储在差分delta表中;过滤模块420,用于采用布隆过滤器,过滤掉基表basetable中被假设更新影响的记录集;视图生成模块430,用于将被过滤掉的记录与所述delta表中的插入记录和更新的记录合并,以生成what-if数据视图;查询模块440,用于根据所述查询语句,基于所述what-if数据视图进行olap查询。其中,所述查询模块440,包括:第一映射单元441,用于将所述查询语句映射为redis存储系统对应的key值;第一判断单元442,用于判断所述redis存储系统中是否存在所述key值;输出单元443,用于当所述redis存储系统中存在所述key值时,直接输出查询结果;缓存单元444,用于当所述redis存储系统中不存在所述key值时,从所述olap服务器中查询,并将查询结果集写入所述redis存储系统。所述过滤模块420,包括:第二映射单元421,用于利用k个独立的hash函数,将所述delta表中的记录集映射为m个bit位{1,……,m}的集合中,并将映射位置置为1;第二判断单元422,用于basetable记录的k个hash函数值对应的位置是否均为1,当均为1时,过滤掉所述basetable记录。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对
背景技术
:做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。以上对本发明进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1