残缺的歌的专栏

pure coding and thinking

大数据仓库之ods原始数据层和dw层设计

甲问:数仓建模时,涉及到uv(去重用户数)指标时,数据从哪里取,只能走ods原始数据层吗,汇总到dw层时,由于数据量太大,不能到用户粒度,所以在dw层中不包含用户粒度的数据,而且电商的报表分析,几乎每张报表都会涉及到uv指标,如果所有的uv指标都从ods层去获取,那样io是否会成为瓶颈,原始数据量也比较大。举例:比如说有个字段column_a,包含了几百个数据(1-500),统计时可能会统计条件为1-20的uv指标,或者5-50,10-200。。。等等这些uv指标。

乙答:反问三个问题:

1.DW层为何不存储用户粒度的数据?
2.DW层为何不做聚集?
3.UV既然是共性需求,为何不考以DM的方式提供?

甲答:1.原始数据是用户访问网站的情况,用户今天可能访问了多次,也可能只访问一两次,如果dw层汇总数据精确到用户粒度,那dw层相对于ods层,数据压缩比太低了,而且因为数据量也太大,汇总比较耗时的
2.dw层做的是不同维度的聚集,但是没有到用户维度这么细的粒度
3.不是很明白,dm层需要uv指标,目前dm层的数据从dw基础汇总层来的,然后dm层需要的uv从ods原始数据层统计的,就是这样感觉不合理

乙答:

1:感觉你此处的DW其实更像DM,只存储聚集&汇总的结果;通过ODS来存储最细粒度的数据;DW和ODS的数据存储模型还是有差异的,定位也不同,建议是DW层存储最明细粒度的的数据,即每一次的用户访问事件。压缩比的问题属于存储能力和技术问题,与存储模型无关。DW层存在的目的,是提供长周期,更易访问的数据能力,ODS的目的是缓冲区。
2.无论是ODS和DW,都会存在同样的问题,数据量大,汇总耗时,这个不会因为你通过ODS聚集还是通过DW聚集,而有什么不同,你要解决的其实是计算性能问题,与存储无关,建议从技术视角处理。






阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010666884/article/details/52384906
个人分类: 整合基础类
上一篇Benchmark 性能测试简介
下一篇异步调用与多线程的区别
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭