数据挖掘概念与技术12--数据立方体的计算和多路数组聚集详解
1.冰山立方体的相关概念
部分物化的立方体成为冰山立方体,其中部分物化所使用的标准或最小阈值称为最小支持度阈值或简称为最小支持度。
冰山立方体SQL查询语句:
conpute cube sales_ice as
select month,city,customer_group,count(*) from salesinfo
cube by month,city,customer_group having count(*)>=min
其中,cube by表示对给定维所有可能的自己形成聚集,having子句指定约束条件,在这里如果没有having子句,该例则得到完全立方体。
2.入闭覆盖与闭单元
目的:进一步系统的压缩数据立方体;
原理:对于某个立方体,由于在其他维固定的情况下,某一个或多个维上的数值为空,从而导致是否对该维聚集,度量值都不变,为了减少存储空间,不多次存储相同的度量值(进一步减少预计算的立方体数)。其中,对于最底层的立方体称为闭立方体。
闭单元的特点:在闭单元中,用*替换其中对应维上的非*值,度量值不变。如果将它们看为一个家族,则闭单元是该家族中,*值最少的一个。即在该家族中,不存在替换闭单元中的*值,切度量值不变的单元。
3.数据立方体计算的一般策略
1.排序,三列和分组。对维属性进行排序,三列和分组。其中的关键在于,对共享一组相同维值的元祖进行聚集,共享聚集计算。同样共享排序,共享划分在多个立方体之间。
2.同时聚集和共享中间结果.关键在于分治,然后合并中间结果。而不是从基本事实表计算较高层的聚集。
3.当存在多个子女方体时,由最小的子女聚集 。例如我可以通过年份销量或天销量来计算总销量,则选用年份来聚集。
4.可以使用先检验,剪枝方法有效的计算冰山立方体。如果给定单元不满足最小支持度,则它的特殊化更不能满足。特殊化是指将该单元中的*用非*替换。
5.完全立方体的多维数组聚集
计算策略所需注意的问题:
(1)尽量减少块反复调入内存的次数。
(2)尽量利用较少的内存空间完成计算。
因为要减少块调入调出内存的次数就要缓存中间的计算结果,又因为数据立方体有多维数据,所以块的计算顺序,决定聚集的顺序(满足问题1),从而决定计算所需的内存大小。
难点一:内存大小的计算:
一般情况下,一般先从基数小的维开始聚集。在本例中设A=40,B=400,C=4000,则先聚集A,计算2-D面BC.然后是AC,最后是AB.
因为计算刚开始的四个块1,2,3,4就可以得到BC面的第一块,并且之后每连续的四个块一组得到下一个BC面的块,则在计算BC面时只需要缓冲BC面一个块的大小100*1000就可以,之后计算的16次均重复利用此内存块。
因为只有在调入块13的时候才可以计算得AC面的一块,则前面的12块都应该得到缓存,所以在计算AC面的时候,缓存的结果大小为AC面的一行,即40*1000;
因为只有调入第49块的时候才可以计算AB面,则前面计算结果均需保存,所需内存应为AB整个平面的面积,即40*400.
所以在此次计算中所需的内存为:100*1000+40*1000+40*400。
6.多维数组聚集计算冰山立方体的缺点:
因为该计算方法从基本方体开始计算,逐步向上得到更加泛化的方体,所以不能通过先验剪枝的方法进行优化。
7.数组多维聚集相对于ROLAP(基于关系记录的)的优势:
(1)数组结构不需要空间来存放搜索码;
(2)使用数组直接寻址,比其基于关键字的寻址策略快;
(3)不直接使用表进行计算立方体,而是用数组计算立方体,然后再将结果转换成表,更加快速。