本文主要是介绍《Building the Data Warehouse》(数据仓库 第四版)拆书稿-关系模型(3NF范式建模)重要知识点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
拆书稿:《Building the Data Warehouse》(数据仓库 第四版)
最近复盘数据仓库的相关技术,在网上搜了好多关于数仓的帖子,看完之后就是感觉有肉无血,串不起来。因为好多都是介绍数仓的两种建模基本理论,但是付诸于实践的时候感觉还是无从下手。所以才决心整理一下自己这几年的数仓经验。分享给大家,刚开始写帖子,有需要改进的地方大家可以留言给我,或者有什么需要反馈的问题都可以给我留言或者评论。
阅读建议:全文可能比较长,建议先收藏在细读
前言
数据仓库可能大家非常熟悉的两位建模理论的创始人:William H.Inmon 和 Ralph Kimball,对应的 Inmon 主要的模型是:实体-关系模型, Kimball主导的模型是:维度模型
本片文章的目录:
0.数据库三范式回顾
1.《Building the Data Warehouse》的目录
2.全书摘要(个人见解)
3. 重要章节技术点详细讲解
第二章 数据仓库环境
粒度
分区
第三章 设计数据仓库
数据仓库与数据模型
规范化与反向规范化
元数据
数据周期
转换和集成
星形连接
四类ODS
第四章: 数据仓库中的粒度
第六章: 分布式数据仓库
第十三章 关系模型和多维模型数据库设计基础
4. 全书重点章节的脑图(由于图片比较长所以放在最后显示)
0.数据库三范式回顾
- 第一范式: 保证数据表的原子性,就是列不可再分,保证不会出现重复的列。是关系模式规范化的最低要求
- 第二范式: 表的非主属性完全依赖于主关键字,就是属性依赖于主键。保证不会出现重复的行
- 第三范式: 所有的非主属性依赖于主键,只能存在这一种依赖关系。(例如: 表字段:学号,姓名,班级,系名称,系主任;其中系名称和系主任存在新的函数依赖,并且不依赖与主键学号,所以不满足第三范式)
1.《Building the Data Warehouse》的目录
2.全书摘要
建造数据仓库,开始于粒度和分区的设计,基于数据模型和ETL的流程控制才能完成。如果开发者想着大多数需求都明了之后才开始工作,那么这个仓库是永远建不起来的。所以,数据仓库环境中反馈循环非常重要,在各方用户和DSS分析员的反馈信息推动下循环调整才能使这个仓库越来越健壮。
3.重要章节技术点详细讲解
第二章 数据仓库环境
数据仓库定义: 一个面向主题的,集成的,非易失的,随时间变化的用来支持管理人员决策的数据集合。
数据仓库是体系化环境的核心,是决策支持系统处理的基础
数据仓库面向在高层企业数据模型中已经定义好的企业主题域。典型的主题域有:
- 顾客
- 产品
- 交易或活动
- 政策
- 索赔
- 账目
粒度: 指的是数据仓库中数据单元的细节程度或者综合程度的级别,细节程度越高,粒度级别就越低,细节程度越低,粒度级别就约高。
(个人思考:基于大数据时代背景,存储成本越来越低,分布式技术越来越成熟。在选取粒度时可以直接选取最低的粒度级别。便于后续的数据分析和数据建模)
双重粒度: 可以提高存储和访问数据的效率。
(个人理解: 双重粒度就是指数据粒度分层;例如:数据可以分为明细层和汇总层。根据查询需求从不同的数据粒度层级检索数据。可以做到快速响应和灵活提取)
分区:是指把数据分散到可独立处理的分离物理单元中去。在数据仓库中不应该考虑是不是该分区的问题,而是如何实现分区的问题
为何分区? 因为在运维人员和设计者在管理小的物理单元是要比管理大的物理单元时享有的更大的灵活性,并且在大的物理单元中进行重构,索引,全局扫描,监控的问题时无法轻松的进行。
一般的分区标准:
- 时间(是常用且必然的组成部分)
- 业务范围
- 地理位置
- 组织单位
若粒度和分区都处理的很好的话,数据仓库的设计与实现的其他问题几乎都很容易解决
数据清理: 数据在数据仓库中有自己的生命周期,所以数据清理也是数据仓库设计过程中比较重要的一部分。一般的数据清理分为两类: 1.改变存储介质,将数据压缩备份或者从高性能介质转移到大容量介质;2.真正的清除数据
数据仓库中的错误数据处理:
(个人经验:对于上述的异常数据,一般会采取方法一来解决,但是要比方法一更复杂一些。因为5000元的这笔账目就是脏数据,那么是不应该存在于数据仓库环境中的,在进入7月2日的数据集完成修改后,为了保证数据一致性,通常会将所有牵连的数据集进行重新计算,并且计算周期应该从7月2日到8月15日)
第三章 设计数据仓库
任何情况下,数据仓库都应当以迭代的方式进行建造
a. 数据仓库与数据模型
数据建模分为三个层次: 高层建模(实体关系图,或者ERD),中间层建模(数据项集成或DIS),底层建模(称为物理模型)
b. 规范化与反向规范化
数据模型处理的输出是一系列表,每个表都有主键和属性。有以下设计技术可以提高模型可用性:
1 合并表,节省I/O,将表归类进行物理合并 ,使I/O代价最小化
2 创建数据数组,在表数据稳定,规范,并是按顺序访问时可以创建数据数组
3 有意引入冗余数据,减少表间关联的访问开销
4 根据访问频率可以将表进行拆分
5 建立创造性索引(创造性概要文件)
根据用户感兴趣的统计需求,或者数据维度筛选有特征的数据集形成概要文件
6 参照完整性管理:在操作型环境中,参照完整性表现为数据表之间的动态链接。
c.元数据
定义:关于数据的数据
一般,元数据存储对一下各项进行了记录:
- 程序员所知的数据结构
- DSS分析员所知的数据结构
- 数据进入数据仓库时进行的转换
- 数据模型
- 数据模型和数据仓库的关系
- 抽取数据的历史记录
d.数据周期:
是指从操作型环境中的数据发生变化起,到这个变化反映到数据仓库中所用的时间,以24小时的时间间隔以现有技术来说比较容易实现(T+1)
e.转换和集成(从操作型环境到数据仓库)
- 1 数据格式进行转化(比如:时间统一转成 YYYYMMDD格式 进行一致性处理,具有相同含义的数据项进行译码,编译统一的,一直的全局度量标准。(例如:性别,可能在不同的数据来源中表现方式有0/1或者m/f或者x/y,进入数据仓库后进行一致编码:0/1))
- 2 数据清理: 取值范围检查、交叉记录验证、简单的格式检验
- 3 是否存在数据依赖
- 4 记录数据的转化,重命名,筛选等操作变化的文档
- 5 数据编码的转换
f.星形连接
用来管理载入数据集市中某个实体的大量数据的设计结构称为星形连接。类似于事实表关联多个维度表,事实表代表发生的事件,维度表是事实表外键的所属实体的详细描述。星形连接普遍是存在于数据集市层,并且一般设计过程中事实表会存储大部分编码,维度表中会存储编码对应的中文。
g.数据仓库和数据集市的关系
数据仓库中的数据是粒度化的,数据集市中的数据是紧凑和综合的,数据必须周期性的从数据仓库流向数据集市。
数据集市是否可以替代数据仓库? 答案是否!
数据集市虽然开发周期短,在短时间内可以看到效果,但是从长远角度看,数据集市永远不可能替代数据仓库。
- 数据集市是按照需求定制化建立的,代表的数据价值只局限于需求的边界范围内
- 针对性较强,可能在市场,营销,账务等业务线的数据集市都是不同的。不可重用,没有灵活性。并且容易产生数据孤岛,数据价值表现的很局限
- 数据集市的种类统计粒度可能不同,不利于数据分析
h.四类ODS:(根据更新的时间间隔)
- 第一类:从操作型到ODS数据更新是同步进行
- 第二类:从操作型到ODS数据更新是有2-3小时的间隔
- 第三类:从操作型到ODS数据更新的同步是在夜间完成
- 第四类:从数据仓库到ODS的更新是不预先规划的
第四章: 数据仓库中的粒度
a.粗略估算存储大小:
b. 确定粒度级别,全靠经验或者一般都是最细粒度
c. 反馈循环
类比于PDCA循环,在第一版数据仓库建造完成后,收集用户反馈意见,并根据意见进行调整
第六章: 分布式数据仓库
类型:
- 1 局部数据仓库和全局数据仓库: 业务是在不同地域或者不同生产线上进行的
- 2 技术上分布的数据仓库, 逻辑上是一个整体数据仓库,物理上有多个处理器进行并行计算(hive)
- 3 独立演进的分布式数据仓库
第十三章 关系模型和多维模型数据库设计基础
关系模型: 通过使用关键字和外键在不同行的数据间建立关联,数据是非冗余的
最大优势: 灵活性, 其次: 多功能性,支持多种视图,具有适度变化的能力。
多维模型: 也叫星形连接,以事实表为中心,维度表外围,建立的星形连接
最大优势: 访问的高效性,适合用户直接访问
二者对比总结:
数据的生命周期
一般会通过访问频率判断,如果数据长时间不被访问或者已经经过2-3时间,除非业务需要,一般情况会将数据“归档”
归档: 表数据一般会直接进行数据库侧的日志文件备份,然后清理表的历史数据
3.重要章节脑图显示
这篇关于《Building the Data Warehouse》(数据仓库 第四版)拆书稿-关系模型(3NF范式建模)重要知识点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!