数据仓库篇数仓建模的选型
Posted 大数据漫路求索
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据仓库篇数仓建模的选型相关的知识,希望对你有一定的参考价值。
一、文章概述
数据模型就是数据组织和存储方法,一个良好的数据模型强调从业务场景、数据存取和使用角度合理存储数据。合理的基础数据存储模型会给大数据管理带来很多好处:
性能:良好的数据模型能帮助我们快速地查询所需要的数据,减少数据I/O吞吐。
成本:良好的数据模型能够极大地减少不必要的数据冗余,同时能够实现计算结果复用。
效率:良好的数据模型能够极大地改善用户体验,提高使用数据的效率。
质量:良好的数据模型能够改善数据统计口径的不一致性,减少数据计算错误的可能性。
二、数据模型
在几年以前,Hadoop、Spark、Hive、kafka等分布式计算与存储、消息中间件技术还未成熟的时候,建设数据仓库主要是基于Oracle、DB2等关系型数据库。采用关系理论描述数据之间的关系作为数据仓库建设的基础一直沿用至今。随着时间的推移,传统数据仓库的数据计算和存储能力已经难以支撑容量庞大的数据仓库建设。因此大数据(分布式)技术才被广泛应用于数据仓库建设。
提到数据仓库不能不解释一下OLTP和OLAP的区别:
OLTP:也叫联机事务处理(Online Transaction Processing)系统,通常是面向数据操作的随机读写,采用3NF的实体关系模型存储数据。典型的OLTP系统有电子商务系统、银行、交易软件等。
OLAP:也叫联机分析处理(Online Analytical Processing)系统,通常是数据操作是批量读写,其主要关注点不是事务一致性,而是数据的整合。
数据仓库的建模方式有Inmon ER模型、Kimball维度模型、Data Vault模型以及Anchor模型。
Inmon ER模型:数据仓库之父Bill Inmon提出的建模方法是站在全公司层面的高度设计一个3NF模型,用实体关系(Entity Relationship,ER)模型描述公司业务。该模型在理论上符合3NF。数仓中的3NF和OLTP系统中的3NF的区别在于,它是站在公司角度面向主题的抽象,而不是针对某个业务流程的实体关系模型抽象。其具有如下特点:
需要全面了解公司的业务和数据。
实施周期非常长。
对建模人员的能力要求非常高。
采用ER模型建设数仓的基本思想是数据整合和数据规范化,从公司整体角度出发,将公司各个业务系统中的数据按照主题进行“相似性组合”。数据通常从操作型数据源中获得,在ETL过程中进行处理,这部分操作通常被称为数据采集。这种规范的、原子数据的仓库被称为企业数据仓库(Enterprise Data Warehouse,EDW)。尽管Kimball架构也可以选择使用规范化以支持ETL处理,但是Inmon架构强调的是利用规范化的EDW承担这一角色,而Kimball架构强调的是具有统一一致性维度的企业总线架构的重要性。
采用Inmon架构的数仓通常是允许用户根据数据细节程度和数据可用性要求访问EDW。通过ETL过程发布的数据中台以满足报表和业务数据需求。虽然Inmon架构也是维度结构,但是产生的结果分析数据中台通常与Kimball架构展现区存在差别,分析数据通中台常以部门为中心(而不是围绕业务过程来组织的)。如果ETL过程中数据所应用的业务规则超越了EDW基本概要,那么将分析数据中台和EDW原子数据联系起来还是非常困难的。
Inmon架构在实践中最经典的代表是Teradata公司基于金融业务发布的FS-LDM(Financial Services Logical Data Model),它通过对金融业务的高度抽象和总结,将金融业务划分为10大主题。建模一般分为:
高层模型:在一个高度抽象的层级上,描述各个主题以及主题间的关联关系。
中层模型:在高层模型的基础上,细化各个主题的属性。
物理模型:在中层模型的基础上,需要同时考虑平台特点和性能进行设计,对中层模型涉及到的表需要进行合并或者分区操作等。
Kimball维度模型:维度模型是数据仓库领域的Ralph Kimball大师倡导的,他的《数据仓库工具箱》是数仓领域流行的经典建模书籍。维度模型从分析决策的需求出发构建,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析。
其典型代表就是星型模型,以及在一些特殊场景下使用的雪花模型。四步建模法如下:
选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;也可以是一系列的相关业务事件组成的业务流程。
确定粒度。我们需要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。
识别维表。选择好粒度之后,需要基于此粒度设计维表,包括维表字段属性,用于分析时进行分组或者筛选。
确定事实。确定分析需要衡量的指标。
Data Vault模型:该模型主要是建立一个可审计的基础数据层,也就是说需要有一个可以追述历史和原子性的基础层级,它并不要求对数据进行过度的一致性处理和整合操作。该模型主要有下面几个部分:
Hub:是数仓的核心实体,由实体key、代理键、加载时间和数据来源组成。
Link:表示Hub之间的关系,把关联关系单独抽象是该模型与ER模型的最大区别。
Satellite:是Hub的详细描述,一个Hub可能会有多个Satellite。它是由Hub的代理键、加载时间、来源、详细的Hub描述信息组成。
Anchor模型:该模型要求更进一步的数据规范化,将采用6NF,基本上实现了K-V结构化模型。
互联网数据仓库模型的选择基本上经历了三个阶段:
将数据以源表的形式同步到Oracle、DB2等DBMS系统中,数据开发同学基于ODS表进行数据统计、分析。
通过一些模型手段消除数据冗余,提升数据一致性。这个时期可能会采用ER模型,但是构建ER模型风险非常大。是在业务发展变化快、并且不太成熟的条件下,不太适合采用ER模型设计。
选择Kimball的维度模型进行建模是目前互联网公司核心的建模方法论,同时也会加强并优化既有的维度建模思想,增加构建公共层模型数据架构体系。
三、总结
要想根据业务场景选择合适的模型设计方案,就必须要理解各个模型设计方案才能融会贯通。笔者公司采用的就是Kimball架构和Inmon架构嫁接的方式,这种架构利用了EDW的中心地位,但是此处的EDW和分析用户是完全隔离的。它仅仅作为部分Kimball风格展现区的数据来源,其中的数据是维度的、原子的(辅以聚集数据)、以过程为中心的。实际上该架构与Inmon架构基本一致。
最后推荐几本数仓方面的书籍:
范式建模经典图书,《数据仓库(原书第4版)》【[美] 荫蒙(Inmon W.H) 著,王志海 等 译 】。
维度建模经典图书,《数据仓库工具箱(3版)》【[美]金博尔(RalphKimball),[美] 罗 著】。
Data vault模型图书,《数据架构 大数据 数据仓库以及Data Vault 》【美,威廉,H,英蒙,W ... 著,唐富年 译 】。
数据架构概述图书,《大数据之路 阿里巴巴大数据实践》。
数据分析类图书,《数据驱动:从方法到实践》,《引爆用户增长》。
如果你觉得文章内容不错,欢迎分享给身边的小伙伴哦。
以上是关于数据仓库篇数仓建模的选型的主要内容,如果未能解决你的问题,请参考以下文章