群里的伙伴,问到对数仓分层的理解,就写篇文章来简单介绍下。
PS:之前研究过,但是没专门写过分层这块的内容
01 常见的分层方式
对于数据仓库的分层,市场上有不同的派系。
1、阿里【ODS、DWD、DWS、ADS】
链接:数仓分层 (aliyun.com)
2、华为【SDI、DWI、DWR、DM】
链接:基本概念_数据湖治理中心 DGC_产品介绍_华为云 (huaweicloud.com)
3、其他(美团、滴滴、网易、有赞等等)
【美团】OneData建设探索之路:SaaS收银运营数仓建设
https://tech.meituan.com/2019/10/17/meituan-saas-data-warehouse.html
【滴滴】数据仓库指标体系建设实践
https://mp.weixin.qq.com/s/-pLpLD_HMiasyyRxo5oTRQ
【网易】严选-数仓规范和评价体系
https://mp.weixin.qq.com/s/7PQocW3Fg97kOXdvpSttQA
【有赞】有赞数据仓库实践之路
https://mp.weixin.qq.com/s/7hUUuOdsOHvB3oleQcW4Vg
提醒一下:各家分层有差异,但是换汤不换药。
我们想要透过现象看本质,主要就弄懂:为什么分层,每层有什么特征。
然后从实用角度出发,回到实践中,看看自己的公司是怎么分的。
02 简单例子帮助理解分层
对于初学者,我建议先不着急理解 ODS、DWD 这些概念,而是通过生活化的例子来理解。
分层就像是厨房收纳。
收纳的目标是:方便管,方便找,方便用。
收纳的具体动作是:先分类,定好规矩,什么样的东西东西放到哪里。
服务 20 人的餐厅,可能一个厨师就够了,洗菜、切菜、炒菜全包了。
但如果餐饮要服务200人,那洗菜、切菜、炒菜这些环节就得分别有负责人了。
那不同环节如何衔接、协同呢?
定规矩!
洗菜、切菜弄成什么样,要约定好。
数据方面,也是如此。分层,也就是规矩。
整体上,会确定分几层、层与层之间是单向流通(避免循环引用),对外提供数据的范围。
具体到层级内,每个层都会有特定的命名规范、数据粒度等。
03 个人对分层的建议
饮食行业,一开始,大家都是乱炖,弄熟就可以了。
慢慢地,有聪明人开始创新,衍生出来不同的菜品,然后彼此学习,逐渐完善了餐饮体系。
随着餐饮行业的扩张,不同餐厅推广到其他地区。
有的时候,要结合地区特性做调整:食客对菜品的需求决定炒什么口味的菜、如何切、如何洗。
同理,数据也是。
最后
数仓本没有分层,为了更好地协同,分层出现了。
分层要随公司业务慢慢演化,一个初创公司完全照搬大公司的成熟体系,一般都会消化不良。