数据仓库基础知识学习笔记

学习笔记
学习渠道:https://www.bilibili.com/video/BV1qv411y7Wv?p=1

1.1 数据仓库诞生原因

  • 历史数据积存

历史数据使用频率低,堆积在业务库中,导致性能下降

随着业务的进行,会源源不断的产生数据,这些业务数据都会存储在业务数据库中,如 MySQL、Oracle 当中,支持业务系统的运行。

但当线上的业务系统运行超过一定时间,其积压的历史数据就会越来越多,对业务数据库就会产生一定的负载,导致业务系统运行速度降低。

而这些历史数据中,有相当一部分是冷数据,即业务系统一般对最近产生的数据(当天、一周内、一个月内)调用比较频繁,对较早之前的数据调用频率很低。

所以为了避免随着时间的推移,历史数据积压对业务数据库产生的影响,从而影响业务的正常运行,企业需要定期将积压的历史数据从业务数据库中转移出去,存储到一个专门存放历史数据的仓库中。这就是数据仓库。

数据仓库基础知识学习笔记

  • 企业数据分析需要

企业将历史数据存储到数据仓库中后,这些数据不仅可以改善业务数据库的性能;还可以用来进行数据分析,从而辅助管理层进行决策。以历史数据积存为导向,这种发展是顺其自然的。

但有的企业开始并没有历史数据积存,然而仅仅是对数据分析特别看重。这些企业可能会存在多个部门需要进行数据分析的任务。这些企业建立数据仓库的原由,是以数据分析为导向的。

小结

企业无论是以历史数据积存,还是数据分析为导向建立的数据仓库。数据积存、数据分析,这两个都是数据仓库的基本功能与建设目的。

1.2 基本概述

数据仓库(Data Warehouse,DW)

数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合

主要用于历史数据的积存,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能

数据仓库特点

  • 面向主题:为数据分析提供服务,根据主题将原始数据集合在一起
  • 集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程(对数据进行统一的标准化、规范化)
  • 非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析
  • 时变性:数仓会定期接收、集成新的数据,从而反映出数据的最新变化

数据仓库VS数据库

  • 数据库面向事务设计,属于OLTP(在线事务处理)系统,主要操作是随机读写;在设计时尽量避免冗余,常采用符合范式规范来设计

  • 数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计

数据仓库基础知识学习笔记

数仓主要是面向分析的

1.3 数据仓库的技术实现

传统数据仓库

由关系型数据库组成MPP(大规模并行处理)集群

大数据数据仓库

利用大数据天然的扩展性,完成海量数据的存放
将SQL转换为大数据计算引擎任务,完成数据分析

数据仓库基础知识学习笔记

1.3.1 MPP架构 & 分布式架构(Hadoop架构)

1.4 常见数据仓库产品

传统数据仓库

  • Oracle RAC
  • DB2
  • Teradata
  • Greenplum

大数据数据仓库

  • Hive
  • Spark SQL
  • HBase
  • Impala
  • HAWQ
  • TIDB

2 第二部分

2.1 数据仓库的架构

数据仓库基础知识学习笔记

ETL(抽取、转换、加载)完成数据的接入

ODS保存原始数据,完成数据的积存功能

DWS DWD 为数据分析提供服务

ADS 保存结果数据

数据仓库基础知识学习笔记

2.2 ETL

将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程

数据仓库基础知识学习笔记

ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去

ETL规则的设计和实施约占整个数据仓库搭建工作量的60%~80%

ETL负责将分布的、异构数据源中的数据抽取到临时中间层后进行清洗,转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
数据仓库基础知识学习笔记
数据抽取(Extraction)
抽取的数据源可以分为结构化数据、非结构化数据、半结构化数据
结构化数据一般采用JDBC、数据库日志方式,非半结构化数据会监听文件变动

数据转换(Transformation)
数据转换要经历数据清洗转换两个阶段
数据清洗主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一的处理

数据转换主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换

数据加载(Loading)
将最后处理完的数据导入到对应的目标源里

2.2.1 常见的ETL工具

  • 结构化数据ETL工具
    Sqoop
    Kettle
    Datastage
    Informatica
    Kafka

  • 非半结构化数据ETL工具
    Flume
    Logstash

2.3 ODS 数据操作层

数据存积

数据与原业务数据保持一致,可以增加字段用来进行数据管理

存储的历史数据是只读的,提供业务系统查询使用

业务系统对历史数据完成修改后,将update_type字段更新为UPDATE,追加回ODS中

数据仓库基础知识学习笔记
在离线数仓中,业务数据定期通过ETL流程导入到ODS中,导入方式有全量、增量两种

  • 全量导入:数据第一次导入时,选择此种方式

  • 增量导入:数据非第一次导入,每次只需要导入新增、更改的数据,建议使用外连接&全覆盖方式

2.4 DWD 数据明细层

数据分析

数据明细层对ODS层的数据进行清洗、标准化、维度退化(时间、分类、地域)

数据仍然满足3NF模型,为分析运算做准备

数据仓库基础知识学习笔记

2.5 DWS 数据汇总层

数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表

存储模型并非3NF,而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型

数据仓库基础知识学习笔记

2.6 ADS 数据应用层

数据应用层也被称为数据集市

存储数据分析结果,为不同业务场景提供接口,减轻数据仓库的负担

数据仓库擅长数据分析,直接开放业务查询接口,会加重其负担

数据仓库基础知识学习笔记

第三部分

3.1 OLTP(在线事务处理)

OLTP(在线事务处理)系统中,主要操作是随机读写

为了保证数据一致性、减少冗余,常使用关系模型

在关系模型中,使用三范式规则来减少冗余

3.2 OLAP(在线联机分析)

OLAP系统,主要操作是复杂分析查询:关注数据整合,以及分析、处理性能

OLAP根据数据存储的方式不同,又分为ROLAP,MOLAP,HOLAP ,其目的都是加快数据分析功能

  • ROLAP(Relation OLAP,关系型OLAP):使用关系模型构建,存储系统一般为RDBMS

    ROLAP系统建模方法,典型的数据仓库建模方法有ER模型维度模型Data ValueAnchor

    宽表模型
    宽表模型是维度模型的衍生,适合join性能不佳的数据仓库产品
    宽表模型将维度冗余到事实表中,形成宽表,以此减少join操作

  • MOLAP(Multidimensional OLAP,多维型OLAP):预先聚合计算,使用多维数组的形式保存数据结果,加快查询分析时间

  • HOLAP(Hybrid OLAP,混合架构的OLAP):ROLAP和MOLAP两者的集成;如低层是关系型的,高层是多维矩阵型的;查询效率高于ROLAP,低于MOLAP

3.2.1 OLAP多维分析

OLAP主要操作是复杂查询,可以多表关联,使用COUNT,SUM,AVG等聚合函数

OLAP对复杂查询操作做了直观的定义,包括钻取、切片、切块、旋转

上一篇:ETL


下一篇:美团数据仓库的演进