一.数据仓库架构设计
- 简介
- 数据仓库的主要工作就是ETL,即是英文 Extract-Transform-Load 的缩写,用来描述数据从来源端经过装载(load)、抽取(extract)、转换(transform)至目的端的过程。数据仓库架构设计,即为公司针对自身业务场景实现的水平分层、垂直分主题的数据仓库构建过程的顶层设计。
- 数据架构
- 架构原则:先水平分层,再垂直分主题
- 数据仓库分层介绍(水平分层)
- 按主题划分(垂直分层)
二.数据仓库建模
- 概念
- 抽象的实体及实体之间联系,来表示现实世界中事务的相互关系的**一种映射. **
- 数据仓库建模即数据仓库模型的构建和应用过程。
- 数据仓库的发展历史和意义
- 发展阶段
- 简单报表阶段
- 数据集市阶段
- 数据仓库阶段
- 数据建模的意义
- 进行全面的业务梳理,改进业务流程
- 建立全方位的数据视角,消灭信息孤岛和数据差异
- 解决业务的变动和数据仓库的灵活性
- 帮助数据仓库系统本身的建设
- 发展阶段
- 如何构建数据模型
- 数据模型的层次一般划分
- 各层次说明
- 业务建模,生成业务模型,主要解决业务层面的分解和程序化。
- 领域建模,生成领域模型,主要是对业务模型进行抽象处理,生成领域概念模型。
- 逻辑建模,生成逻辑模型,主要是将领域模型的概念实体以及实体之间的关系进行数据库层次的逻辑化。
- 物理建模,生成物理模型,主要解决,逻辑模型针对不同关系型数据库的物理化以及性能等一些具体的技术问题。
- 构建方法
- 范式建模法
- 1NF : 字段不可拆分
- 2NF : 属性完全依赖主键
- 3NF : 消除依赖传递
- 维度建模法
- 星型模式
- 所有的维度直接关联事实表
- 雪花模式
- 可以有部分表没有直接关联到事实表
- 星型模式
- 两种模式的对比
- 相同点
- 雪花模型属于星形模型的扩展,属于星形模型。
- 都是围绕事实表、维度表展开模型构建,只是层次设计不尽相同。
- 不同点
- 雪花模型是对星型模型的扩展。
- 星型架构,数据有一定的冗余设计.
- 对比总结
- 数据规范性:雪花胜于星型
- 性能:雪花的表关联较多,并行性和计算性能上会低于性能上往往低于星型
- ETL开发:雪花关系多则关联多,代码量较复杂一些。而星型数据较集中,关联少,代码量会少一些。
- 实际使用,两者应用的均比较多,但星型略胜一筹。
- 相同点
- 范式建模法
- 实体建模法
- 实体建模法并不是数据仓库建模中常见的一个方法
- 源于哲学的一个流派。从哲学的意义上说,客观世界应该是可以细分的,客观世界应该可以分成由一个个实体,以及实体与实体之间的关系组成
三.数据分析
- 概念
- 数据分析是指用适当的统计分析(当下也包含机器学习等数据挖掘)的方法,对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。
- 专业术语
- OLTP
- 全称:on-line transaction processing。中文意思: 联机事务处理
- 其是数据库的主要应用,主要是执行基本日常的事务处理,如数据库记录的增删查改。比如在支付定或银行的一笔交易记录,就是一个典型的事务
- 主要特点
- 实时性要求高,操作完后立刻要能看到结果。
- 数据量不是很大
- 交易一般是确定的
- 高并发,并且要求满足ACID原则
- 数据库事务ACID四大特性
- 原子性(Atomicity)
- 整个事务中的所有操作,要么全部完成,要么全部不完成。
- 一致性(Consistency)
- 一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
- 隔离性(Isolation)
- 数据的处理是串行化
- 持久性(Durability)
- 在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚
- 原子性(Atomicity)
- OLAP
- 全称:On-Line Analytical Processing,中文意思为: 联机分析处理
- 数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态的报表系统。
- 主要特点
- 实时性要求不是很高
- 数据量大
- 重点是通过数据提供决策支持
- 总结
- 数据仓库的核心部件
- 所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能(BI)、决策支持等重要的决策信息
- 数据仓库是在数据库应用到一定程序之后而对历史数据的加工与分析,读取较多,更新较少
- OLTP发展到一定阶段后产生的OLAP
- OLTP
- hive对数据支持的分析
- Hive数据分析函数:分析函数、窗口函数、增强Group(用的极少,不做讲解)三类,及用于辅助表达的over从句。
- 分析函数
- NTILE 用于数据分片排序,不均匀的时候,依次增加前边分片序列的数量。3 3 2 2
- ROW_NUMBER 排序,不关心是否有相等情况 1 2 3 4 5
- RANK 排序,关心是否有相等情况,如遇到相等情况,名次会留下空位 1 2 2 4
- DENSE_RANK 排序,关心是否有相等情况,如遇到相等情况,名次不会留下空位 1 2 2 3 4
- 窗口函数
- LAG 用于统计窗口内往上第n行值
- LEAD 与LAG作用相反
- over()从句
- 与标准的聚合函数COUNT、SUM、MIN、MAX、AVG联用
- 可以将详细数据和聚合数据显示在同一张表