1.数据仓库的5W1H
搜索“数据仓库”,你会找到许多艰涩的定义,你会知道它是“面向主题的”,“集成的”,“不可更新的”blabla,却没有文字描述它是什么,干什么的。
现在我来用5W1H法则来向大家勾勒数仓的样貌。
1.1 What
啥是数仓?最直观的感受,数仓是一大批表(无论表是在RDS还是HDFS还是啥其他地方)+一大批ETL任务(抽取加载转换,搞数据的都懂)。根据不同角色打个比方:数仓就像菜园子,数仓工程师是种地的菜农,负责耕地、浇水、收获,驻存;而数据分析师还有数据科学家则是厨子,他们把数仓工程师收获的菜做成美味的饭菜供 食客(决策者) 食用(做决策)。
当然,很多时候数仓工程师也会基于业务,落地分析逻辑,身兼厨子的角色,这里不详细展开,后面会讨论。
1.2 Why
为啥要用数仓?假如程序员仅闷头敲代码,我们无从得知产品上线后表现如何,挣多少钱,客户啥样,这就是数据存在的意义:指导思想。说大白话一点就是给领导分析决策用的。
附上一图流解释:
1.3 Where
哪里有数仓应用的影子?数仓常支撑BI、数据大屏等应用,大概长这模样:
常见于公司门口,领导汇报,叫“XX实况”,“XX战报”之类,相信大家都见过。
我们身边也有类似的数据应用,比如支付宝理财页面,某一类基金的涨跌指数,红绿灯指数,我们超过了多少多少人,等等。
1.4 When
啥时候用数仓?很简单,用户有分析决策需求的时候。数仓是决策的来源,是分析的输入。
1.5 Who
谁是数仓的受益者?有两个角色我在前4个W中不断提及,就是分析者,决策者,这里不再赘述。其实有一个最大的受益者——大老板AKA资本家,没错就是剥削我们剩余价值的那个人。
数仓将巨量的数据由成本单位变为资产单位,原本占用存储资源(老板花钱),后来推动利润产出(老板挣钱),所以除了分析者决策者,大老板才是幕后最大受益者。
1.6 How
构建一个数仓需要啥?So easy。
1.用户的需求(写代码的都有数,用户是天)
2.业务的逻辑(内功,如何抽象业务,分层思想,直接决定质量)
3.数仓方法论(维度建模,数据分析基础,数据可视化方法……)
4.工具(实时计算,Hadoop生态,RDS……)
2.数据仓库的“道法术器”
在1.6中,我们介绍了构建数仓需要啥,那这些要素的重要程度如何,谁是“道”,谁是“法/术/器”?为什么?诸位且再看我一图流:
1.道:用户。数仓的终极目的是支持用户分析决策,所以用户的需求是一等一的。别说“我是工程师,我只关注如何实现。”,工程师如诗般的代码最终也是拿来产生价值获得利益的,谁来决定价值和利益,不言而喻——用户。
2.法:业务。刚才说了用户,与用户紧密相连,用户(当然也有工程师,PM,……)每天打交道的就是业务。啥是业务?它的英文单词阐述了一切——Business,能产生价值,能挣钱的那个过程,叫做业务。数仓工程师与实际场景业务是强关联的,数据取于业务、用于业务,对业务逻辑的理解力直接决定了数仓的质量好坏、用户的体验高低。
3.术:方法。这里指的就是数仓的各种方法论,当下最常见的就是KImball老爷子的维度建模理论,当然还有Inmon老爷子的关系建模理论(就是大学数据库课程里ER图代表的那个模型);还有数据分析基础,因为我们要服务数据分析者;此外还有数据可视化方法,什么样的数据该如何展示,用柱图好一点还是折线,甘特图要不要放,等等;还有很多其他的理论,比如可以学习一点AI的知识,数据平台的知识,都是有用的。
4.器:工具。这里分成两块来讲。一个是语言,因为要完成ETL任务,写SQL是比较多的,当然也会有同仁写Java完成MapReduce,Python做描述性分析等等,不拘泥于形式。再一个是工具,一般就是存表跑ETL的地方,比如基于Hadoop生态的Hive、Spark(Spark基于的形式可就多了),实时计算的Flink,RDS的MySQL、Oracle,做数据可视化的组件Echarts、AntV,等等。
3.数据仓库的经典架构
不同的公司会有不同的数仓架构,但一般相差不大,万变不离其宗。比较经典的一个架构如图:
从下往上说。
业务库:每个产品或者每个业务的数据库,存放着在跑的业务的操作数据。
基础层:ODS(Operational Data Store),基于需求需要,按周期(每日,每周,等等)按规则(增量/全量,过滤规则)从各个业务库抽取。也有公司叫STG,甚至有STG+ODS架构的,STG管抽取,ODS管一丢丢的清洗,总体而言功能无太大差别。
DW:Data Warehouse,这就是上面一直在讨论的数仓。目前大公司采取的架构都是“数据集市”(DM,Data Markets),所谓数据集市就是面向一个特定业务分析决策场景(如财务、生产、人事,等等)建立的一套数据分层+数据应用体系,也叫主题,本质就是1.1中说的一大批表+一大批ETL任务。当然,如果有做数据中台可能把这里叫“业务域”,这里不展开,后面有机会再讲讲数据中台。
以上就是概论的部分,欢迎大家讨论提问。
下一章简单讲讲数仓开发的流程。
【版权所有,翻版必究。】