物化视图选择和优化方法及装置与流程

文档序号:19859916发布日期:2020-02-08 00:07阅读:658来源:国知局
物化视图选择和优化方法及装置与流程

本发明涉及数据库和数据仓库技术领域,具体涉及海量数据环境下的物化视图选择和优化技术,特别涉及一种物化视图选择和优化方法及装置。



背景技术:

随着大数据时代的来临,从海量的数据中分析和挖掘出具有某类特征的数据变得越来越重要。对海量数据的分析和挖掘成为越来越多的企业决策分析和科学管理的必要手段。但是随着企业数据的逐渐增加,查询响应时间越来越长,物化视图(materializedview,mv)是一种有效的查询手段,它是通过预先计算和保存中间结果来提高数据访问时间的物理结构,能够大幅缩短查询响应时间。然而,使用物化视图需要额外的存储空间,并需要在数据更新时承担维护费用。物化视图的选择是在考虑查询性能的情况下,如何选择一个合适的视图集合进行物化,使得总成本最小。

物化视图选择问题是np(non-deterministicpolynomial,非确定多项式)问题。目前,物化视图的选择主要有:基于数据立方体的方法,基于mvpp(multi-viewprocessingplan,多视点处理)的方法和基于and-or图的方法。但由于用户查询的复杂性,这些方法在实际应用的过程中也存在一些不足,主要包括:计算复杂度较大,假设查询均匀分布,不能处理嵌套查询等。



技术实现要素:

为了解决现有技术中的上述问题,即为了解决在实际应用的过程中计算复杂度较大,假设查询均匀分布,不能处理嵌套查询等问题,本发明采用以下技术方案以解决上述问题:

第一方面,本申请提供了物化视图选择和优化方法,该方法包括如下步骤:

步骤1:获取与数据库相关的数据库信息,根据上述数据库信息从上述数据库中获得的带有聚集函数的分组数据以及各个上述分组数据的查询频率,并生成分组数据集合;其中,上述分组数据集合包括各分组数据的查询频率上述信息包括上述分组数据的字段列表、聚集函数的聚集操作表达式。

步骤2:分析上述数据库中的事实表和维度表,获得各上述分组数据的数据维度和数据粒度。

步骤3:分解上述分组数据集合中分组数据的非分布式聚集函数,生成分布式聚集函数。

步骤4:解析上述分组数据集合中的每组分组数据,生成上述分组数据的分组数据元,得到分组数据元集合。

步骤5:将上述分组数据集合中的具有相同的数据维度,以及相同的聚集操作表达式分组数据元确定为分组数据族。

步骤6:建立每个分组数据族所对应的统计二叉树模型,并基于上述统计二叉树模型建立面向物化视图优化的最小化综合线性规划模型,得到优化的物化视图集合。

步骤7:基于物化视图选择和优化得到的优化物化视图集合,重新构造上述分组数据集合中的每一组分组数据。

步骤8:依据与物化视图相关的事实表的变化,对上述物化视图的数据作同步变化。

在一些示例中,上述聚集操作表达式包括独立聚集操作表达式和可分性聚集操作表达式,上述独立聚集操作表达式是由所述数据库中原始数据字段所构成的表达式,上述可分性聚集操作表达式是由多个独立聚集操作表达式通过算数运算式构成的表达式。

在一些示例中,步骤3中生成分布式聚集函数,其方法为:分解上述非分布式聚集函数的聚集操作表达式,得到元聚集操作表达式;上述元聚集操作表达式为不包含聚集函数的表达式;依据上述非分布式聚集函数所分解出的元聚集操作表达式,生成分布式聚集函数。

在一些示例中,上述“分解上述非分布式聚集函数的聚集操作表达式,得到元聚集操作表达式”,其方法包括:

步骤31,判断上述聚集函数的中聚集操作表达式的类型;如果上述聚集操作表达式为独立聚集操作表达式,执行步骤32;如果所述聚集操作表达式为可分性聚集操作表达式,执行步骤33。

步骤32,判断所述聚集操作表达式中是否包含聚集函数,如果不包含执行步骤321,否则执行步骤322。

步骤321,所述聚集操作表达式为元聚集操作表达式;

步骤322,按聚集函数的嵌套顺序从最外层逐步向内分解,直至所述聚集函数的聚集操作表达式中不包含聚集函数为止所得的表达式为所述聚集操作表达式的元聚集操作表达式。

步骤33,分解所述聚集操作表达式为多个独立聚集操作表达式,并从所述多个独立聚集操作表达式中获得所述聚集操作表达式的全部元聚集操作表达式。

在一些示例中,上述步骤4中所述分组数据元集合,其生成方法包括:提取上述分组数据集合各分组数据的数据维度、数据粒度序列和聚集操作表达式;构建分组数据的全部分组数据元,生成面向分布式聚集函数的分组数据元集合;上述分组数据元中只包含一个元聚集操作表达式。

在一些示例中,上述步骤5中所述分组数据族,其构建方法包括:从各上述分组数据中选取的数据维度、元聚集操作表达式相同的分组数据;将具有相同数据维度、元聚集操作表达式的分组数据确定为同一分组数据族。

在一些示例中,上述步骤6中建立每个分组数据族所对应的统计二叉树模型,其方法包括:提取上述分组数据族中维度集合{d1,d2,...,dn};上述维度集合{d1,d2,...,dn}中任一维度di=[1,...,ni]的节点记为<x1,x2,...,xn>;当维度集合包含的维度的数量为n时:节点<x1,x2,...,xn>记为节点<<x1,x2,...,xn-1>,xn>;xn>1时,右子枝节点<x1,x2,...,xn>r=<x1,x2,...,xn-1>;当xn=1时,右子枝节点<x1,x2,...,xn>r不存在;节点<x1,x2,...,xn>的左子枝节点<x1,x2,...,xn>l=<<x1,x2,...,xn-1>r,xn>;由各上述分组数据的统计二叉树图存在的子枝节点构建上述分组数据族的统计二叉树图。

在一些示例中,上述步骤6中基于上述统计二叉树模型建立面向物化视图优化的最小化综合线性规划模型,其方法为:建立每个分组数据族fi所对应的统计二叉树图gi;基于该统计二叉树图gi建立面向该统计家族的最小化综合查询代价的线性规划模型,该模型可表示为:约束条件为:d(qi,mvi)∈z+,mvi∈nodes(g),其中,设图gi中相邻节点的有向边长度为1,为分组数据族fi中的任意一个分组数据元qi的查询频率,mvi为分组数据族fi的物化视图,d(qi,mvi)为qi与物化视图mvi在统计二叉树图gi中的有向通路的长度,d(qi,mvi)为有限正整数。

在一些示例中,上述步骤7包括:以上述分组数据族的各上述物化视图mvi作为唯一数据来源重构上述分组数据族的任意一个分组数据元;以目标分组数据集合的元聚集操作表达式为数据源重构上述分组数据族的任意一个分组数据。

第二方面,本申请提供了一种存储装置,其中存储有多条程序,上述程序适于由处理器加载并执行以实现上述第一方面所述的物化视图选择和优化方法。

第三方面,本申请提供了一种处理装置,包括处理器,适于执行各条程序;以及存储设备,适于存储多条程序;上述程序适于由处理器加载并执行以实现上述第一方面所述的物化视图选择和优化方法。

本申请提供的物化视图选择和优化方法和处理设备,通过数据库的信息获得分组数据,根据数据库的事实表和维度表确定出各分组数据的数据维度和数据粒度,解析分组数据得到分组数据元集合,将具有相同的数据维度,以及相同的聚集操作表达式的分组数据元确定为分组数据族,建立分组数族的统计二叉树模型,由此,建立物化视图,依据与物化视图相关的事实表的变化,更新物化视图。实现了物化视图选择和优化中所确定的每一个物化视图都是能够响应所对应家族的全部分组数据的最粗粒度的聚集操作,提高了分组数据的快速响应和物化视图的最小化。

附图说明

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的物化视图选择和优化方法的一个实施例的流程图;

图3为本申请提供的northwind数据库结构图;

图4为本申请提供的northwind数据库统计示意图。

具体实施方式

下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的基于统计二叉树图和线性规划模型的物化视图选择和优化方法或物化视图选择和优化处理设备的实施例的示例性系统架构。

如图1所示,系统架构可以包括数据处理器101,网络102和数据存储单元103。其中,网络102用以在数据处理器101和数据存储单元103之间,提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

数据处理器101可以通过网络102与数据存储单元103之间进行信息交互,以接收或发送信息等。数据处理器之间可以通过网络102进行信息交互。

数据处理器101可以是具有显示屏并支持网络通信的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机以及由多个计算机构成的计算机处理系统等等。需要说明的是,数据处理器可以包括存储数据的单元,以及,在数据处理器上装设有用于数据处理的软件或应用。上述应用可以是,例如,从数据库中所存储的数据中统计出某类产品的销售数据、供应商数据、客户数据等。

数据存储单元103可以提供数据的存储,可以是数据库服务器,还可以是各类具有数据存储及运算功能的处理器。与其通信连接的数据处理器可以根据权限对上述数据存储单元103进行查询、修改等操作。

需要说明的是,本申请实施例所提供的物化视图选择和优化方法一般由数据处理器101执行,相应地,物化视图选择和优化处理设备一般设置于数据处理器101中。

应该理解,图1中的数据处理器、网络和数据存储单元的数目仅仅是示意性的。根据实现需要,可以具有任意数目的数据处理器、网络和数据存储单元。

继续参考图2,图2示出了根据本申请的物化视图选择和优化方法的一个实施例的流程。该物化视图选择和优化方法,包括以下步骤:

步骤1:获取与数据库相关的数据库信息,根据上述数据库信息从上述数据库中获得的带有聚集函数的分组数据以及各个上述分组数据的查询频率,并生成分组数据集合,其中上述分组数据集合包括各分组数据的查询频率。

在本实施例中,物化视图选择和优化方法运行于其上的电子设备(例如图1所示的数据处理器)首先,可以通过有线连接方式或者无线连接方式从数据存储单元获得与数据库相关的信息,或直接从数据库获得与数据库相关的数据库信息。根据上述数据库信息从上述信息所指示的数据库中获得的带有聚集函数的分组数据以及各个上述分组数据的查询频率。这里,上述分组数据为数据库查询中执行统计操作所对应生成的数据集合,其中,统计操作是带有聚集函数的聚集操作。上述信息包括分组数据的字段列表、聚集函数的聚集操作表达式,以及上述数据库的事实表和维度表。上述事实表用来描述和存储多维数据的度量值和各个维的码值,上述维度表用来描述维或维度的信息,是围绕事实表建立的较小的表。上述聚集操作表达式是面向一定的数据表达式采用某个或某些聚集函数进行聚集操作。

上述聚集操作表达式包括:独立聚集操作表达式和可分性聚集操作表达式,上述独立聚集操作表达式是由数据库中原始数据字段所构成的数据表达式,上述可分性聚集操作表达式是由多个独立聚集操作表达式通过算数运算式构成的表达式。其中,上述独立聚集操作表达式可以表示为:ao=af(fields),其中,af∈functions,它表示对由数据库中原始数据字段fields所构成的数据表达式按af函数聚集,如sum(t1.field1+t2.field2),sum(t1.field1+min(t2.field2))。上述可分性聚集操作表达式可以表示为:其中,代表+、—、*、/等算术运算,如,sum(field1)/count(*)。

步骤2:分析上述数据库中的事实表和维度表,获得各上述分组数据的数据维度和数据粒度;

本实施例中,上述数据维度的数据层次结构是维层级,可以表示成粒度从粗到细的有序集合,d={1,2...,n},数据中全部的数据维度的有序集合记为sd={di|di={1,...,ni},i=1,...,m}。在数据维度的有序集合中,数据维度按以下规则排列顺序:层级越多即ni越大,di越排在前面;若层级相同,则按照维度的名称字母顺序递增排列。

分析数据库中的事实表和维度表从而获得数据的维度和粒度。作为示例,如图3和图4所示,使用northwind数据库分析图4所示列表的数据维度,其中,northwind数据库为示例数据库,可以作为演示使用。

通过northwind数据库的分析,该数据库包含六个维度,按照维度的排序规则将维度排序如下:

时间维度:{year,season,month,day};

d1=dtime=[1,2,3,4]

雇员维度(employees):{region,territory,employee}

d2=demployee=[1,2,3]

客户维度(customers):{customertype,customer}

d3=dcustomer=[1,2]

产品维度:{category,product}

d4=dproduct=[1,2]

运货商维度:{shipper}

d5=dshipper=[1]

供应商维度:{supplier}

d6=dsupplier=[1]

步骤3:分解上述分组数据集合中分组数据的非分布式聚集函数,生成分布式聚集函数。

本实施例中,根据分组数据的描述,将分组数据的聚集函数表达式进行分解,生成分布式聚集函数。上述聚集操作表达式包括独立聚集操作表达式和可分性聚集操作表达式,其中,独立聚集操作表达式由数据库中原始数据字段所构成的数据表达式,可分性聚集操作表达式通过算数运算表述的多个独立聚集操作表达式上述分组数据的描述,可以是使用伪sql语言进行描述,例如:

selectshowfields,ao

fromt1,t2,...,tk

whered1[x1]=v1,d2[x2]=v2,...,dn[xn]=vn

groupbyd1[x1],d2[x2],...,dn[xn]

其中,showfields表示分组数据q要输出的字段列表,ao表示分组数据q的聚集操作表达式,t1,t2,...,tk表示执行分组数据q所需要的事实表,d1[x1]=v1,d2[x2]=v2,...,dn[xn]=vn表示分组数据q在相对应的维层级上的具体取值,d1[x1],d2[x2],...,dn[xn]表示对应维度和维层级分组。分组数据q可形式化描述为:

即:{d1,d2,...,dn|di=[1,...,ni]}表示q的筛选条件中维度的集合,<x1,x2,...,xn|xi∈di>表示维度上对应的层级或粒度(出现在groupby子句),<v1,v2,...,vn>表示在维度和粒度上的具体取值(出现在where子句中),ao表示q中的聚集操作表达式(出现在select子句中)。

通过将分组数据集合(即qf0={(q0i,f0i)|i=1,2,...,n0}中的非分布式的聚集函数(即avg、stddev和variance函数)改造成分布式的聚集函数(sum、max、min和count函数),得到新的分组数据集合qf1={(q1i,f1i)|i=1,2,...,n1}。

上述分解非分布式聚集函数的聚集操作表达式,得到元聚集操作表达式,包括:分解上述非分布式聚集函数的聚集操作表达式,得到元聚集操作表达式,上述元聚集操作表达式为不包含聚集函数的表达式;依据上述非分布式聚集函数所分解出的元聚集操作表达式,生成分布式聚集函数。

在一些可选的实施方式中,上述“分解所述非分布式聚集函数的聚集操作表达式,得到元聚集操作表达式”,其方法为包括:

步骤31,判断所述聚集函数的中聚集操作表达式的类型;如果所述聚集操作表达式为独立聚集操作表达式,执行步骤32;如果所述聚集操作表达式为可分性聚集操作表达式,执行步骤33。

步骤32,判断上述聚集操作表达式中是否包含聚集函数,如果不包含执行步骤321,否则执行步骤322;

步骤321上述聚集操作表达式为元聚集操作表达式;

步骤322,按聚集函数的嵌套顺序从最外层逐步向内分解,直至上述聚集函数的聚集操作表达式中不包含聚集函数为止,所得的表达式为上述聚集操作表达式的元聚集操作表达式。

步骤33,分解上述聚集操作表达式为多个独立聚集操作表达式,并从上述多个独立聚集操作表达式中获得上述聚集操作表达式的全部元聚集操作表达式。

作为示例,聚集操作表达式ao可以通过如下的规则递归分解成一个或多个元聚集操作表达式:当ao为独立聚集操作表达式且其内部的数据表达式中不包含聚集函数时,该聚集操作表达式为元聚集操作表达式。如,sum(t1.field1+t2.field2);当ao为独立聚集操作表达式但其内部的数据表达式中包含聚集函数时,按聚集函数的嵌套顺序从最外层逐步向内分解,直至内层的独立聚集操作表达式afin(fieldsin)的内部数据表达式中不包含聚集函数为止,所得到的afin(fieldsin)为该聚集操作表达式的元聚集操作表达式。如,sum(max(t1.field1)+min(t2.field2))的元聚集操作表达式为max(t1.field1)和min(t2.field2);当ao为可分性聚集操作表达式时,即:ao可分解为n个独立聚集操作表达式,即ao1=af1(fields1),…,aon=afn(fieldsn);再将上述所得到的n个独立聚集操作表达式按照独立聚集操作表达式的元聚集操作表达式处理规则进一步分析,得到可分性聚集操作表达式的全部元聚集操作表达式。如,ao=sum(field1)/count(*)分解为ao1=sum(field1)和ao2count(*)。

上述将分组数据集合中包含的非分布式聚集函数(即avg、stddev和variance函数)的分组数据分解为由分布式聚集函数(即sum,max,min,count函数)构成的分组数据,如,avg=sumcount,即若某分组数据的聚集操作表达式中包含avg函数,则可将该分组数据分解成sum和count聚集操作。改造后的分组数据与分组数据计具有相同的统计频率。即:原始的分组数据集合qf0={(q0i,f0i)|i=1,2,...,n0}演变为qf1={(q1i,f1i)|i=1,2,...,n1}。

步骤4:解析上述分组数据集合中的每组分组数据,生成上述分组数据的分组数据元,得到分组数据元集合。

在识别出数据维度和粒度的基础上通过对分组数据集合qf1={(q1i,f1i)|i=1,2,...,n1}中的每个分组数据进行特征分析,获得每个分组数据对应的分组数据元,得到分组数据元集合mq={(qi,fi)|i=1,2,...,n}。

上述对于识别出数据维度和粒度的方法包括:

对于qf1={(q1i,f1i)|i=1,2,...,n1}中的每个分组数据,列出该分组数据的维集合、维粒度序列和聚集操作表达式;

对于任意分组数据分析其聚集操作表达式,得到其全部元聚集操作表达式{mao1,...,maom};

利用元聚集操作表达式,构造目标分组数据q的全部分组数据元,分组数据元中只包含一个元聚集操作表达式,且忽略筛选条件的具体取值,可由如下形式表示:

需要说明的是,任何一个分组数据元mqi*与分组数据q具有相同的查询频率。

依据上述过程分组数据集合中的每一分组数据构建分组数据的分组数据元,得到面向分组数据集合qf1={(q1i,f1i)|i=1,2,...,n1}的全部分组数据元集合metaqf={(mqi,fi)|i=1,2,...,n}。

步骤5:将上述分组数据集合中的具有相同的数据维度,以及相同的聚集操作表达式分组数据元确定为分组数据族。

本实施例中根据分组数据集合中的数据维度和聚集函数的聚集操作,确定出分组数据族,可以包括如下步骤:从各上述分组数据中选取数据维度、元聚集操作表达式相同的分组数据;将具有相同数据维度、元聚集操作表达式的分组数据确定为同一分组数据族。

上述分组数据族的划分,是根据上述分组数据集合的维集合和元聚集操作表达式是否相同,将分组数据元集合划分为不同的分组数据族fs={f1,f2,...,fk},fi={cqi1,...,cqij,...,cqim}(cqij∈metaqf),同一分组数据族中的所有分组数据均具有相同的维集合{d1,d2,...,dn}和聚集操作表达式ao。一个分组数据族可以描述为:

其中,{d1,d2,...,dn}表示该分组数据族的维集合,aoi表示该分组数据族的元聚集操作表达式,[xj1,xj2,...,xjn]表示该分组数据族的第i个分组数据元在其各个维度上的层级或粒度。

步骤6:建立每个分组数据族所对应的统计二叉树模型,并基于上述统计二叉树模型建立面向物化视图优化的最小化综合线性规划模型,得到优化的物化视图集合。

本实施例中,上述统计二叉树模型表示随着维层级的变化由细粒度向粗粒度聚集的演变的非循环有向图。上述统计二叉树图由维度集合{d1,d2,...,dn}(di=[1,...,ni])决定,其任意一个节点记为<x1,x2,...,xn>,表示该节点在维度di上的维层级为xi,因此,统计二叉树图{d1,d2,...,dn}对应的最细粒度的维层级为<n1,n2,...,nn>,最粗粒度的维层级为<1,1,...,1>。上述建立每个分组数据族所对应的统计二叉树模型,包括:判断上述分组数据族的维度数据的维度的数量;根据各分组数据的维度数据确定上述分组数据的统计二叉树图存在的子枝节点;由各上述分组数据的统计二叉树图存在的子枝节点构建上述分组数据族的统计二叉树图。

上述统计二叉树图是对该图中的每个节点采用二叉树的方法构建有向边形成的,具体为:

当维集合包含的维的数量为1时:节点<xi>可能只存在右子枝节点<xi>r,当xi>1时,<xi>r=<xi-1>;当xi=1时,节点<xi>r不存在。

当维集合包含的维的数量为2时:<xi,xj>可能同时存在右子枝节点<xi,xj>r和左子枝节点<xi,xj>l

当xj>1时,右子枝节点<xi,xj>r=<xi,xj-1>;当xj=1时,右子枝节点<xi,xj>r不存在;当xi>1时,左子枝节点<xi,xj>l=<xi-1,xj>;当xi=1时,左子枝节点<xi,xj>l不存在。

当维集合包含的维的数量为n时:节点<x1,x2,...,xn>可能同时存在右子枝节点<x1,x2,...,xn>r和左子枝节点<x1,x2,...,xn>l

当xn>1时,右子枝节点<x1,x2,...,xn>r=<x1,x2,...,xn-1>;当xn=1时,右子枝节点<x1,x2,...,xn>r不存在;左子枝节点按<x1,x2,...,xn>l=<<x1,x2,...,xn-1>r,xn>计算。

在一些示例中,通过建立每个统计家族fi所对应的统计二叉树图gi,并基于该统计二叉树图gi建立面向该统计家族的最小化综合查询代价的线性规划模型,该模型可表示为:

约束条件为:

d(qi,mvi)∈z+

mvi∈nodes(g)

上式中,设图gi中相邻节点的有向边长度为1,为分组数据族fi中的任意一个分组数据元qi的查询频率,mvi为分组数据族fi的物化视图,d(qi,mvi)为qi与物化视图mvi在统计二叉树图gi中的有向通路的长度,d(qi,mvi)为有限正整数。

表示分组数据族fi的物化视图mvi与分组数据族fi中的所有分组数据元之间都存在有向通路,且综合查询代价是最小的。

对于给定的分组数据族fi,该线性规划模型存在最优解mvi,即统计该分组数据族fi的物化视图为mvi。该分组数据族fi的任意一个分组数据元qi可以在mvi上重新构造,即:qi不再依赖于数据表进行统计,而是将mvi作为唯一数据来源进行统计。

时,有:

对所有的分组数据族f={f1,f2,...,fn}进行分析,找出每个分组数据族fi对应的物化视图mvi,得到物化视图集合mv={mv1,mv2,...,mvn}。

在本发明的一个示例中,对northwind数据库进行物化视图选择过程如下(northwind数据库包含的分组数据,如图4所示):

分组数据族p1:其聚集操作方式为count(orderid);维度集合为{d1},分组数据族p1共有三个伴随分组数据元,分别是:mq1*:月订单销售量统计,其维粒度序列为<3>;mq3*:季订单销售量统计,其维粒度序列为<2>;mq5*:年订单销售量统计,其维粒度序列为<1>。

因此,分组数据族p1对应的物化视图为:

分组数据族p2:其聚集操作方式为,sum([unitprice]*[quantity]*[1-discount];维度集合为{d1},分组数据族p2共有三个伴随分组数据元,分别是:mq2*:月订单销售额统计,其维粒度序列为<3>;mq4*:季订单销售额统计,其维粒度序列为<2>;mq6*:年订单销售额统计,其维粒度序列为<1>。

因此,家族p2对应的物化视图为:

在mv(p1)和mv(p2)基础上,以分组数据“q3年订单销售量和销售额”为例,可以基于mv(p1)和mv(p2)构造目标统计,其sql语句如下:“select年,sum(销售量),sum(销售额)frommv(p1),mv(p2)wheremv(p1).年=mv(p2).年groupby年”。

分组数据族p3:其聚集操作方式为sum(quantity);维度集合为{d1,d4},分组数据族p3共有四个分组数据元统计,分别是:mq7*:每种具体产品的季销售量统计,其维粒度序列为<2,2>;mq8*:每项大类产品的季销售量统计,其维粒度序列为<2,1>;mq9*:每种具体产品的年销售量统计,其维粒度序列为<1,2>;mq10:每项大类产品的年销售量统计,其维粒度序列为<1,1>。

因此,家族p3对应的物化视图为:

分组数据族p4:其聚集操作方式为sum([unitprice]*[quantity]*[1-discount];维度集合为{d1,d3},分组数据族p4共有两个伴随分组数据元,分别是:mq11*:每类客户年消费额统计,其维粒度序列为<1,1>;mq12*:每位客户年消费额统计,其维粒度序列为<1,2>。

因此,分组数据族p4对应的物化视图为:

分组数据族p5:其聚集操作方式为sum([unitprice]*[quantity]*[1-discount];维度集合为{d1,d2},家族p5共有两个伴随元统计,mq13*:每位员工季销售额统计,其维粒度序列为<2,3>;mq14*:每位员工年销售额统计,其维粒度序列为<1,3>。

因此,分组数据族p5对应的物化视图为:

分组数据族p6:其聚集操作方式为sum(quantity);维度集合为{d1,d6},分组数据族p6只有一个伴随分组数据元,mq15*:供应商年供货量统计,其维粒度序列为<1,1>。

因此,家族p6对应的物化视图为:

步骤7:基于物化视图选择和优化得到的优化物化视图集合,重新构造上述分组数据集合中的每一组分组数据。

新构造分组数据集合中的每一个分组数据,可以通过两个步骤实现:

(1)对于分组数据族fi的任意一个分组数据元qi将mvi作为唯一数据来源重构sql语句;

(2)对于目标分组数据集合qf1={(q1i,f1i)|i=1,2,...,n1}中的任意一个q1i根据其聚集操作表达式以及其元聚集操作表达式的分解情况,以分组数据元qi为数据源重构sql语句。

步骤8:依据与物化视图相关的事实表的变化,对上述物化视图的数据作同步变化。

物化视图集合更新采用及时数据更新策略,即:与任何一个物化视图相关的事实表发生变化时(数据的新增、删除和修改),对应的物化视图采用触发器、存储过程或应用程序同步更新物化视图数据。

作为另一方面,本申请还提供了一种存储装置,其中存储有多条程序,上述程序适于由处理器加载并执行以实现上述物化视图的选择和优化方法。

另一方面,本申请还提供了一种处理装置,包括处理器和存储设备。其中,处理器,适于执行各条程序;存储设备,适于存储多条程序。上述程序适于由处理器加载并执行以实现上述物化视图的选择和优化方法。。

至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1