文|傅一平

今天跟着我来学学数据仓库的基础知识,希望你结合案例可以把它吃透。

商业智能时代,无论是程序员,数据分析师,架构师也好,这篇一定要懂,这样才能更好的赋能自己的工作。

一、数据仓库建模的意义

如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。Linux的创始人Torvalds有一段关于“什么才是优秀程序员”的话:“烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系”,最能够说明数据模型的重要性。

只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。

性能:帮助我们快速查询所需要的数据,减少数据的I/O吞吐,提高使用数据的效率,如宽表。

成本:极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低存储和计算成本。

效率:在业务或系统发生变化时,可以保持稳定或很容易扩展,提高数据稳定性和连续性。

质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。

数据模型能够促进业务与技术进行有效沟通,形成对主要业务定义和术语的统一认识,具有跨部门、中性的特征,可以表达和涵盖所有的业务。

大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡!

下图是个示例,通过统一数据模型,屏蔽数据源变化对业务的影响,保证业务的稳定,表述了数据仓库模型的一种价值:

二、数据仓库分层的设计

为了实现以上的目的,数据仓库一般要进行分层的设计,其能带来五大好处:

清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

数据血缘追踪:能够快速准确地定位到问题,并清楚它的危害范围。

减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

把复杂问题简单化:将复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。当数据出现问题之后,不用修复所有的数据,只需要从有问题的步骤开始修复。

屏蔽原始数据的异常:不必改一次业务就需要重新接入数据。

以下是我们的一种分层设计方法,数据缓冲区(ODS)的数据结构与源系统完全一致。基础数据模型(DWD)和融合数据模型(DWI与DWA)是大数据平台重点建设的数据模型。应用层模型由各应用按需自行建设,其中基础数据模型一般采用ER模型,融合数据模型采用维度建模思路。

三、两种经典的数据仓库建模方法

前面的分层设计中你会发现有两种设计方法,关系建模和维度建模,下面分别简单介绍其特点和适用场景。

1、维度建模

(1)定义

维度模型是数据仓库领域另一位大师Ralph Kimball 所倡导的。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能,更直接面向业务。典型的代表是我们比较熟知的星形模型。

维度退化

星型模型由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。

这也是我们在使用hive时,经常会看到一些大宽表的原因,大宽表一般都是事实表,包含了维度关联的主键和一些度量信息,而维度表则是事实表里面维度的具体信息,使用时候一般通过join来组合数据,相对来说对OLAP的分析比较方便。

(2)建模方法

通常需要选择某个业务过程,然后围绕该过程建立模型,其一般采用自底向上的方法,从明确关键业务过程开始,再到明确粒度,再到明确维度,最后明确事实,非常简单易懂。

以下是阿里的OneData的建模工作流,可以参考。

(3)优缺点

优点:技术要求不高,快速上手,敏捷迭代,快速交付;更快速完成分析需求,较好的大规模复杂查询的响应性能

缺点:维度表的冗余会较多,视野狭窄

2、关系建模

(1)定义

是数据仓库之父Inmon推崇的、从全企业的高度设计一个3NF模型的方法,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象。

它更多是面向数据的整合和一致性治理,正如Inmon所希望达到的“single version of the truth”。

当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。

雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。

雪花模型更加符合数据库范式,减少数据冗余,但是在分析数据的时候,操作比较复杂,需要join的表比较多所以其性能并不一定比星型模型高。

(2)建模方法

关系建模常常需要全局考虑,要对上游业务系统的进行信息调研,以做到对其业务和数据的基本了解,要做到主题划分,让模型有清晰合理的实体关系体系,以下是方法的示意:

以下是中国移动的概念模型的一种示例,如果没有自顶向下的视野,基本是总结不出来的:

(3)优缺点

优点:规范性较好,冗余小,数据集成和数据一致性方面得到重视,比如运营商可以参考国际电信运营业务流程规范(ETOM),有所谓的最佳实践。

缺点:需要全面了解企业业务、数据和关系;实施周期非常长,成本昂贵;对建模人员的能力要求也非常高,容易烂尾。

3、建模方法比较

一般来讲,维度模型简单直观,适合业务模式快速变化的行业,关系模型实现复杂,适合业务模式比较成熟的行业,阿里原来用关系建模,现在基本都是维度建模的方式了。

运营商以前都是关系建模,现在其实边界越来越模糊,很多大数据业务变化很快,采用维度建模也比较方便,不需要顶层设计。

四、企业建模的三点经验

维度建模就不说了,只要能理解业务过程和其中涉及的相关数据、维度就可以,但自顶向下的关系建模难度很大,以下是关系建模的三个建设要点。

1、业务的理解:找到企业内最理解业务和源系统的人,梳理出现状,比如运营商就要深刻理解三域(O/B/M),概念建模的挑战就很大,现在做到B域的概念建模已经很不容易。

2、数据及关系的理解:各个域的系统建设的时候没有统一文档和规范,要梳理出逻辑模型不容易,比如运营商的事件主题下的逻辑模型就非常复杂。

3、标准化的推进:数据仓库建模的任何实体都需要标准化命名,否则未来的管理成本巨大,也是后续数据有效治理的基础,以下是我们的一个命名规范示例:

五、推荐三本书

总而言之,你可以把我的文章当成一个指引,具体还是要结合企业的实际去推进,但做事的时候要不忘建模的初心:即数据如何摆布才能提高支撑应用的效率,手段上不用区分什么先进不先进,好用就成。

这种思路讲解数据仓库建模,你见过吗?数据人与架构师必看相关推荐

  1. 【Android App】利用腾讯地图获取地点信息和规划导航线路讲解及实战(附源码和演示视频 超详细必看)

    需要源码请点赞关注收藏后评论区留言~~~ 一.获取地点信息 至于如何集成腾讯地图和调用腾讯地图接口此处不再赘述,有需要请参见我之前的博客 腾讯地图用来搜索POI地点的工具是TencentSearch, ...

  2. 【Android App】给三维魔方贴图以及旋转动画讲解和实战(附源码和演示视频 超详细必看)

    需要源码请点赞关注收藏后评论区留言私信~~~ 一.给三维物体贴图 除了位置坐标.颜色向量和矩阵向量,着色器还支持声明材质坐标和纹理采样器. 其中材质坐标表示物体表面摊平后的二维空间,纹理采样器表示采用 ...

  3. 如何深入浅出的理解数据仓库建模?

    正文开始 今天跟着我来学学数据仓库的基础知识,希望你结合案例可以把它吃透. 一.数据仓库建模的意义 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置:如果把数据看作城市的建筑,我们希 ...

  4. 数据仓库建模理论及实践-从0到1

    目录 1.数据仓库的概念 1.1数据仓库的核心架构 1.2 数据仓库建模的意义 1.2 数据仓库建模方法论 1.2.1 ER模型 1.2.2 维度模型 1.3维度建模之事实表 1.3.1事务事实表 1 ...

  5. 2020全国大学生数学建模A题思路讲解与核心代码

    2020全国大学生数学建模A题思路讲解与核心代码 题目 核心方法: 问题一 问题二 问题三和问题四 答案如下: 题目 核心方法: 热传导 有限差分法 遍历法 问题一 建立焊接区域中心温度变化规律模型, ...

  6. 视频教程-数据中台-数据仓库建模设计方法和实现-数据仓库

    数据中台-数据仓库建模设计方法和实现 客户包括中国移动等数十个世界五百强客户.长期为中国银行,招商银行,建设银行提供数据库和大数据相关培训服务. 目前担任上海某大数据技术公司CTO. 储成宇 ¥298 ...

  7. 【数据仓库】数据仓库建模方法及企业数据中台建设

    一.数据仓库建模方法 每个行业有自己的模型,但是 不同行业的数据模型,在数据建模的方法上,却都有着共通的基本特点. 什么是数据模型? 数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体 ...

  8. 面试问题准备-数据仓库建模篇

    1. 什么叫数据仓库?数据仓库的特点? (相信inmon的数据仓库概念的四个特点是最基本的吧,当然需要加上自己的理解) 首先,用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库: 其次, ...

  9. 数据仓库建模方法/范式建模法/维度建模法/事实表/维度表/优缺点/建模流程/概念建模/逻辑建模/物理建模

    常见的有 范式建模法.维度建模法.实体建模法等,每种方法从本质上将是从不同的角度看待业务中的问题,不管是从技术层面还是从业务层面,都代表了哲学上的一种世界观. 1 范式建模法(Third Normal ...

最新文章

  1. 《概率机器人》速度运动模型gmapping中代码解析
  2. 判断checkbox是否选中并改变值
  3. Centos6.4_X64飞信安装
  4. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)
  5. NET问答: C# 中是否有 format json 的类库?
  6. Weblogic12c T3 协议安全漏洞分析【CVE-2020-14645 CVE-2020-2883 CVE-2020-14645】
  7. ZRender源码分析2:Storage(Model层)
  8. 故宫开通首个5G基站 首个5G高校在上海建成启用...
  9. MYSQL中时间毫秒数转换及日期格式化
  10. SQL Server 新增数据表数据
  11. 使用Tomcat发布war包
  12. “极速交易”正在证券业兴起
  13. ai-人工智能的本质和未来_带有人工智能的动画电子设备-带来难以想象的结果...
  14. JAVA中Unicode输出_java输出全部unicode字符
  15. [BZOJ2906] 分块
  16. 【零基础玩转BLDC系列】基于霍尔传感器的无刷直流电机控制原理
  17. 定点补码加减法运算_定点加减法运算与溢出判断处理
  18. 快速幂算法(全网最详细地带你从零开始一步一步优化)
  19. 3D空间扫描,用立体的眼光看懂世界
  20. Android小钢琴

热门文章

  1. php无限次执行函数,php – 防止多次执行JavaScript函数
  2. 读取SQL Server事务日志
  3. SQL Server 2016中的本机JSON支持
  4. 使用postman模拟上传文件到springMVC的坑:the request was rejected because no multipart boundary was found...
  5. Jmeter入门1 官网下载及安装
  6. Struts 1.x 的工作原理
  7. MVVM绑定多层级数据到TreeView并设置项目展开
  8. 重新一步一步学习Lucene.NET 一个简单的程序开始(1)
  9. C#点滴 – 内建基本类型
  10. cloud源码-Feign