维度数据模型

  • 维度数据模型建模过程
    • 1. 选择业务流程
    • 2. 声明粒度
    • 3. 确认维度
    • 4. 确认事实
  • 维度规范化
  • 维度数据模型的特点
    • 参考资料

维度数据模型简称 维度模型(Dimensional modeling, DM),是一套技术和概念的集合,用于数据仓库设计。不同于关系数据模型,维度模型不一定要引入关系数据库。 在逻辑上相同的维度模型,可以被用于多种物理形式,比如维度数据库或是简单的平面文件。根据数据仓库大师Kimball的观点, 维度模型是一种趋向于支持最终用户对数据仓库进行查询的设计技术,是围绕性能和易理解性构建的。尽管关系模型对于事务处理系统表现非常出色,但它并不是面向最终用户的。

事实维度是两个维度模型中的核心概念。事实表示对业务数据的度量,而维度是观察数据的角度。事实通常是数字类型的,可以进行聚合和计算,而维度通常是一 组层次关系或描述信息,用来定义事实。 例如,销售金额是一个事实,而销售时间、销售的产品、购买的顾客、商店等都是销售事实的维度。维度模型按照业务流程领域即主题域建立,例如进货、销售、库存、配送等。不同的主题域可能共享某些维度,为了提高数据操作的性能和数据一致性,需要使用一致性维度,例如几个主题域间共享维度的复制。术语“一致性维度”源自Kimball,指的是具有相同属性和内容的维度。

维度数据模型建模过程

维度模型通常以一种被称为星型模式的方式构建。所谓星型模式,就是以一个事实表为中心,周围环绕着多个维度表。还有一种模式叫做雪花模式,是对维度做进一步规范化后形成的。本节后面会讨论这两种模式。一般使用下面的过程构建维度模型:

  1. 选择业务流程
  2. 声明粒度
  3. 确认维度
  4. 确认事实

这种使用四步设计法建立维度模型的过程,有助于保证维度模型和数据仓库的可用性。

1. 选择业务流程

确认哪些业务处理流程是数据仓库应该覆盖的,是维度方法的基础。因此,建模的第一个步骤是描述需要建模的业务流程。例如,需要了解和分析一个零售店的销售 情况,那么与该零售店销售相关的所有业务流程都是需要关注的。为了描述业务流程,可以简单地使用纯文本将相关内容记录下来,或者使用“业务流程建模标 注”(BPMN)方法,也可以使用统一建模语言(UML)或其他类似的方法。

2. 声明粒度

确定了业务流程后,下一步是声明维度模型的粒度。这里的粒度用于确定事实中表示的是什么,例如,一个零售店的顾客在购物小票上的一个购买条目。在选择维度 和事实前必须声明粒度,因为每个候选维度或事实必须与定义的粒度保持一致。在一个事实所对应的所有维度设计中强制实行粒度一致性是保证数据仓库应用性能和易用 性的关键。从给定的业务流程获取数据时,原始粒度是最低级别的粒度。建议从原始粒度数据开始设计,因为原始记录能够满足无法预期的用户查询。汇总后的数据粒度 对优化查询性能很重要,但这样的粒度往往不能满足对细节数据的查询需求。不同的事实可以有不同的粒度,但同一事实中不要混用多种不同的粒度。维度模型建立完成 之后,还有可能因为获取了新的信息,而回到这步修改粒度级别。

3. 确认维度

设计过程的第三步是确认模型的维度。维度的粒度必须和第二步所声明的粒度一致。维度表是事实表的基础,也说明了事实表的数据是从哪里采集来的。典型的维度都是名词,如日期、商店、库存等。维度表存储了某一维度的所有相关数据,例如,日期维度应该包括年、季度、月、周、日等数据。

4. 确认事实

确认维度后,下一步也是维度模型四步设计法的最后一步,就是确认事实。这一步识别数字化的度量,构成事实表的记录。它是和系统的业务用户密切相关的,因为 用户正是通过对事实表的访问获取数据仓库存储的数据。大部分事实表的度量都是数字类型的,可累加,可计算,如成本、数量、金额等。

维度规范化

与关系模型类似,维度也可以进行规范化。对维度的规范化(又叫雪花化),可以去除冗余属性,是对非规范化维度做的规范化处理,在下面介绍雪花模型时,会看 到维度规范化的例子。一个非规范化维度对应一个维度表,规范化后,一个维度会对应多个维度表,维度被严格地以子维度的形式连接在一起。实际上,在很多情况下, 维度规范化后的结构等同于一个低范式级别的关系型结构。

设计维度数据模型时,会因为如下原因而不对维度做规范化处理:

  • 规范化会增加表的数量,使结构更复杂。
  • 不可避免的多表连接,使查询更复杂。
  • 不适合使用位图索引。
  • 查询性能原因。分析型查询需要聚合计算或检索很多维度值,此时第三范式的数据库会遭遇性能问题。如果需要的仅仅是操作型报表,可以使用第三范式,因为操 作型系统的用户需要看到更细节的数据。

正如在前面关系模型中提到的,对于是否应该规范化的问题存在一些争论。总体来说,当多个维度共用某些通用的属性时,做规范化会是有益的。例如,客户和供应 商都有省、市、区县、街道等地理位置的属性,此时分离出一个地区属性就比较合适。

维度数据模型的特点

  • 易理解。相对于规范化的关系模型,维度模型容易理解且更直观。在维度模型中,信息按业务种类或维度进行分组,这会提高信息的可读性,也方便了对于数据含义的解释。简化的模型也让系统以更为高效的方式访问数据库。关系模型中,数据被分布到多个离散的实体中,对于一个简单的业务流程,可能需要很多表联合在一起才能表示。
  • 高性能。维度模型更倾向于非规范化,因为这样可以优化查询的性能。 介绍关系模型时多次提到,规范化的实质是减少数据冗余,以优化事务处理或数据更新的性能。维度设计的整体观点是要简化和加速查询。
  • 可扩展。维度模型是可扩展的。由于维度模型允许数据冗余,因此当向一个维度表或事实表中添加字段时,不会像关系模型那样产生巨大的影响,带来的结果就是更容易容纳不可预料的新增数据。这种新增可以是单纯地向表中增加新的数据行而不改变表结构,也可以是在现有表上增加新的属性。基于数据仓库的查询和应用不需 要过多改变就能适应表结构的变化,老的查询和应用会继续工作而不会产生错误的结果。但是对于规范化的关系模型,由于表之间存在复杂的依赖关系,改变表结构前一 定要仔细考虑。

参考资料

[Book]Hadoop构建数据仓库实践, 第2章第2节 —— 维度数据模型

[数据仓库复习] —— 维度数据模型相关推荐

  1. 【商务智能】数据仓库 ( 多维数据模型 | 多维数据分析 )

    商务智能系列文章目录 [商务智能]数据预处理 [商务智能]数据仓库 ( 多维数据模型 | 多维数据分析 ) 文章目录 商务智能系列文章目录 前言 一.数据仓库 与 传统数据库 区别 二.数据仓库系统体 ...

  2. 漫谈数据仓库之维度建模

    2019独角兽企业重金招聘Python工程师标准>>> 0x00 前言 下面的内容,是笔者在学习和工作中的一些总结,其中概念性的内容大多来自书中,实践性的内容大多来自自己的工作和个人 ...

  3. 聊聊数据仓库中维度表设计的二三事

    前言 大家好,我是云祁!今天和大家聊聊数据仓库中维度表设计的那些事. 维度表是维度建模的灵魂所在,在维度表设计中碰到的问题(比如维度变化.维度层次.维度一致性.维度整合和拆分等)都会直接关系到维度建模 ...

  4. 基于数据仓库和维度转换技术的广东电信公话IC话机话务动态分析系统

    本文发表于期刊<天津通信技术>2003年4期. 基于数据仓库和维度转换技术的广东电信公话IC话机话务动态分析系统 马根峰 (广东电信公用电话管理中心 广州 510635) 摘要   在电信 ...

  5. 【读书笔记】数据仓库工具箱 维度建模指南

    用信息来支持更有事实依据的决策制定过程. 业务人员复杂的思考过程   能在系统上直观的通过数据.比大小的方式判断 (政企圈的号码识别(可能会考虑很多情况)最后给个指数) 数据内容在标识方面应该是见名知 ...

  6. 数据建模_漫谈数据仓库之维度建模

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多惊喜 大数据技术与架构点击右侧关注,大数据开发领域最强公众号! 大数据真好玩点击右侧关注,大数据真好玩! ...

  7. 我与数据仓库那些事-数据模型

    数据仓库-数据模型 大数据领域建模综述 典型的数据仓库建模方法论 **ER模型** **维度模型** **Data Vault 模型** **Anchor 模型** 指标体系 模型层次 业界常用的模型 ...

  8. 数据仓库架构以及数据模型的设计

    1.什么是数据仓库? 权威定义:数据仓库是一个面向主题的.集成的.相对稳定的.反映历史变化的数据集合,用于支持管理决策. 1)数据仓库是用于支持决策.面向分析型数据处理: 2)对多个异构的数据源有效集 ...

  9. [数据仓库复习] 数据仓库架构

    数据仓库架构 基本架构 主要数据仓库架构 1. 数据集市架构 2. Kimball数据仓库架构 3. 混合型数据仓库架构 操作数据存储 参考资料 基本架构 "架构"是什么?这个问题 ...

最新文章

  1. ASP.NET MVC (一)
  2. How to make Windows Form app truly Full Screen (and to hide Taskbar) in C#? 转
  3. typedef的用途
  4. [react] 举例说明React的插槽有哪些运用场景
  5. 场景应用题目常见面试真题详解
  6. openlayers之EPSG3857
  7. C++析构函数为什么要为虚函数?
  8. 一行一行分析JQ源码学习笔记-03
  9. iOS开发:2分钟快速集成支付宝快捷支付
  10. 系泊系统悬链线matlab,系泊系统的设计.docx
  11. 2020计算机专业本科毕业论文题目,计算机专业本科学生毕业论文题目(仅供参考)...
  12. HMM和DNN语音合成必备基础知识:音素和拼音的基础知识及工具初学
  13. 数字图像处理 第五章图像复原与重建
  14. 爪哇国新游记之三十三----目录文件操作
  15. RISC-V E300 SOC架构介绍——1.总体介绍
  16. 10. 项目沟通管理与干系人管理
  17. 计算机毕业答辩程序无法运行,计算机专业毕业答辩程序
  18. 基于Greenplum构建下一代数据分析平台
  19. 研究生应当常去的网站
  20. SnowNLP使用自定义语料进行模型训练(情感分析)

热门文章

  1. C语言程序设计笔记(浙大翁恺版) 第九周:指针
  2. Flowable 服务任务执行的三种方式
  3. 安卓开发 监听虚拟按键_Android 虚拟按键适配动态调整布局的方法
  4. Arduino入门(一)
  5. unity滑动屏幕旋转物体
  6. 指令下载Google网盘数据遇到的无法连接问题
  7. mapbox-gl添加threejs飞线
  8. Keil出现Error:Flash Download failed - Could not load file
  9. 阿里滑块 x82y x5sec本地dll 易语言
  10. Web Services Ksoap 下载多张图片