数据建模
1.1 什么是建模
在设计数据库时,对现实世界进行分析、抽象、并从中找出内在联系,进而确定数据库的结构。
1.2 建模在系统中的作用
数据采集、业务处理、数据分析、数据挖掘、数据展现、数据应用、信息管理
1.3 模型技能要求
经验、架构、工具、理论、应用场景
2 业务系统建模
2.1 什么是业务系统 -- OLTP
ERP、网站、物流、淘宝交易、银行柜台
On-Line Transaction Processing 在线处理过程
也成为面向交易的处理过程,基本特征是前台接收用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结构,是对用户操作快速响应的方式之一。
2.2 原始数据
2.2.1 一范式建模
列的原子性:即列不能够再分成其他几列。
2.2.2 二范式建模
行记录唯一性:首先是1NF,一是表必须有一个主键,二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖主键的一部分
联合主键:多个列组成的主键,例员工ID和部门ID作为联合主键,部门描述依赖联合主键。
2.2.3 三范式建模
主键唯一依赖,首先时2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖
对上面的表进行拆分,查询时利用部门ID进行关联
员工表:
部门表:
一是加快数据查询速度,二是减少数据查询复杂度,三是降低数据冗余。
2.2.4 三范式案例
2.2.5 OLTP特点
用于支持业务过程的执行
用来协助企业对响应事件或事务的日常商务活动进行处理。
事件驱动、面向应用的,通常是对一个或一组记录的增、删、改以及简单查询等
应用程序和数据是紧紧围绕着所管理的事件来构造的
数据库要求能支持日常事务中的大量事务,用户对数据的存取操作频率高而每次操 作处理的时间短
2.2.6 接口开发方式
数据库直连
API
FTP文件
2.2.7 大数据量查询优化
按月建表
T-1天数据汇总 + T日实时查询数据
三范式 --> 二范
3 数据仓库维度建模
星型模型
事实表 & 维度表
事实表:度量 & 键值
维度表:维度 & 属性
星型模型 vs 三范式建模
星型模型的优势
星型模型的应用-OLAP分析系统
雪花模型
雪花模型 vs 星型模型
3.1 星型模型
3.2 优势劣势
优势:查询方便、性能提高
劣势:空间换时间、数据移动、非实时
3.3 星型模型的应用
数据仓库、OLAP分析查询系统数据模型
3.4 雪花模型
3.5 星型模型 VS 雪花模型
4 数据仓库体系架构
4.1 数据仓库概念
对数据仓库所下的定义:数据仓库是面向主题的、集成的、稳定的、反应历史变化 的数据集合,用以支持管理决策。
面向主题:销售、财务、人力资源、物流
集成的:用友、金蝶、excel、EAI…
稳定的:不会实时改变,定期批量更新,查询为主
反映历史变化的:有时间戳,变化内容有记录
支持决策:销售分析、业绩排序等
4.2 数据仓库体系架构
4.3 Staging, ODS, DW, Data Mart4
Staging:数据直抽,与源系隔离
ODS:(Operational Data Storage)
数据清洗、整合
近期明细数据查询
DW:统一、集成、稳定、反应历史变化,支持决策
明细数据
Mini Batch
T-1天数据+实时数据
分布式系统架构
Data Mart:个性化数据应用
4.4 数据仓库应用相关概念
4.4.1 ETL
Extract, Transformation, Load,包括:数据抽取(Data extract)、数据转换 (Data Transformation)、数据清洗(Data cleaning)和数据装载(Data Load)
1 Extract数据抽取:
数据仓库按照主题组织数据,只抽取系统分析需要的数据(多个数据源、按照系统抽取、添加 源系统标志、抽取时间)
1.抽取特定的数据、不影响业务系统的性能(方式、时机、频率)
2.增量抽取、全量抽取
3.oracle、xml、txt、csv、dbf、excel
2 Transform数据转换
1. 不同字段类型、格式等需要统一
2. 数据计算、汇总、内容转换
3. 添加新的属性数据等
3 Cleansing数据清洗:
将错误的、不一致的数据在进入数据仓库之前予以更正或删除,以免影 响系统决策的正确性。
4 数据加载:
负责将数据按照物理数据模型定义的表结构装入数据仓库。
增量加载(交易记录)
全量覆盖(员工权限表)
更新追加(客户收益信息)
5 维度
多维数据集的结构性特性。
它们是事实数据表中用来描述数据的分类的有组织层次结构(级别)。这些分类和级别描述了一 些相似的成员集合,用户将基于这些成员集合进行分析。
6 粒度
级别
是维度层次结构的一个元素。级别描述了数据的层次结构,从数据的最高(汇总程度 最大)级别直到最低(最详细)级别
7 事实表
通过外键与维度表进行关联
很多时候没有单一主键,而是使用外键组合作为事实表的联合主键
外键上通常需要建索引,加快查询速度
包含大量的行
主要特点是包含度量,且这些度量可以汇总
理论上讲事实表不应该包含描述性信息,也不应该包含除数字度量字段及使事实与纬度表中对 应项的相关索引字段之外的任何数据
8 指标、度量
在多维数据集中,度量值是一组值,这些值基于多维数据集的事实数据表中的一列,而且通常 为数字。
度量值是所分析的多维数据集的中心值。即,度量值是最终用户浏览多维数据集时重点查看的 数字数据。您所选择的度量值取决于最终用户所请求的信息类型。常见度量值有 sales、cost、 expenditures
事实表当中的度量大多数情况下都不会超过十个 同一个粒度的数据不一定就会放在同一张表当中(实时交易价格 / 最终收盘价格)
5 OLAP的特点
用于管理人员的决策分析,例如DSS、 EIS和多维分析等。
它帮助决策者分析数据以察看趋向、判断问题。
分析型处理经常要访问大量的历史数据,支持复杂的查询。
在分析型处理中,并不是对从事务型处理环境中得到的细节数据进行分析。细节数据量太大, 会严重影响分析的效率,而且太多的细节数据不利于分析人员将注意力集中于有用的信息。
分析型处理过程中经常用到外部数据,这部分数据不是由事务型处理系统产生的,而是来自于 其他外部数据源。
6 OLAP VS OLTP
7 数据仓库建模代理健
7.1 代理健
定义::当资料表中的候选键都不适合当主键时,(例如资料太长,或是意义层面太多,就会用 一个attribute来当代理主键)来代替可辨识唯一值的主键。
-OLTP流水号
-DW 一般是指维度中使用顺序分配的整数值作为主键
7.2 代理键的作用与好处
-对OLTP系统当中相同业务含义,对不同表示方法的数据进行整合。
-提升性能
1.整型数字通常比业务主键小,提升IO读取效率
2.事实表与维度表关联效率提高
-用于处理缓慢变化维
-可以将一个模型套用在多个类似的项目当中
7.3 代理健的缺点
-增加数据加载的复杂度
-无法通过事实表看到相关维度的业务含义
7.4 代理健的实现方法
-oracle序列
-ETL工具当中的序列
-配一张代理键表,记录下一个代理键的值,然后结合开发程序使用
1.代替序列记录没一张表的最大代理键的值,使用时,通过查询此值后 使用变量为每一个 新增记录分配连续的不断增大的代理键。
2.好处:数据库迁移或更换ETL工具时无需担心seq出问题的情况
3.坏处:难度提高,使用复杂
8 缓慢变化维的概念及产生原因
8.1 缓慢变化维 Slowly Changing Dimensions SCD
8.2 产生原因: 维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化
8.3 缓慢变化维—Type1直接覆盖
-优点:实现容易
-缺点:无法分析历史变化
-处理方法:根据维度表的业务主键直接更新
-使用场景:无需保留历史信息,只需要保存当前信息时使用
8.4 缓慢变化维—Type2 产生维度变化时添加新记录
-特点:需要代理键的支持
-处理方法:当维度属性发生变化时生成一条新的维度记录
8.5 缓慢变化维—Type3
-Type 3:通过添加属性记录最新的维度属性以及之前一条的维度属性
1.特点:对需要分析的历史信息添加属性
2.优点:同时分析单签及上一次变化的属性值
3.缺点:只保留了最后一次变化信息
8.6 缓慢变化维—Type6
-结合了Type1的更新
-结合了Type2的新插入数据
-结合了Type3的保留上一次记录
-衍生出保留全部历史记录