数据仓库笔记

数据仓库的定义

数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。

数据仓库是一个将源系统数据抽取、清洗、规格化、提交到维度数据存储的系统,为决策的制定提供查询和分析功能的支撑与实现。

数据仓库的发展

发展阶段

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操作。

缺点:

  • 维度补全造成的数据存储的浪费。
  • 维度变化造成的数据更新量大。
  • 典型的反三范式(与范式理论差异很大,增加了冗余数据)。
  • 对于传统的关系型数据库,存储非常重要,范式建模有利于存储。大数据下存储相对没那么重要。

维度建模的过程实际上是将业务抽象成事实和维度两个概念。事实表中的度量分为可加、半可加和不可加三种。

参考资料

企业级数据仓库实战


数据仓库笔记
https://liaoweiquan.github.io/2019/01/15/数据仓库笔记/
作者
泉泉
发布于
2019年1月15日
许可协议