前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据蒋堂 | 多维分析预汇总的方案探讨

数据蒋堂 | 多维分析预汇总的方案探讨

作者头像
数据派THU
发布2019-05-09 14:35:46
5370
发布2019-05-09 14:35:46
举报
文章被收录于专栏:数据派THU数据派THU

作者:蒋步星

来源:数据蒋堂

本文共1300字,建议阅读6分钟。 本文与你探讨多维分析初始状态时该预先汇总哪些组合。

我们在《多维分析预汇总的存储容量》中计算过,如果想做到O(1)的复杂度,至少要考虑界面用到的各种维度组合,这在维度总量稍多一点时就不可行了。

这样,我们就只能放弃O(1)复杂度的期望了,不把每种可能出现的维度组合都预汇总出来,只能预汇总部分维度组合。在查询时,对于已经有预汇总的数据则可以直接返回,而如果碰到没有预汇总的维度组合时,则仍然从原始CUBE遍历聚合出来,这时的计算复杂度要么O(1)要么O(n)。

还可以做得更聪明一点:从某个已有的中间CUBE聚合。比如,如果保存了维度组合[A,B,C]的预汇总数据,那么维度组合[A,B]或[B,C]的查询就可以从这个中间CUBE再聚合出来了,而不必从原始CUBE聚合,计算量将会大大降低。有时可能会有多个中间CUBE都能聚合出目标查询,比如组合[A,B,C]和[B,C,D]都可以再聚合出组合[B,C],这时优先选择数据量较小的那个中间CUBE即可。

那么,我们怎么知道在初始状态时该预先汇总哪些组合呢?

可以动态生成这些组合。在查询时,无法从现有中间CUBE聚合出来的组合只能从原始CUBE聚合,我们可以在聚合完成后将结果保存起来作为一个新的中间CUBE。发现新组合时第一次访问会有延迟感,以后基于这个组合的查询或者可由该组合聚合出来的查询就都可以较快返回了。

其实,也不是只要能从现有中间CUBE聚合出来的组合就总是临时聚合。多维分析性能优化的目标是前端反应速度,如果中间CUBE仍然很大,那么再聚合也会比较慢,这时候,这些再聚合的结果也可以作为一些新的中间CUBE保存起来。

另外,在过程中我们还可以记录每个中间CUBE的使用频率,在空间总量限制下,删除那些使用率较低的中间CUBE,从而更有效地利用有限的空间。

经过这些处理后,我们虽然无法完全做到O(1)复杂度,但常常也能把计算性能从全量硬遍历提高几十倍甚至上百倍,这对于大多数多维分析场景已经足够了。


我们还在《多维分析预汇总的功能盲区》中说过几种情况无法通过预汇总来提高性能。其中非常规聚合和组合聚合本质上仍然是个数据量的问题,而对于临时产生的条件测度和时间段统计,就不是数据量的问题了,我们无法预测用户使用时才输入的参数,也就不可能把所有参数对应的数据都事先预汇总出来。

理论上还可以使用上面的办法:碰到新的参数就计算并保存下来。但与维度组合不同的是,测度参数常常是连续量,其取值及组合情况不可枚举,重复利用的可能性不大。

预汇总对于条件测度确实难有好的效果,不过,对于时间段统计,还是有点招的。我们可以将数据按更高的时间维度层次预汇总,在查询时就可以减少遍历计算量。

假如原始CUBE是按日存储的数据,那么我们可以按月把数据先做好汇总成中间CUBE,当需要针对一个时间段统计时,可以将时间段跨过的整月数据从中间CUBE中遍历,再加上时间段两头那两段不构成整月的日期的数据,即可以获得查询目标。这样,可以将长时间段统计的计算量减少十倍甚至更多。

比如,我们要查询1月22日到9月8日区间的某种统计值,而我们事先已经按月做过预汇总。那么我们只要基于预汇总数据计算2月到8月的聚合值,再使用原始CUBE计算1月22日到1月31日和9月1日到9月8日的聚合值,涉及的计算量是7(2月-8月)+10(1月22日-1月31日)+8(9月1日-9月8日)=25,而如果使用原始数据聚合,其计算量是223(从1月22日到9月8日的天数),几乎减少了10倍。

专栏作者简介

润乾软件创始人、首席科学家

清华大学计算机硕士,中国大数据产业生态联盟专家委员,著有《非线性报表模型原理》等,1989年,中国首个国际奥林匹克数学竞赛团体冠军成员,个人金牌;2000年,创立润乾公司;2004年,首次在润乾报表中提出非线性报表模型,完美解决了中国式复杂报表制表难题,目前该模型已经成为报表行业的标准;2014年,经过7年开发,润乾软件发布不依赖关系代数模型的计算引擎——集算器,有效地提高了复杂结构化大数据计算的开发和运算效率;2015年,润乾软件被福布斯中文网站评为“2015福布斯中国非上市潜力企业100强”;2016、2017年,荣获中国电子信息产业发展研究院评选的“中国软件和信息服务业十大领军人物”;2017年度中国数据大工匠、数据领域专业技术讲堂《数据蒋堂》创办者。

数据蒋堂

《数据蒋堂》的作者蒋步星,从事信息系统建设和数据处理长达20多年的时间。他丰富的工程经验与深厚的理论功底相互融合、创新思想与传统观念的相互碰撞,虚拟与现实的相互交织,产生出了一篇篇的沥血之作。此连载的内容涉及从数据呈现、采集到加工计算再到存储以及挖掘等各个方面。大可观数据世界之远景、小可看技术疑难之细节。针对数据领域一些技术难点,站在研发人员的角度从浅入深,进行全方位、360度无死角深度剖析;对于一些业内观点,站在技术人员角度阐述自己的思考和理解。蒋步星还会对大数据的发展,站在业内专家角度给予预测和推断。静下心来认真研读你会发现,《数据蒋堂》的文章,有的会让用户避免重复前人走过的弯路,有的会让攻城狮面对扎心的难题茅塞顿开,有的会为初入行业的读者提供一把开启数据世界的钥匙,有的甚至会让业内专家大跌眼镜,产生思想交锋。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档