【阿里巴巴大数据实践笔记】第10章:维度设计
维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实” ,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。
维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源。
例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。
维度的作用一般是查询约束、分类汇总以及排序等。
如何获取维度或维度属性?如上面所提到的,一方面,可以在报表中获取;另一方面,可以在和业务人员的交谈中发现维度或维度属性。因为它们经常出现在查询或报表请求中的“按照”( by )语句内。
维度使用主键标识其唯一性 。主键有两种:代理键和自然键,它们都是用于标识某维度的具体值。但代理键是不具有业务含义的键, 一般用于处理缓慢变化维;自然键是具有业务含义的键。
维度的基本设计方法
第一步:选择维度或新建维度。 在企业级数据仓库中必须保证维度的唯一性。
第二步:确定主维表。此处的主维表一般是 ODS 表,直接与业务系统同步。
第三步:确定相关维表。
第四步 :确定维度属性。 第一个阶段是从主维表 中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。
维度的层次结构
维度中的一些描述属性以层次方式或一对多的方式相互关联 。层次的最底层代表维度中描述最低级别的详细信息,最高层代表最高级别的概要信息。维度常常有多个这样的嵌入式层次结构。
规范化和反规范化
当属性层次被实例化为一系列维度,而不是单一的维度时,被称为雪花模式。大多数联机事务处理系统( OLTP )的底层数据结构在设计时采用此种规范化技术,通过规范化处理将重复属性移至其自身所属的表中,删除冗余数据。这种方法用在 OLTP 系统中可以有效避免数据冗余导致的不一致性。
将维度的属性层次合并到单个维度中的操作称为反规范化。分析系统的主要目的是用于数据分析和统计,
采用雪花模式,用户在统计分析的过程中需要大量的关联操作,使用复杂度高,同时查询性能很差;而采用反规范化处理,则方便、易用且性能好。
采用 雪花模式,除了可以节约一部分存储外,对于 OLAP 系统来说没有其他效用 。 而现阶段存储的成本非常低。出于易用性和性能的考虑,维表一般是很不规范化的 。
11.7 聚集型事实表
聚集主要是通过汇总明细粒度数据来获得改进查询性能的效果。通过访问聚集数据,可以减少数据库在响应查询时必须执行的工作量,能够快速响应用户的查询,同时有利于减少不同用户访问明细数据带来的结果不一致问题。
相关文章
- WWDC15 Session笔记 - 30 分钟开发一个简单的 watchOS 2 app
- 操作系统概念学习笔记 1 加电引导过程
- 【大数据和云计算技术社区】分库分表技术演进&最佳实践笔记
- 南大《探索数据的奥秘》课件示例代码笔记03
- 南大《探索数据的奥秘》课件示例代码笔记12
- 机器学习笔记 - 在Vehicles数据集上训练 YOLOv5 目标检测器
- 机器学习笔记 - 探索性数据分析(EDA) 学习进阶
- STM32H7的CAN FD教程笔记
- 【Android笔记49】Android中几种常见的数据适配器的使用(ArrayAdapter、BaseAdapter、SimpleAdapter)
- 【Android笔记32】Android中数据存储技术之SQLite事务操作以及存储大文件
- 【Android笔记31】Android中数据存储之SQLite数据库(Cursor、execSQL、rawQuery)
- 【Android笔记30】Android中数据存储之SQLite数据库
- 【SpringBoot笔记17】SpringBoot集成Actuator依赖获取应用程序监控信息
- AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟
- Mybatis 模糊查询 like【笔记】Could not set parameters for mapping
- SpringBoot学习笔记(6) SpringBoot数据缓存Cache [Guava和Redis实现]
- 笔记:知数据不知情况
- 大数据开发笔记(七):Kafka分布式流式处理
- 大数据开发笔记(六):Flume基础学习
- 大数据开发笔记(五):Zookeeper
- 深度学习笔记:在小数据集上从头训练卷积神经网络
- Pytorch模型训练实用教程学习笔记:一、数据加载和transforms方法总结
- 【学习笔记】C++ 编程规范——101条规则、准则与最佳实践
- Docker笔记 | 常用命令指南
- Matlab使用笔记(十一):simulink模型仿真的时序数据类:timeseries
- 学习笔记(05):Python爬虫开发-数据解析