技术|Rubik支持的OLAP Cube降维方法(一)
如所介绍,利用Transwarp Rubik设计并实例化OLAP Cube,采用的是空间换区时间的策略来优化OLAP业务执行的。系统将根据业务逻辑,对查询访问的数据进行预计算并缓存计算结果。但是在基于预计算的OLAP应用中,维度爆炸是一个广为诟病的问题。也就是说,为了优化业务执行,OLAP模型占用了系统过多的存储空间。其中很多的维度组合被用于优化的次数寥寥可数,甚至根本不会被访问,所以实际上空间是被浪费的。为了避免制造不必要的维度组合,同时能起到优化业务的作用,提高Cube的产出和代价比,在建立的Cube的时候应该遵循一些减少维度组合的优化策略。
原始Cube引发的空间问题
对于原始的未经任何优化Cube来说,维度表中的任意一个字段或字段表达式即是一个维度。Cube就是所有可能的维度组合的集合,例如维度表中有两个字段A,B,维度组合有四种:{A,B}、{A}、{B}、{},实例化Cube时,系统会根据每种维度组合物化分别出一张表,下图给出了每一种维度组合所对应的SQL示例。
因此一个n维的Cube中,共有2^n个可能的维度组合,将对应产生2^n张物化表。当Cube维度变成n+m时,物化表的个数急剧增加到2^(n+m),呈指数级增长。当维度数量较多时,空间资源将趋于爆炸。
所以在保证解决OLAP业务优化绝大部分需求的前提下,减少维度组合数量,是至关重要的。
Rubik支持的OLAP Cube降维方法
减少维度组合数量要需要遵循一定策略,Rubik支持以下降维优化方式,用户可以结合业务需求和实际业务进行选择,设计合适的OLAP Cube模型。
聚合组(Aggregation Group)
当维度数目比较多时(>10),建议根据查询习惯和业务模式将维度按照使用场景进行分组。
示例:
假设,原Cube的维度数量高达50,其中的维度分为对公业务和对私业务两部分,两部分业务互不相干,那么就可以根据业务信息将该Cube的50个维度分割成20维度+30维度两个子Cube。
优化效果:
物化Cube表的数量从2^(m+n)变为2^m + 2^n,占用的空间以指数级减少。
除了划分聚合组之外,下面还有一些常用的组内维度优化的手段。所以,在完成聚合组拆分后,还可以在组内进行进一步优化。
必备维度(Mandatory Dimension)
必备维度是在OLAP业务中,参与所有业务查询的维度,从预计算SQL角度来说总是会出现在WHERE或GROUP BY里。将某个或者某些维度设置为必备维度后,没有包括必备维度的组合就会被舍弃。
示例:
例如,在数据立方体中,银行客户想统计交易金额相关的业务(如交易金额总量、月平均等),查询时必须指定币种字段,因为相同币种的统计分析结果才有意义。所以,可以把币种字段设为Mandatory,从而将Cube的体积减少一半。
优化效果:
将某个维度指定为Mandatory,将只留下包含必备维度的组合。每指定一个必备维度,Cube表数就减少一半;若设置n个必备维度,物化Cube表的数量将从2^m 减少到2^(m-n)。
联合维度(Joint Dimension)
对于某些维度,可以将它们的组合视为一个维度。
通常适用于如下两种场景:
优化效果:
假设原有m个维度,其中n个维度组合为联合维度后,组合数由2^m 变为 2^(m-n+1) 。
衍生维度(Derived Dimension)
当维度表中的某一列(例如主键)可以推导出其它列值时,就可以构造衍生维度。称该列为Basic Column,被推导出的列称为Derived Column,
示例:
例如用户维度表中,给定id可以推出其余字段name、sex,所以GROUP BY id,name和GROUP BY id,sex的结果完全等价于GROUP BY id,因此只需一种维度组合{id,name,sex}。
优化效果:
若Basic Column数为1,Derived Column数为m,则设置衍生维度后,相关的组合维度数从2^m减少到1。
层次维度(Hierarchy Dimension)
Hierarchy是一组有层级关系的维度,可用于减少没有业务需求的字段间的聚合。
示例:
例如某维度表中有“省”,“市”,“县”三个字段,在做聚合查询时,通常都是从高层维度往下伸展的,如GROUP BY “省”,“市”,“县”等,而不会单独出现GROUP BY “市”,“县”之类的情况,因此可以抛弃不满足层次关系的组合。
优化效果:
对于有m个维度的Cube,假设其所有维度构成了一个Hierarchy,那么Cube表的数量就会从2^m减少到m。若能保证潜在的查询严格符合预设的层级关系模型,按照模型设置层次维度将不仅可以大幅减少Cube表数量,而且完全不会影响查询效率。
Partial Cube
Partial Cube优化的思路是,当一个维度组合包含两个中基维(基数为1000到10000)或者一个高基维(基数大于100000)时,我们可以认为该组合没有聚合度可言,其预计算结果用于OLAP优化的效果将很差,而且计算该维度组合物化表所消耗的时间和空间都非常大,所以抛弃该组合。
OLAP Cube构建步骤总结
如何选择和使用以上降维手段都是由实际的数据和业务特征决定的,因此在创建OLAP Cube时必须学会分析真实场景,运用以上降维优化技巧,达到OLAP优化的目的。下面结合优化策略,对OLAP Cube的创建步骤进行简单总结。
首先,根据业务范围,将所有维度进行分组(Aggregation Group),将维度列分成n种大类的业务场景,按照实际情况建立多个Cube实例或者Cube模型。
然后,对于每类业务场景进行单独的分析:
是否存在必备维度,是否可以创建层级维度,当层级维度数较多时,即组合数量从2^m减少到m后,m的值依然很大的情况下,可以考虑创建衍生维度,对于数据量较大的表,衍生维度将造成较为严重的性能损失,不过大幅度降低存储压力,需要进行权衡,接着考虑是否可以构成组合维度,最后根据实际的数据特征和聚合情况决定是否采用Partial Cube来进行优化。
按照上述步骤,做到既提高Cube存储空间利用价值,又实现可观的优化效果。
下期文章中我们将介绍具体如何在Rubik中实现这些优化方法
上一篇:用VR技术学外语 这样应该就不会无聊了吧
下一篇:「邀请函」珠宝行业3D打印创新制造解决方案交流会报名火热进行中
标签:
今日话题更多>
- 武汉大学信息门户是什么 武汉大学信息门户是武汉大学官方网站的入口,它为武汉大学师生员工提供信息服务和网络应用入口。信息门户网址为:ehall.whu.edu.cn。 信息门户包含以下主要功能: 1. 统一身份……
- 壹米滴答物流单号查询方法 壹米滴答物流单号查询可通过以下方式进行: 1. 登录壹米滴答官网 登录www.yimidida.com网址,点击页面右上角的登录按钮,输入用户名和密码进行登录。登录成功后,在用户中心可……
- 壹米滴答物流是什么平台 壹米滴答是一家中国国际物流快递公司,提供国内外物流配送服务。 1. 公司简介 壹米滴答成立于2013年,由深圳市壹米滴答供应链管理有限公司运营。现已开通200多个国家和地区的……
黑帽学习 更多 >>
-
黑帽seo技术主要有哪些,为什么
从搜索引擎的算法出来之后,就有很多的人开始研究如何比较快的做收录和排名,那个时候并没有人把…… -
采集站怎么样才不会死,采集站应
现在有不少的站长正在一批一批的做采集站,因为这种网站比较的省时省力,不过也有其非常大的弊端…… -
黑帽seo有什么高深的技术吗
搜索引擎虽然只是一个入口,但是这个入口搜索出来的结果的排名是具有非常大价值的,有很多的人都…… -
蜘蛛池有效果吗,目前比较好用的
说起蜘蛛池程序,可能很多做黑帽的人比较了解这个东西,它主要就是为了快速的搭建蜘蛛池,然后引…… -
发包技术教程有用吗,发包排名虚
对于很多做黑帽seo的人来说,技术手段是需要不断研发和提升的,但是搜索引擎对于这些黑帽的技术…… -
网站总是被劫持怎么办,网络被劫
其实做起来一个网站是非常花时间和精力的,有不少的站长辛辛苦苦的花了很长的时间去做了一个网站…… -
什么叫做强引蜘蛛,强引蜘蛛软件
蜘蛛对于收录来说是一个非常重要的东西,我们可以说有蜘蛛不一定会收录,但是想要收录就一定要有…… -
如何去搭建一个蜘蛛池,需要准备
对于一些做了很久seo的人来说,肯定会接触到蜘蛛池这个东西,因为蜘蛛池对于收录这块的作用是非…… -
目前比较好用的蜘蛛池有哪些,小
做seo的肯定都了解蜘蛛池(如果对于蜘蛛池不是很了解,可以参考《 蜘蛛池是什么 》这篇文章)是…… -
强引蜘蛛原理是怎么样的,蜘蛛池
对于网站的收录来说,蜘蛛是主要的抓取工具,虽然说我们可以从一些提交入口里面去提交,但是还是……