技术领域
[0001] 本
发明属于
数据仓库技术领域,具体涉及到一种基于自适应
遗传算法的物化视图选择方法。
背景技术
[0002] 借助数据仓库及在线联机分析处理技术对数据进行全面、科学的管理和多
角度、深入的分析和挖掘己成为当今企业决策分析的必要手段。通过OLAP查询可以快速发现数据背后隐藏的信息以用来辅助决策,但是OLAP查询在执行过程中往往需要对大量的数据进行选择、连接及投影操作,这是一个非常耗时的过程。为了实现快速联机分析处理操作,可以引入物化视图来解决这个问题。
[0003] 通过物化视图,数据仓库的性能可以成倍提高,它也构成了实现OLAP在线分析的重要手段。不过物化视图的引入又会带来新的问题,一方面保存物化视图需要额外的存储空间,另一方面物化视图的维护操作也成为了一个亟待解决的问题。特别是对包含海量数据的物化视图,随着原始数据的变化,物化视图中的汇总信息会与原始数据出现不一致,导致物化视图失效,此时物化视图就需要根据原始数据的变化,刷新其数据,保持与原始数据的一致性,对于基于海量数据的物化视图,维护开销是非常大的。物化视图选择问题就是如何选择合适的视图进行物化,最小化其总开销。
[0004] 物化视图选择问题已经被证明为NP完全问题,如果候选物化视图的个数为n,那么总共有2n种选择方案。采用枚举算法显然可以求得最优解,不过该算法开销太大,采用贪心算法求解往往得到局部最优解,而遗传算法适用于求解NP完全问题,经过有限次数的
迭代可以获得问题的近似最优解甚至是最优解。
发明内容
[0005] 本发明针对
现有技术的不足,提供了一种基于自适应遗传算法的物化视图选择方法。
[0006] 本发明一种基于自适应遗传算法的物化视图选择方法,具体包括以下步骤:
[0007] 步骤(1).输入带视图大小及
访问频率属性的基于同一个事实表及其维表的候选物化视图集,根据候选物化视图SQL定义语句中group-by子句所包含的分组属性,按照映射规则将其映射到多维数据格中的
节点;
[0008] 映射规则定义如下:SQL定义语句中包含分组属性最多的视图对应于多维数据格中的根节点,对于候选物化视图集中的任意两个视图,两个视图分别设为a和b,如果a视图SQL定义语句中包含的分组属性是b视图SQL定义语句中包含的分组属性的真子集,那么a视图所对应的节点是b视图所对应节点的
子节点,多维数据格模型中,除根节点没有
父节点外,其它的节点有且仅有一个直接父节点;
[0009] 步骤(2).计算多维数据格模型下的物化视图的总开销;
[0010] 设Q为多维数据格模型中所有待物化的候选视图集,q为Q中的一个视图,fq(q)表示q所对应的查询频率,M为物化视图集,QueryCost(Q,M)为物化视图的查询开销,MaintenanceCost(M)为物化视图的维护开销,Storage(M)为物化视图的存储开销,TotalCost(Q,M)为物化视图的总开销,avgq∈Q{fq(q)}为视图查询频率的均值,α为比例系数,TotalCost(Q,M)=QueryCost(Q,M)+α×(MaintenanceCost(M)+Storage(M)),其中α=0.5×avgq∈Q{fq(q)}。
[0011] 步骤(3).利用二进制编码将基于多维数据格模型的候选物化视图集转换成遗传算法可以处理的0-1整型数组,并将步骤(2)所得的物化视图总开销的倒数作为遗传算法中个体适应度的大小;
[0012] 多维数据格模型中节点的编号对应于数组的索引,数组元素的值决定是否对视图进行物化,数组元素为1表示该元素索引所对应节点的视图需要物化,数组元素为0表示该元素索引所对应节点的视图不需要物化。
[0013] 步骤(4).设定初始种群规模n、最大迭代次数max_number,根据步骤(3)所得的0-1整型数组,利用随机算法产生n个个体作为初始种群;
[0014] 步骤(5).进行选择操作,通过筛选保留种群中适应度高的个体,淘汰种群中适应度低的个体;设Population为种群,k为种群中的个体,Fit(x)为个体x所对应的适应度,则个体x被选择进入下一代的概率ps的计算函数如下所示:
[0015]
[0016] 步骤(6).计算交叉概率pc,为种群中的每个个体随机生成一个0到1之间的判定值flag_c,如果flag_c的值小于等于pc,则该个体要进行两点交叉操作,否则该个体不用进行两点交叉操作,pc的计算公式如下所示:
[0017]
[0018] Fitmax为种群中个体的最大适应度,Fitmin为种群中个体的最小适应度,Fitavg为种群中个体的平均适应度;
[0019] 两点交叉操作的过程如下:
[0020] 为两个要进行交叉操作的个体随机设置两个不同的交叉点,两个交叉点分别设为point1和point2,将两个个体point1和point2之间的基因码进行交换产生新的个体。
[0021] 步骤(7).计算变异概率pm,为种群中的每个个体随机生成一个0到1之间的判定值flag_m,如果flag_m的值小于等于pm,则该个体要进行变异操作,否则该个体不用进行变异操作,pm的计算公式如下所示:
[0022]
[0023] 变异操作的过程如下:
[0024] 为要进行变异操作的个体随机确定一个基因位,如果基因位上元素的值为0则将其变为1,如果基因位上元素的值为1则将其变为0。
[0025] 步骤(8).重复步骤(5)、(6)、(7),至迭代次数达到步骤(4)所设定的最大迭代次数max_number,最终代种群中适应度最大的个体就是要求的最优解,将其解码后输出就是要选择进行物化的视图集。
[0026] 本发明提出的方法根据候选物化视图集构建多维数据格模型,综合考虑物化视图的查询、维护及存储开销,给出确切的度量函数量化总开销,并将其作为遗传算法中判断个体适应度大小的依据,确定合理有效的自适应调整交叉概率及变异概率的机制,使得遗传算法在求解物化视图选择问题时,搜索速度快且不会过早收敛。在求解大规模物化视图选择问题时,与没有采用自适应机制的遗传算法及采用贪心策略的传统算法相比,采用本发明所述的方法所得的结果较优,可以选择合适的视图进行物化,最小化物化视图的总开销。
附图说明
[0027] 图1基于自适应遗传算法的物化视图选择方法的步骤图;
[0028] 图2多维数据格模型图;
具体实施方式
[0030] 本发明所提供的一种基于自适应遗传算法的物化视图选择方法的具体实施方式主要分3步(如图1所示):
[0031] (1)输入带视图大小及访问频率属性的基于同一个事实表及其维表的候选物化视图集,根据候选物化视图SQL定义语句中group-by子句所包含的分组属性,按照映射规则将其映射到多维数据格中的节点,构建多维数据格模型(如图2所示)并定义其下物化视图的开销模型;(2)利用二进制编码将基于多维数据格模型的候选物化视图集转换成遗传算法可以处理的0-1整型数组,节点的编号对应于数组的索引,数组元素的值决定是否对视图进行物化;(3)利用自适应调整交叉概率和变异概率的机制来改进遗传算法,并利用改进的遗传算法求解物化视图选择问题。
[0032] 为叙述方便,定义相关符号如下:
[0033] Q:多维数据格模型中所有待物化的候选视图集。
[0034] M:物化视图集。
[0035] q:Q中的一个视图查询。
[0036] fq(q):q所对应的查询频率。
[0037] qt(q,M):在物化视图集M已经存在的情况下,q查询所需的查询开销。
[0038] fm(v):物化视图v的维护频率。
[0039] mt(v,M):在物化视图集M存在的情况下,物化视图v所需的维护开销。
[0040] s(v):物化视图v所对应的存储开销。
[0041] QueryCost(Q,M):在Q和M确定的情况下,物化视图的查询开销。
[0042] MaintenanceCost(M):在M确定的情况下,物化视图的维护开销。
[0043] StorageCost(M):在M确定的情况下,物化视图的存储开销。
[0044] TotalCost(Q,M):在Q和M确定的情况下,物化视图的总开销。
[0045] α:比例系数,确定物化视图的维护开销在总开销中的比重。
[0046] β:比例系数,确定物化视图的存储开销在总开销中的比重。
[0047] Fit(x):个体x的适应度。
[0048] ps:选择概率。
[0049] pc:交叉概率。
[0050] pm:变异概率。
[0051] Fitmax:整个种群中个体适应度的最大值。
[0052] Fitmin:整个种群中个体适应度的最小值。
[0053] Fitavg:整个种群中个体适应度的平均值。
[0054] (1)构建多维数据格模型及相应的开销模型
[0055] 输入带视图大小及访问频率属性的候选物化视图集,根据候选物化视图SQL定义语句中group-by子句所包含的分组属性与多维数据格模型中节点的映射规则,构建相应的多维数据格模型。在多维数据格模型已经建立的条件下,物化视图的总开销度量函数定义如下:
[0056] TotalCost(Q,M)=QueryCost(Q,M)+α×(MaintenanceCost(M)+StorageCost(M))[0057] 其中比例系数α的定义如下:
[0058] α=0.5×avgq∈Q{fq(q)}
[0059] 其中查询开销QueryCost(Q,M)的度量函数定义如下:
[0060]
[0061] 其中维护开销MaintenanceCost(M)的度量函数定义如下:
[0062]
[0063] 其中存储开销StorageCost(M)的度量函数定义如下:
[0064]
[0065] (2)问题转换
[0066] 利用二进制编码将基于多维数据格模型的候选物化视图集转换成遗传算法可以处理的0-1整型数组,节点的编号对应于数组的索引,数组元素的值决定是否对视图进行物化,数组元素为1表示该元素索引所对应节点的视图需要物化,数组元素为0表示该元素索引所对应节点的视图不需要物化。
[0067] 在遗传算法求解过程中,个体的适应度越大,其进入下一代的机会就越大,当种群循环迭代终止时,此时种群中适应度最大的个体就是所求的最优解。为了能使遗传算法求解物化视图选择问题,这里将物化视图总开销的倒数作为遗传算法中个体适应度的大小,物化视图总开销越小,适应度越大,这样遗传算法迭代结束时,适应度最大的个体所对应的物化视图的总开销最小。
[0068] (3)自适应遗传算法求解物化视图选择问题
[0069] 设定初始种群规模n、最大迭代次数max_number,根据物化视图集转换后的0-1整型数组,利用随机算法产生n个个体作为初始种群;
[0070] 进行选择操作,通过筛选保留种群中适应度高的个体,淘汰种群中适应度低的个体;设Population为种群,k为种群中的个体,则个体x被选择进入下一代的概率ps的计算函数如下所示:
[0071]
[0072] 计算交叉概率pc,为种群中的每个个体随机生成一个0到1之间的判定值flag_c,如果flag_c的值小于等于pc,则该个体要进行两点交叉操作,否则该个体不用进行两点交叉操作,pc的计算公式如下所示:
[0073]
[0074] 两点交叉操作的过程如下:
[0075] 为两个要进行交叉操作的个体随机设置两个不同的交叉点,两个交叉点分别设为point1和point2,将两个个体point1和point2之间的基因码进行交换产生新的个体。
[0076] 计算变异概率pm,为种群中的每个个体随机生成一个0到1之间的判定值flag_m,如果flag_m的值小于等于pm,则该个体要进行变异操作,否则该个体不用进行变异操作,pm的计算公式如下所示:
[0077]
[0078] 变异操作的过程如下:
[0079] 为要进行变异操作的个体随机确定一个基因位,如果基因位上元素的值为0则将其变为1,如果基因位上元素的值为1则将其变为0。
[0080] 重复进行选择操作,计算交叉概率pc,交叉操作,计算变异概率pm,变异操作,至迭代次数达到最大迭代次数max_number,最终代种群中适应度最大的个体就是要求的最优解,将其解码后输出就是要选择进行物化的视图集。
[0081] 以上算法的具体实现过程如图3所示。
[0082] 本发明所提供的一种基于自适应遗传算法的物化视图选择方法由四个功能模
块组成,它们分别是构建多维数据格模块、度量总开销模块、问题转换模块以及自适应遗传算法求解模块。
[0083] 构建多维数据格模块根据候选物化视图SQL定义语句中group-by子句所包含的分组属性,按照映射规则将带视图大小及访问频率属性的候选物化视图集映射到多维数据格中的节点。
[0084] 度量总开销模块根据实际情况的需要,确定物化视图的查询开销、维护开销以及存储开销在总开销中的比重,计算总开销的度量值。
[0085] 问题转换模块利用二进制编码将基于多维数据格模型的候选物化视图集转换成遗传算法可以处理的0-1整型数组,并将度量总开销模块所得的物化视图总开销的倒数作为遗传算法中个体适应度的大小,节点的编号对应于数组的索引,数组元素的值决定是否对视图进行物化,数组元素为1表示该元素索引所对应节点的视图需要物化,数组元素为0表示该元素索引所对应节点的视图不需要物化。
[0086] 自适应遗传算法求解模块利用自适应调整交叉概率和变异概率的机制来改进遗传算法,并利用改进后的遗传算法求解问题转换后的物化视图选择问题。
[0087] 本发明可用于数据仓库中物化视图的选择,选择合适的视图进行物化,使得物化视图的总开销最小化。