01  数据建模相关概念

数据几乎总是用于两种目的:操作型记录的保存和分析型决策的制定。简单来说,操作型系统保存数据,分析型系统使用数据。前者一般仅反映数据的最新状态,按单条记录事务性来处理;其优化的核心是更快地处理事务。后者往往是反映数据一段时间的状态变化,按大批量方式处理数据;其核心是高性能、多维度处理数据。

通常我们将操作型系统简称为OLTP(On-Line Transaction Processing)— 联机事务处理,将分析型系统简称为OLAP(On-Line Analytical Processing)— 联机分析处理。

针对这两种不同的数据用途,如何组织数据,更好地满足数据使用需求。这里就涉及到数据建模问题。即设计一种数据组织方式(模型),来满足不同场景。在OLTP场景中,常用的是使用实体关系模型(ER)来存储,从而在事务处理中解决数据的冗余和一致性问题。

在OLAP场景中,有多种建模方式有:ER模型、星型模型和多维模型。

02  维度建模

维度建模,是数据仓库大师Ralph Kimball提出的,是数据仓库工程领域最流行的数仓建模经典。

维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。

它是面向分析的,为了提高查询性能可以增加数据冗余,反规范化的设计技术。

2、维度表

维度表,一致性维度,业务过程的发生或分析角度,我们主要关注下退化维度和缓慢变化维。

退化维度(DegenerateDimension)

在维度类型中,有一种重要的维度称作为退化维度,亦维度退化一说。这种维度指的是直接把一些简单的维度放在事实表中。退化维度是维度建模领域中的一个非常重要的概念,它对理解维度建模有着非常重要的作用,退化维度一般在分析中可以用来做分组使用。

缓慢变化维(Slowly Changing Dimensions)

维度的属性并不是始终不变的,它会随着时间的流逝发生缓慢的变化,这种随时间发生变化的维度我们一般称之为缓慢变化维(SCD)。

SCD常用的三种处理方式:

① TYPE1 直接覆盖原值

② TYPE2 增加维度行

在为维度成员增加新行时,需为其分配新的主代理键。并且,至少需要在维度行再增加三列:有效日期、截止日期、行标识。这个地方可联想拉链表设计。

③ TYPE3 增加属性列

④ 混合方式

可根据实际业务场景,混合或选择使用以上三种方式,以快速方便而又准确的分析历史变化情况。

3、粒度

用于确定某一事实表中的行表示什么,是业务最小活动单元或不同维度组合,即业务细节程度。

4、维度建模流程

维度建模步骤:选择业务过程->声明粒度->确定维度->确定事实。旨在重点解决数据粒度、维度设计和事实表设计问题。

声明粒度,为业务最小活动单元或不同维度组合。以共同粒度从多个组织业务过程合并度量的事实表称为合并事实表,需要注意的是,来自多个业务过程的事实合并到合并事实表时,它们必须具有同样等级的粒度。

由于在维度建模过程中,涉及到很多概念。下面通过一个场景来,来一一说明。例如:常见的电商下单环节,每个用户提交一笔订单(仅限一个物品),就对应于一条订单记录。

03  维度建模方法论

数据仓库建模方法论可分为:维度建模、范式建模、Data Vault模型、Anchor模型。

1、维度模型

企业中最流行、也是最经典的数仓建模经典,数据仓库大师Ralph Kimball的经典著作《数据仓库工具箱 维度建模权威指南 第三版》一本书进行了论述。从事数据仓库/ETL/BI的同学,强烈建议买一本至少读一遍。

按数据组织类型划分可分为星型模型、雪花模型、星座模型。

(1)星型模型

星型模型主要是维表和事实表,以事实表为中心,所有维度直接关联在事实表上,呈星型分布。

图来源于Kimball《The Data Warehouse Toolkits -3rd Edition》

(2)雪花模型

雪花模型,在星型模型的基础上,维度表上又关联了其他维度表。这种模型维护成本高,性能方面也较差,所以一般不建议使用。尤其是基于hadoop体系构建数仓,减少join就是减少shuffle,性能差距会很大。

(3)星座模型

星座模型,是对星型模型的扩展延伸,多张事实表共享维度表。数仓模型建设后期,大部分维度建模都是星座模型。

2、范式模型

即 实体关系(ER)模型,数据仓库之父Immon提出的,从全企业的高度设计一个3NF模型,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF。此建模方法,对建模人员的能力要求非常高。

3、Data Vault模型

DataVault由Hub(关键核心业务实体)、Link(关系)、Satellite(实体属性) 三部分组成 ,是Dan Linstedt发起创建的一种模型方法论,它是在ER关系模型上的衍生,同时设计的出发点也是为了实现数据的整合,并非为数据决策分析直接使用。

4、Anchor模型

高度可扩展的模型,所有的扩展只是添加而不是修改,因此它将模型规范到6NF,基本变成了K-V结构模型。一般很少使用,本文不多做介绍。

04  建模规范

以维度建模为理论基础,定义一系列术语来描述建模对象。下图摘自于《阿里巴巴大数据实践之路》。

数据域

指面向业务分析,将业务过程或者维度进行抽象的集合。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中和扩展新的数据域。

业务过程

指企业的业务活动事件,如下单、支付、退款都是业务过程。请注意,业务过程是一个不可拆分的行为事件,通俗地讲,业务过程就是企业活动中的事件。

时间周期

用来明确数据统计的时间范围或者时间点,如最近30天、自然周、截至当日等。

修饰类型

是对修饰词的一种抽象划分,是从属于某个业务域的。

修饰词

指除了统计维度以外指标的业务场景限定抽象。修饰词隶属于一种修饰类型。

度量/原子指标

原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,具有明确业务含义的名词,如支付金额。

维度

维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。维度属于一个数据域,如地理维度(其中包括国家、地区、省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。

维度属性

维度属性隶属于一个维度,如地理维度里面的国家名称、国家ID、省份名称等都属于维度属性。

派生指标

派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指标业务统计范围的圈定。

数据层次的划分:

  • ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持 一致。
    它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。其主要作用是把基础数据引入到MaxCompute。

  • CDM:Common Data Model,公共维度模型层,又细分为DWD和DWS。它的主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面向分析和统计的明细事实表以及汇总公共粒度的指标。

  • DWD:Data Warehouse Detail,明细数据层。

  • DWS:Data Warehouse Summary,汇总数据层。

  • ADS:Application Data Service,应用数据层。

具体仓库的分层情况需要结合业务场景、数据场景、系统场景进行综合考虑。

数据分类架构

数据处理流程架构

数据模型

模型是对现实事物的反映和抽象,能帮助我们更好地了解客观世界。数据模型定义了数据之间关系和结构,使得我们可以有规律地获取想要的数据。例如,在一个超市里,商品的布局都有特定的规范,商品摆放的位置是按照消费者的购买习惯以及人流走向进行摆放的。

数据模型的作用 

数据模型是在业务需求分析之后,数据仓库工作开始时的第一步。良好的数据模型可以帮助我们更好地存储数据,更有效率地获取数据,保证数据间的一致性。

(4)成本与性能平衡

适当的数据冗余可换取查询和刷新性能,不宜过度冗余与数据复制。

(5)数据可回滚

处理逻辑不变,在不同时间多次运行数据的结果需确定不变。

(6)一致性

相同的字段在不同表中的字段名必须相同。

(7)命名清晰可理解

表命名规范需清晰、一致,表命名需易于下游的理解和使用。

(8)补充说明

  • 一个模型无法满足所有的需求。

  • 需合理选择数据模型的建模方式。

  • 通常,设计顺序依次为:概念模型->逻辑模型->物理模型。

事实表设计要点:

事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。在设计过程中,可以选择不同类型的事实表,它们有各自的适用场景。

在整个设计过程中,应当遵循下面一些原则:

  • 选择一种适合的事实表类型。

  • 事实尽可能完整,包含整个业务过程的全部事实。

  • 确保每一个事实度量都是一致性,反复计算都会得到相同的结果。尽量记录一些“原子”事实,而不是加工后的结果。

  • 可适当做些”维度退化属性”,提高事实表的查询性能。

  • 为提高聚合性能,可适度做些上卷汇聚事实表。

05  建模工具

1、PowerDesigner

PowerDesigner是目前数据建模业界的领头羊。功能包括:完整的集成模型,和面向包含IT为中心的、非IT为中心的差异化建模诉求。

支持非常强大的元数据信息库和各种不同格式的输出。PowerDesigner拥有一个优雅且人性化的界面,非常易懂的帮助文档,快速帮助用户解决专业问题。

2、ER/Studio

ER/Studio 是一个支持多平台环境的直观数据建模工具,并且本地集成了用于处理大数据平台,例如-MongoDB和Hadoop Hive。

它能够进行正向和逆向工程,并且拥有“比较合并”功能,能够输出例如XML、PNG、JPEG等格式文档。内建自动执行任务功能支持当前流行数据库平台。ER/Studio功能非常强大,拥有直观的界面和很好的用户支持特别易于马上开始工作。

6、Visio 

Visio 是Office 软件系列中的负责绘制流程图和示意图的软件,是一款便于IT和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。同时它也可以用来数据库建模。

打开visio 2010,文件—>新建—>数据库—>数据库模型图。建立数据库模型图之后,菜单栏多出一个菜单项"数据库"。

7、Excel Mapping

通过我们最熟悉的Excel进行维护数据模型、血缘关系和元数据管理,话不多说,直接上图:

06  总结

上述的这些方法都有自己的优点和局限性,实际在创建数据仓库模型的时候,可以参考使用上述数据仓库不同的建模方法,在各个不同阶段采用不同的方法,从而能够保证整个数据仓库建模的质量。

方法论仅仅停留在理论层面上,落地实现的才真正决定了数仓设计的好坏,当然再好的方法,只有在合适的阶段使用,才有意义,才能发挥它最大的价值。

详解数据建模方法、模型、规范、流程、架构、分层和工具相关推荐

  1. 详解数据仓库建模方法

    本文主要的主线就是回答下面三个问题: 什么是数据模型? 为什么需要数据模型? 如何建设数据模型? 最后,我们在本文的结尾给大家介绍了一个具体的数据仓库建模的样例,帮助大家来了解整个数据建模的过程. 一 ...

  2. TOUGH2系列建模方法及在CO2地质封存、水文地球化学、地热、地下水污染等领域中的实践技术应用

    TOUGH2系列软件是由美国劳伦斯伯克利实验室开发的,旨在解决非饱和带中地下水.热运移的通用模拟软件.和传统地下水模拟软件Feflow和Modflow不同,TOUGH2系列软件采用模块化设计和有限积分 ...

  3. TOUGH2系列建模方法及在CO2地质封存、水文地球化学、地热、地下水污染等领域中的应用

    目录 TOUGH2系列建模方法及在CO2地质封存.水文地球化学.地热.地下水污染等领域中的实践技术应用 PHREEQC建模及典型案例解析与高阶拓展应用[反向"编译"."玩 ...

  4. 知物由学 | 多级建模方法提升汉语语音识别效果,获ISCSLP大赛认可

    导读:语音是人类信息沟通的重要途径,同时也是人机交互的重要桥梁,自动语音识别可以表述为通过计算机将人类语音信号转录为书面形式的文字输出的过程.本文分享了网易易盾提出的多级建模单元的端到端汉语语音识别方 ...

  5. 小白学流程引擎-FLowable(五) — BPMN2.0模型规范

    前言: 不用到处百度BPMN2的博客了,本篇文章带你系统掌握BPMN2规范的核心知识点.全文2万字,全覆盖BPMN2知识点,图文并茂,泡杯咖啡,慢慢细品- 一.BPMN是什么 BPMN(Busines ...

  6. hive中的绣花模型_hive建模方法

    概述数据仓库这个概念是由 Bill Inmon 所提出的,其功能是将组织通过联机事务处理(OLTP)所积累的大量的资料和数据,通过数据仓库理论所特点有的信息存储架构,进行系统的分析整理,利用各种的分析 ...

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

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

  8. 如何用计算机模拟光的传播,一种模拟激光辐射颗粒的数值建模方法与流程

    本发明涉及计算机模拟仿真领域,具体涉及一种激光辐射颗粒的热辐射模拟仿真领域. 背景技术: 在激光烧结技术中,激光的参数与作用方式会直接影响到烧结件的质量.考虑到激光光斑及粉末粒径的尺寸太小且激光扫描的 ...

  9. 基于SA-Conv-CTC/Attention端到端语音识别模型的基本原理、实现方法和主要流程

    文章目录 摘要 1. 引言 2. 模型描述 2.1 混合编码器 2.2 位置编码器 2.3 SA-Conv-CTC/Attention架构 2.4 带有SA-LM的混合解码器 3. 实验 3.1 数据 ...

最新文章

  1. angular-ng-repeat不允许collection中存在两个相同Id的对象
  2. AI之matlab随笔(1)-数据类型,逻辑操作,数组,逻辑运算,异或,零向量或零矩阵
  3. struts+swfupload实现批量图片上传(上):swfupload
  4. Linux命令速查手册
  5. nginx http重定向https 无效_Golang设置https访问,以及http如何重定向到https
  6. leetcode 153. 寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array)
  7. 黑鲨官网装机大师工具如何制作u盘启动盘,u盘启动盘制作方法
  8. DOS命令tree的用法
  9. MySQL Order By 使用方法
  10. 电信悦meYMB0300-CW-卡刷-刷机固件
  11. C语言数据类型谜题总结
  12. NOIP 2018 提高组初赛试题 题目+答案+简要解析
  13. 理财入门书-小狗钱钱 -读书笔记
  14. 浏览器直接编辑html文件,HTML文件怎么打开 .html如何编辑
  15. Delphi变成小技巧——直接将excel当做表来显示
  16. Sun发布全球首款“统一存储系统”Storage7000
  17. [思想][励志]《真希望我20几岁就知道的事 What I Wish I Knew When I Was 20》 -- 蒂娜·齐莉格(美)...
  18. 抖音矩阵系统,抖音矩阵系统源码。抖音SEO源码。
  19. 易盾sdk引起项目的整体耗时问题?
  20. 【甄选资讯】你一定用得上的配色网站!

热门文章

  1. python图形编程pdf_Python计算机视觉编程
  2. CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理-通道选择(五)
  3. Tableau豆瓣电影项目实战作业 Day3
  4. win10蓝屏终止代码CRITICAL_PROCESS_DIED解决方法
  5. Android Looper
  6. 网易蜂巢简单学习笔记
  7. Android 视频旋转、缩放与回弹动效实现(二)
  8. 如何用Pact进行微服务集成测试
  9. 程序员表白代码大全,快来向你的ta表白吧~~~
  10. 项目笔记8(尚品汇)