技术文章: 数仓黄金价值圈: 为什么、是什么、怎么做
作者: Eric_Zhang
适合人群: 数据相关人
今天给大家一起分享下有着悠久历史的数据仓库的一些思考由三部分组成
为什么,搭建数据仓库
是什么,数据仓库定义
怎么做,如何搭建数仓
一:为什么,搭建数据仓库
最终目标: 数据驱动资源优化配置,即科学、高效和精准的决策
第一个视角是从业务视角出发,我们可以提炼为三个字为 管 , 产 , 运
1、管是管理,即让管理层进行科学决策【不再是屁股决定脑袋的决策】
2、产是产品,即让产品流程优化,快速迭代【不再自嗨式的闭门造车】
3、运是运营,即数据驱动业务运营策略【不再是盲人摸象式的策略】
第二个视角从技术角度出发,我们可以提炼为八个字为 降本增效 , 清晰明了
1、降本是技术的使命,即让数据高效复用,减少重复开发
2、增效是技术的价值,即降低数据使用门槛,让数据服务无处不在
3、清晰明了是数据GPS,即清晰的管理、追踪、定位数据
把为什么想清楚了,接下来就是探讨数据仓库是什么,是否能满足以上的诉求
二、是什么,数据仓库定义
数据仓库广泛定义:数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。
随着数字化浪潮到来仅仅支撑管理决策暴露出了局限性, 应在管理决策基础上扩展到产品决策、运营决策、服务决策等等
1、面向主题【微服务、业务过程、数据域】
操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。
2、集成的【大一统、全链路】
数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
3、相对稳定的【核心业务数据】
数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
4、反映历史变化【洞察秋毫】
数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
以上是数据仓库的广泛定义,随着企业数字化转型的大浪潮中,我们需要把数据上升一个维度来看,适合当下这个万物互联的时代,我们可以总结成一句话
数据是物理世界的 镜像 ,而数据仓库是 有序 还原物理世界的一种 载体
有序 是核心,也是数据仓库的 价值所在 ,
那如何判断有序是关键,我们可以反过来想,有序的反面是无序,那我们判断无序程度,来反向证明有序度。那如何判断无序程序,不能绕过去的一个概念“熵”,它代表一个系统的混乱程度,熵增越大,代表无序程度越高。
如何对抗熵增,是数据仓库的一个重要命题, 耗散结构 是最好的方式
首先来看下耗散结构的定义
所谓耗散结构就是包含多基元 多组 分多层次 的开放系统处于远 离平衡态时在涨落的触发下从无序突变为有序而形成的一种时间,空间或时间——时空结构
再看下耗散结构的特点
1、产生耗散结构的系统都包含有大量的系统基元甚至多层次的组分
2、产生耗散结构的系统必须是开放系统,必定同外界进行着物质与能量的交换
3、产生耗散结构的系统必须处于远离平衡的状态
以上特点也是数据仓库的特点,所以好的数据仓库一定是耗散结构的
多层次,开放,一直被构建ing
三、怎么做,如何搭建数仓
建设思路
如何搭建数仓,在业界一直存在着两种思路
从顶到下
从顶到下,即从点到面,到面面俱到
从低到上
从低到上,即面面俱到,到各个击破
数仓分层
不管是哪一种,都逃脱不了以下的常用分层架构
- ODS:操作型数据(Operational Data Store),指结构与源系统基本保持一致的增量或者全量数据。作为DW数据的一个数据准备区,同时又承担基础数据记录历史变化,之所以保留原始数据和线上原始数据保持一致,方便后期数据核对需要。
- CDM:通用数据模型,又称为数据中间层(Common Data Model),包含DWD、DWS、DIM层。
- DWD:数据仓库明细层数据(Data Warehouse Detail)。对ODS层数据进行清洗转化,以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细事实表。可以结合企业的数据使用特点,基于维度建模思想,将明细事实表的某些重要属性字段做适当冗余,也即宽表化处理,构建明细宽表。
- DWS:数据仓库汇总层数据(Data Warehouse Summary),基于指标需求,构建初步汇总事实表,一般是宽表。基于上层的应用和产品的指标需求,构建公共粒度的汇总指标表。以宽表化手段物理化模型,构建命名规范、口径一致的统计指标,为上层提供公共指标。
- DIM:建立一致数据分析维表,可以降低数据计算口径不统一的风险,同时可以方便进行交叉探查。以维度作为建模驱动,基于每个维度的业务含义,通过添加维度属性、关联维度等定义计算逻辑,完成属性定义的过程并建立一致的数据分析维表。
- DM/ADS:面向应用的数据服务层(Application Data Service)。整合汇总成分析某一个主题域的服务数据,面向应用逻辑的数据加工。该层主要存放数据产品个性化的统计指标数据,这一层的数据直接对接数据的消费者,是产品、运营等角色可以直接感知理解的一层,大多数这一层的表都可以直接在BI上通过图表的形式直接透出。
建设过程
在建设过程中,我们总结出了三段论, 分别为
还原论
整体论
系统论
我们来依次来解释下,三论的定义
还原论
还原论的定义:是一种哲学思想,认为复杂的系统、事务、现象可以通过将其化解为各部分之组合的方法,加以理解和描述。
把还原论映射到数据仓库,ODS层操作型数据(Operational Data Store)与DWD明细层数据(Data Warehouse Detail),是还原论的的载体
通过数据还原物理世界的过程中,包含 数据还原与数据重组
ODS的建设思路是:
与线上数据源保持一致,还原业务,长期存储
DWD的建设思路是:
数据规范统一 【表名、字段名、枚举值等等】
还原业务过程 【提炼核心业务环节,确定实体】
屏蔽业务变更 【屏蔽业务复杂过程,类似于Java的封装】
重组数据明细 【明细级宽表,同数据域不同业务过程】
明细级的数据模式一般有以下数据组成
谁 ,在 哪 ,什么 时间 ,用什么 方式 ,在 做什么 事情
在DWD这一层主要提炼出业务核心业务过程,识别每一业务过程的实体及实体与实体这件的关系,基于每个具体的业务过程特点,构建最细粒度的明细事实表。
随着软件行业 微服务架构 成为一种常用架构,微服务有 松耦合 与 去中心化 的特点,这样的架构模式更加符合大规模复杂系统协作,提高整体研发效能,但如果站在数据视角去看,数据是 分散的 , 割裂的 , 不一致的 ,这就对数据建设提出了更好的要求,可以结合公司的数据使用特点,基于维度建模思想,将明细事实表进行 数据重组 ,把微服务架构引起的数据特点,进行同一业务过程不同事实表进行 融合 ,把同一业务过程的关键属性字段做适当冗余,即宽表化处理,构建 明细宽表 。
在还原业务过程过程中,需要对具体表进行如下数据剖析,对数据内容要了然于胸
1、业务场景【产品随时间串行的流程,例如授信、支用、还款、催收等等】
2、数据表粒度【实体主键、如何判断唯一一条记录】
3、数据生产方式【场景下增删改查】
4、关键字段状态【status,type】
5、注意事项
整体论
整体论:这种哲学认为,将系统打碎成为它的组成部分的做法是受限制的,对于高度复杂的系统,这种做法就行不通,因此我们应该以整体的系统论观点来考察事物
把整体论映射到数据仓库,包含 数据汇聚与全局数据 DWS:数据仓库汇总层数据(Data Warehouse Summary) DIM:数据仓库为表层(Dimension)
DWS的建设思路是:
确定分析实体 【用户、用户&产品、用户&渠道等等】
圈定实体维度 【时间、地点等等】
串联业务过程 【授信、支用、还款等等】
封装指标口径 【授信次数,支用金额,还款金额、贷余】
在DWS这一层主要汇聚串联业务核心业务过程,站在业务 全链路 的视角构建不同粒度的汇总事实表,以满足不同场景下的主题分析场景,用少量的汇总表支撑常见的分析场景,理想情况是用20%的表,支撑80%的分析场景。
DIM的建设思路:
全局唯一
纵横扩展
自动更新
在DIM这一层主要保证数据仓库 一致性维度 ,保证数据一致性。
系统论
系统论的定义:主要任务就是以系统为对象,从整体出发来研究系统整体和组成系统整体各要素的相互关系,从本质上说明其结构、功能、行为和动态,以把握系统整体,达到最优的目标
把系统论映射到数据仓库,包含 决策数据与系统最优
DM/ADS:面向应用的数据服务层(Application Data Service)
系统最优: 耗散结构式数仓 ,即数据治理
ADS建设思路
报表体系 【全链路指标体系】
自助服务 【自助式数据服务,例如托拉拽式OLAP】
回流业务 【数据回流业务生产系统】
数据治理建设思路:
数仓热度【下冷、中温、上热】
成本治理【有进有出,数据流动】
质量保障【端到端的稽核】