数据仓库维度模型设计
维度建模基本概念
维度建模的作用:维度建模以分析决策的需求出发构建模型, 为分析需求服务, 它重点解决用户如何更快速完成分析需求。
维度建模是专门应用于分析型数据库、数据仓库、数据集市建模的方法。数据集市可以理解为是一种"小型数据仓库"。
事实表:发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中,可以理解他就是在现实中发生的一次操作型事件。
事实表的特征:表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一条记录。
维度表:维度表示要对数据进行分析时所用的一个量。
每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。
数据仓库的主导功能就是面向分析,以查询为主,不涉及数据更新操作。
事实表的设计是以能够正确记录历史信息为准则。
维度表的设计是以能够以合适的角度来聚合主题内容为准则。
维度建模的三种模式
第一种:星型模式
星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。
星形模式的维度建模由一个事实表和一组维表成
第二种:雪花模式
雪花模式的维度表可以拥有其他维度表
第三种:星座模式
星座模式是基于多张事实表的,而且共享维度信息。很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。
数仓分层思想:
主要分为三层
数据运营层、数据仓库层、 数据服务层
数据运营层(ODS)
Operate data store(操作数据-存储),是最接近数据源中数据的一层。
数据仓库层(DW)
Data warehouse(数据仓库),从ODS层中获得的数据按照主题建立各种数据模型,相同主题的数据进行集中。
DW数据分层,由下到上为 DWD,DWB,DWS
DWD:data warehouse detail 细节数据层,是业务层与数据仓库的隔离层。
DWB:data warehouse base 基础数据层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。
DWS:data warehouse service 服务数据层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表。
数据服务层(ADS)
Application Data Service(应用数据服务)。该层主要是提供数据产品和数据分析使用的数据,一般会存放在ES、MySQL等系统中供线上系统使用。
总结数据的处理流程
生成原始数据 == ODS层 WD层 ADS层==
分层的原因:清晰数据结构:
每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。方便数据血缘追踪:
简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。减少重复开发:
规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。屏蔽原始数据的异常:
屏蔽业务的影响,不必改一次业务就需要重新接入数据
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
阿里巴巴数据仓库分层架构
1、ODS 数据准备层
功能
ODS层是数据仓库准备区,为DWD层提供基础原始数据,可减少对业务系统的影响
建模方式及原则:
从业务系统增量抽取、保留时间由业务需求决定、可分表进行周期存储、数据不做清洗转换与业务系统数据模型保持一致、按主题逻辑划分
2、DWD 数据明细层
功能:
为DW层提供来源明细数据,提供业务系统细节数据的长期沉淀,为未来分析类需求的扩展提供历史数据支撑
建模方式及原则:
数据模型与ODS层一致,不做清洗转换处理、为支持数据重跑可额外增加数据业务日期字段、可按年月日进行分表、用增量ODS层数据和前一天DWD相关表进行merge处理
3、 DW(B/S) 数据汇总层
功能:
为DW、ST层提供细粒度数据,细化成DWB和DWS;
DWB是根据DWD明细数据进行转换,如维度转代理键、身份证清洗、会员注册来源清晰、字段合并、空值处理、脏数据处理、IP清晰转换、账号余额清洗、资金来源清洗等;
DWS是根据DWB层数据按各个维度ID进行高粒度汇总聚合,如按交易来源,交易类型进行汇合
建模方式及原则:
聚合、汇总增加派生事实;
关联其它主题的事实表,DW层可能会跨主题域;
DWB保持低粒度汇总加工数据,DWS保持高粒度汇总数据;
数据模型可能采用反范式设计,合并信息等。
3、 Data Market (数据集市)层
功能:
可以是一些宽表,是根据DW层数据按照各种维度或多种维度组合把需要查询的一些事实字段进行汇总统计并作为单独的列进行存储;
满足一些特定查询、数据挖掘应用;
应用集市数据存储
建模方式及原则:
尽量减少数据访问时计算(优化检索)
维度建模,星型模型;
事实拉宽,度量预先计算;
分表存储
4、ST 数据应用层(ADS层)
功能:
ST层面向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析,面向最终结果用户;
适合作OLAP、报表模型,如ROLAP,MOLAP;
联机事务处理OLTP、联机分析处理OLAP。
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
联机分析处理的用户是企业中的专业分析人员及管理决策人员,他们在分析业务经营的数据时,从不同的角度来审视业务的衡量指标是一种很自然的思考模式。例如分析销售数据,可能会综合时间周期、产品类别、分销渠道、地理分布、客户群类等多种因素来考量。
根据DW层经过聚合汇总统计后的粗粒度事实表
建模方式及原则:保持数据量小;维度建模,星形模型;
各位维度代理键+度量;
增加数据业务日期字段,支持数据重跑;不分表存储