数据仓库分层实战
数仓的同学都喜欢问一个很有意思的问题:数据仓库到底要分几层?我一般的回答都是:你想分几层就分几层。很显然, 虽然我是很认真的在回答,但是提问题的人会感觉非常不认真。还是完完整整的阐述一下数仓分层的基础逻辑吧。
为什么要分层?
想要知道数仓要分几层,那就必须得先回答另一个问题:就是数据仓库为什么要分层?分层思想到底是在干什么?
直接上结论:分层是为了解耦。请把这句话刻在脑子里。因为这决定了你的数据架构到底要分几层。
我们直接读取数据源出报表不行么?行!但是你的前台业务、中间的数据处理逻辑和后端的数据库会完全绑死,任何一个点发生变化,都得修改整个设计。
那按数据处理的逻辑,一个中间表拆一层行么?行啊。但是你这样链条太长,不仅流程管控难度提升,而且一旦发生问题,追溯几乎变得不可能。
所以,既不能不分,又不能分的太多。那应该怎么弄呢?
你看信息系统的架构发展历程,就是这样:
单体–>水平分层/垂直拆分–>微服务–>服务网格
从头到尾都是不停的拆,这是在干啥?就是在解耦,再解耦。但是也没有无限的往下拆,拆到服务网格,就开始合并了,这就是中台的逻辑。
数据架构上也是一样,有ODS层是为了保存原始数据,有明细层是为了保证后续数据的干净和统一