数据挖掘概念与技术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)不直接使⽤表进⾏计算⽴⽅体,⽽是⽤数组计算⽴⽅体,然后再将结果转换成表,更加快速。