大数据建设中选择数据模型的好处
- 性能: 良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐
- 成本: 良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本。
- 效率: 良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。
- 质量: 良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。
OLTP与OLAP系统的区别
OLTP系统(OnLine Transaction Processing): 通常面向的主要数据操作是随机读写,主要采用满足3NF的实体关系模型存储数据,从而在事务处理中解决数据的冗余和一致性问题。简而言之,OLTP用于存储和管理日常运营的数据。
OLAP系统(OnLine Analytical Processing): 通常面向的主要数据操作是批量读写,事务处理中的一致性不是OLAP所关注的,其主要关注数据的整合,以及在一次性的复杂大数据查询和处理中的性能。通常涉及到那些存储和管理与分析和决策相关的数据的数据库。
维度建模的过程
- 收集业务需求与数据实现
- 协作维度建模研讨
- 维度设计过程
(1) 选择业务过程:业务过程是组织完成的操作型活动,定义了特定的设计目标以及对粒度,维度,事实的定义。
(2) 声明粒度:粒度用于确定某一事实表中的行表示什么。在选择维度或者事实前必须声明粒度,因为每个候选维度或事实必须与定义的粒度保持一致。针对不同的事实表粒度,要建立不同的物理表,在同一事实表中不要混用多种不同的粒度。
(3) 确认维表:维度提供围绕某一业务过程事件所涉及的“谁,什么,何处,何时,为什么,如何”等背景。包含确保DW/BI系统能够被用作业务分析的入口和描述性标识。
(4) 确认事实:事实表对应一个物理可观察的事件。所有事实只允许与声明的粒度保持一致。
星型模式与雪花型模式
星型模式是部署在关系数据库管理系统之上的多维结构。主要包含事实表,以及通过主键/外键关系与之关联的维度表(如下图一)。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个大宽表。表可读性比较好,不用关联多个表就能获取大部分核心信息,设计维护相对比较简答。在数据仓库分层结构中一般为仓库层或应用层的表结构
雪花模型是对星型模型的扩展,它对星型模型的维表进一步层次化(如下图二),原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。去除了数据的冗余性,最大限度地减少数据存储量以及联合较小的维表来改善查询性能,比较符合数据库范式的理念。在关系型数据库中如MySQL,Oracle中非常常见
星型与雪花的使用选择
参考文献
理解数据仓库中星型模型和雪花模型
星型模型和雪花型模型比较
雪花与星型