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