发明名称 一种提高数据仓库查询性能的方法
摘要 本发明涉及一种提高数据仓库查询性能的方法,首先将数据仓库中的数据按照所存储的逻辑关系分为事实表和维度表,然后根据维度表数据对事实表中的数据进行分组汇总,将每个分组生成为一个视图,将生成的所有视图添加到候选视图集合中;然后使用基于信息素扩散的双种蚁群算法,模拟自然界中不同种群的蚂蚁群觅食的过程,在候选视图集合中根据查询频率来寻找数据之间的内在联系,选择生成物化视图,在有限的存储空间内将需要进行表间连接或聚集的查询操作的结果进行预先计算和保存,从而提高数据仓库的查询性能。
申请公布号 CN102156725A 申请公布日期 2011.08.17
申请号 CN201110081485.8 申请日期 2011.04.01
申请人 中国测绘科学研究院 发明人 沈晶;赵荣;刘纪平
分类号 G06F17/30(2006.01)I;G06N3/00(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京市盈科律师事务所 11344 代理人 刘立国
主权项 1.一种提高数据仓库查询性能的方法,首先将数据仓库中的数据按照所存储的逻辑关系分为事实表和维度表,然后根据维度表数据对事实表中的数据进行分组汇总,将每个分组生成为一个视图,将生成的所有视图添加到候选视图集合中;然后使用基于信息素扩散的双种蚁群算法,模拟自然界中不同种群的蚂蚁群觅食的过程,在候选视图集合中根据查询频率来寻找数据之间的内在联系,选择生成物化视图,在有限的存储空间内将需要进行表间连接或聚集的查询操作的结果进行预先计算和保存,从而提高数据仓库的查询性能;其具体步骤为:(A)将候选视图集合中的视图与蚂蚁行进路径上的结点进行对应;(B)在给定存储空间K<sub>max</sub>限制下,蚂蚁不断的从候选视图集合中选择一个未被选中的合适的视图放到已选视图集中,直到再放入任何一个未被选中的视图将导致整个已选视图集大小超出存储空间限制;(C)蚂蚁按照状态转移规则进行视图结点选择,同时通过信息素更新策略、信息素扩散规则、信息通信规则对视图结点选择进行更新;(D)迭代计算步骤(C),对两个种群的蚂蚁找到的最优解进行比较,选出其中较优的解作为迭代最优解,将已选视图集中与该迭代最优解对应的视图组作为物化视图进行存储;步骤(C)中的状态转移规则为:假设蚁群中蚂蚁的数量为n,初始信息素τ<sub>ij</sub>=C(C为常数);在某一时刻,蚂蚁k从视图i选择下一个视图j的时候,根据下述规则选择。<img file="FSA00000464625400011.GIF" wi="1475" he="195" />式(1)中,q是[0,1]区间均匀分布的随机数;q<sub>0</sub>∈[0,1]是一个参数;τ<sub>ij</sub>表示i到j边上的信息素浓度,η<sub>ij</sub>表示i到j边的能见度,令η<sub>ij</sub>=f<sub>j</sub>/S<sub>j</sub>,其中f<sub>j</sub>为视图j的查询概率,S<sub>j</sub>为视图j所占的存储空间,即启发蚂蚁选择那些单位空间查询频率高的视图来进行物化;α、β分别表示τ与η的相对影响力;通过对双种群进行功能上的划分,即使两个种群的蚂蚁分别具有较快的收敛速度和更好的寻优能力;式(1)中,allowed<sub>K</sub>为可选视图的集合,D根据下面式(2)所定义的状态转移概率<img file="FSA00000464625400021.GIF" wi="57" he="61" />进行选择;<img file="FSA00000464625400022.GIF" wi="1562" he="271" />式(2)中,<img file="FSA00000464625400023.GIF" wi="57" he="61" />表示蚂蚁k由视图i转移到视图j的状态转移概率,s为除i、j以外的视图变量;步骤(C)中的信息素更新策略为:在蚂蚁选择完一个视图结点后进行信息素局部更新,更新规则如下式(3)所示:<maths num="0001"><![CDATA[<math><mrow><msubsup><mi>&tau;</mi><mi>ij</mi><mi>new</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&rho;</mi><mo>)</mo></mrow><msubsup><mi>&tau;</mi><mi>ij</mi><mi>old</mi></msubsup><mo>+</mo><msub><mi>&rho;&tau;</mi><mn>0</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>在所有蚂蚁都建立了解决方案后进行信息素全局更新,更新规则如下式(4)所示;<maths num="0002"><![CDATA[<math><mrow><msubsup><mi>&tau;</mi><mi>ij</mi><mi>new</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&rho;</mi><mo>)</mo></mrow><msubsup><mi>&tau;</mi><mi>ij</mi><mi>old</mi></msubsup><mo>+</mo><msub><mi>&rho;&Delta;&tau;</mi><mi>ij</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>式(3)、(4)中,ρ为信息素挥发系数,取值为0<ρ<1;τ<sub>0</sub>为信息素初值,取为1/N×K<sub>max</sub>,N为候选视图个数,K<sub>max</sub>为给定的存储空间限制;<img file="FSA00000464625400026.GIF" wi="241" he="61" />分别为信息素更新前后从i到j边上的信息素浓度;式(4)中,Δτ<sub>ij</sub>取值为:<img file="FSA00000464625400027.GIF" wi="1549" he="241" />式(5)中,Q<sub>smallest</sub>,Q<sub>biggest</sub>分别为最优路径对应的总查询代价和最差路径对应的总查询代价;w是常数,可控制信息素浓度的大小,一般取为1;步骤(C)中的信息素扩散规则为:<maths num="0003"><![CDATA[<math><mrow><msup><mi>&tau;</mi><mo>*</mo></msup><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mfrac><mrow><msub><mi>&eta;</mi><mi>iu</mi></msub><msub><mi>c</mi><mi>uD</mi></msub></mrow><mrow><msub><mi>&eta;</mi><mi>ij</mi></msub><msub><mi>c</mi><mi>iD</mi></msub></mrow></mfrac><mo>)</mo></mrow><msub><mi>&tau;</mi><mn>0</mn></msub><mi>&lambda;</mi></mtd><mtd><msub><mi>&eta;</mi><mi>iu</mi></msub><msub><mi>c</mi><mi>uD</mi></msub><mo>&le;</mo><msub><mi>&eta;</mi><mi>ij</mi></msub><msub><mi>c</mi><mi>jD</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>&eta;</mi><mi>iu</mi></msub><msub><mi>c</mi><mi>uD</mi></msub><mo>></mo><msub><mi>&eta;</mi><mi>ij</mi></msub><msub><mi>c</mi><mi>jD</mi></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>式(6)中,i、j节点为最优路径上的节点,u为与当前节点i直接相连的非最优路径节点;c<sub>iD</sub>、c<sub>uD</sub>分别为i点、u点到NULL点的查询代价,λ表示信息量的大小;步骤(C)中的信息通信规则为:<maths num="0004"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>&tau;</mi><mi>ij</mi><mi>A</mi></msubsup><mo>=</mo><mrow><mo>(</mo><msubsup><mi>&tau;</mi><mi>ij</mi><mi>A</mi></msubsup><mo>+</mo><msubsup><mi>&tau;</mi><mi>ij</mi><mi>B</mi></msubsup><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mtd></mtr><mtr><mtd><msubsup><mi>&tau;</mi><mi>ij</mi><mi>B</mi></msubsup><mo>=</mo><msubsup><mi>&tau;</mi><mi>ij</mi><mi>A</mi></msubsup></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow></math>]]></maths>式(7)中<img file="FSA00000464625400033.GIF" wi="182" he="64" />分别是(i,j)段A种群和B种群的信息素。
地址 100830 北京市海淀区莲花池西路28号