数仓
概念
面向主题的、集成的、相对稳定的,反应历史变化的数据集合,用于支持决策管理。
数据通道:负责做数据集成的, 帮各个系统的数据连接进来。
ETL:抽取转换加载
面向主题
在较高层次上将企业信息系统的数据综合归并进行分析利用的抽象的概念。每个主题基本上对应一
个相应的分析领域。
集成的
企业级数据,同时数据要保持一致性、完整性、有效性、精确性
稳定的
从某个时间段来看是保持不变的,没有更新操作、删除操作,以查询分析为主
变化的
反应历史变化
数据库的区别:
数据库是长期储存在计算机内、有组织的、可共享的数据集合。
数据库中的数据指的是以一定的数据模型组织、描述和储存在一起。
具有尽可能小的冗余度、较高的数据 独立性和易扩展性的特点并可在一定范围内为多个用户共享。
功能 | 数据仓库 | 数据库 |
---|---|---|
数据范围 | 存储历史的、完整的、反应历史变化的数据 | 当前状态的数据 |
数据变化 | 可添加、无删除、无变更的、反应历史变化 | 支持频繁的增、删、改、查操作 |
应用场景 | 面向分析、支持战略决策 | 面向业务交易流程 |
设计理论 | 不遵守范式、适当冗余 | 遵照范式、避免冗余 |
处理量 | 非频繁、批量大、高吞吐、有延迟 | 频繁、批量小、高并发、低延迟 |
面向业务的数据库常称作OLTP,面向分析的数据仓库亦称为OLAP
数仓建模目标
访问性能: 能够快速查询所需的数据,减少数据I/O
数据成本: 减少不必要的数据冗余,实现计算结果数据复用,降低大数据系统中的存储成本和计算成本
使用效率: 改善用户应用体验,提高使用数据的效率
数据质量: 改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的、一致的数据访问平台
数据仓库建模理论
ER实体模型
将事务抽象成“实体Entity”、“关系Relationship”、”属性“来表示数据的关系和事物描述
实体之间建立关系对照
1对1 例如实体人和身份证 一个实体人有且仅有一个身份证
1对多 例如学生和班级 一个学生属于一个班级,但是一个班级对应多个学生
多对多 例如学生对应课程 一个学生可以选择多个课程 而一个课程对应多个学生
纬度建模
对数据集市的纬度建模将数据仓库中的表区分为事实表、纬度表两种类型
事实表
ER模型中抽象出了实体、关系、属性三种类别。在现实世界中,每个操作形事件都是发生在实体于实体之间的,伴随这种操作的发生,会产生可度量的值,而这个过程就产生了一张事实表,存储了每个可度量的事件。 例如:一次购买事件涉及的主体:商家、商品、顾客 可度量的值包含商品数量、金额
纬度表
纬度-看待事物的角度; 比如从颜色尺寸来比较手机外观。
纬度表一般为单一主键, 在ER模型中,实体为客观存在的事物,会带有自己的描述性属性,属性一般为文本性、描述性的。这些描述被称为纬度。
DataVaule建模
需求分析
- 数据采集平台
业务数据、日志数据、行为数据、Flume - 数据仓库分层
阿里的《大数据之路》
ODS: Operation Data Store 原始操作数据层
DWD: Data Warehouse Detail 数据明细层存放原始数据
DWS: Data Warehouse Service 数据服务层对ODS数据进行清洗(去除空值、脏数据、范围超限数据,行存储改为列存储)
ADS: Application Data Store 数据应用层以DWD为基础进行轻度汇总
为上层服务提供封装数据
分层原因:
1. 解耦;
2. 减少重复开发;
3. 清晰明了;
数仓命名规范
ODS层命名为ods开头
DWD层命名为dwd开头
DWS层命名为dws开头
ADS层命名为ads开头
临时库表命名为xxxxx_tmp
备份库表命名为xxxxx_bak
架构设计
日志文件->flume->HDFS->Hive(ODS,DWD,DWS,ADS)->MySql