数据仓库笔记
数据仓库的定义
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
数据仓库是一个将源系统数据抽取、清洗、规格化、提交到维度数据存储的系统,为决策的制定提供查询和分析功能的支撑与实现。
数据仓库的发展
发展阶段
1、开源为主、离线处理、数据量小。
2、开源+自研、离线+实时处理、元数据管理完善。
3、自研为主、完善的数仓理论基础和外围工具、完善的数据共享机制/权限管理。
发展趋势
- 平台智能化。
- 离线实时一体化。
- 数据膨胀。
数据仓库的层级
数据接入层:数据同步,基本保持与源数据格式一致
明细层:标准化、维度补全、异常处理
汇总层:单一业务场景
集市层:多业务场景
维表层:维度统一
数据中台
数据中台的定位是偏底层的(采集和计算)。
联机事务处理(OLAP),事务的ACID(原子性、一致性、孤立性和持久性)
联机分析处理(OLTP),分析的维度、度量、下钻/上卷(粒度)、切片/切块和旋转(行列对调)。
两者的关系:
OLAP是数据仓库的一个应用领域,OLTP是数据仓库的一个数据源。
OLTP关注原子性、高并发和时延(通常是毫秒级别)等性能需求,针对关系型数据库,主要是基于3NF设计。
OLAP不关心高并发和时延,更关心吞吐量等。
数仓建模
模型设计阶段:概念模型、逻辑模型和物理模型。
概念模型:划分业务主题(粒度比较粗),确定主题之间的关系。也可以基于业务线进行划分。
逻辑模型:在概念模型的基础上,定义数据仓库各种实体、属性、关系。建模理论有范式建模和维度建模。
范式建模:1NF(原子性,数据不可分割),2NF(唯一性,每行数据均唯一),3NF(独立性,消除传递依赖)。
维度建模:星型(事实表+一组维表),雪花型(星型表基础上,基于范式理论,将某些维表拓展成事实表)。
数仓相关技术栈/组件
框架:hadoop相关(HDFS、MapReduce)、Flink、Spark,YARN、MESOS(资源调度),docker(容器),Apache Kylin
查询与数据流:Hive、Spark SQL、Flink SQL。
数据访问和数据库:cassandra、mongoDB、redis
范式建模
范式建模的优点:
- 节约存储。
- 结构清晰。
- 易于理解。
- 适合关系型数据库。
范式建模缺点:
- 构建比较复杂。
- 查询复杂。
- 不适合构建在大数据分布式环境下。
尽管范式建模有这些缺点,但是仍然需要掌握,因为在数据仓库的上游有相当一部分数据源是业务数据库,这些数据库使用的是关系型数据库(理论基于范式建模),在数据仓库的下游也可能会用到(比如报表系统设计)。另外对数据源的规范定义也需要我们了解范式理论。
维度建模
维度建模的四个步骤:选择业务过程、声明粒度、确认维度和确认事实。
维度建模的优点:
- 方便使用。
- 适合大数据下的数据处理。
- 适合进行OLAP操作。
缺点:
- 维度补全造成的数据存储的浪费。
- 维度变化造成的数据更新量大。
- 典型的反三范式(与范式理论差异很大,增加了冗余数据)。
- 对于传统的关系型数据库,存储非常重要,范式建模有利于存储。大数据下存储相对没那么重要。
维度建模的过程实际上是将业务抽象成事实和维度两个概念。事实表中的度量分为可加、半可加和不可加三种。
参考资料
企业级数据仓库实战