说说数仓(3) - 数仓架构
近几年工作都和BI有关,但是真正对数仓有系统的了解还是在第一家公司的时候,当时跟着IBM的顾问,了解了很多的模型设计的故事,对于入门和启蒙有很大的帮助。后面对于数仓的理解,其实都是工作中一点一点实践和摸索得来的。
前面我们说了传统数仓和互联网数仓的区别,主要提到了服务用户群的不同,这里说的传统和互联网其实都是相对而言的,这一回呢,我们说说数仓的架构。
现在说数仓,更多的会和数据平台或者基础架构搭上,已经融合到整个基础设施的搭建上。这里呢,我们不说Hadoop各种组件之间的配合,我们就简单说下数仓的分层架构。
数仓建模
说到数仓建模,就得提下经典的2套理论:
-
范式建模
Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构。 -
维度建模
Kimball提出的总线式的自下而上(DM-DW)的数据仓库架构。
数仓的建模或者分层,其实都是为了更好的去组织、管理、维护数据,实际开发时会整合2种方式去使用,当然,还有些其他的,像Data Vault模型、Anchor模型,暂时还没有应用过,就不说了。
维度建模,一般都会提到星型模型、雪花模型,星型模型做OLAP分析很方便。
数仓分层
简单点儿,直接ODS+DM就可以了,将所有数据同步过来,然后直接开发些应用层的报表,这是最简单的了;当DM层的内容多了以后,想要重用,就会再拆分一个公共层出来,变成3层架构,最近看了本阿里的书,《大数据之路》,里面有很多数仓相关的内容,很不错,参考后,目前使用的分层模式如下:
按照这种分层方式,我们的开发重心就在dwd层,就是明细数据层,这里主要是一些宽表,存储的还是明细数据;到了dws层,我们就会针对不同的维度,对数据进行聚合了,按道理说,dws层算是集市层,这里一般按照主题进行划分,属于维度建模的范畴;ads就是偏应用层,各种报表的输出了。
基于这种分层方式,感觉用起来还是很方便的,嗯,先到这里。