数仓初识-理论知识

2021-02-14  本文已影响0人  小驴小驴

数据仓库

数据仓库诞生的背景:

  1. 历史数据积存(避免业务冷数据堆积在业务库中,导致性能下降)
  2. 历史数据分析需要

概念:

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

对上述特点详说

  1. 面向主题:根据主题将原始数据集合在一起 形成一张宽表,形成的大宽表方便为数据分析提供服务
  2. 集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程
  3. 非易失:保存的数据是业务数据库的历史快照,不允许被修改,只能通过工具进行查询、分析
  4. 时变性:数仓会定期接受、集成新的数据,从而反映出数据的最新变化

数据 VS 数据库

数据库 数据仓库
面向 事务 分析
数据类型 细节、业务 综合、清洗过的数据
数据特点 当前的、最新的 历史的、跨时间维护
目的 日常操作 长期信息需求、决策支持
设计模型 基于ER模型、面型应用 星型/雪花模型等、面向主题,反范式设计,为了性能故意引入冗余
操作 读/写 大多数为读

数仓技术实现

数仓架构图

说明:
数仓的架构因公司需求而异,有的名词说法也不相径庭,但大体思路一致,不必太纠结于细节

数仓架构图.jpg

下面对上述分层进行简单叙述,下面会专门对每层进行详细描述的;

分层细说

ETL

E:extract(抽取)
抽取的数据可以分为:结构化数据、非结构化、半结构化数据
抽取结构化数据方法:
- JDBC
优点:采集方便
缺点:需要消耗数据库IO,影响业务,因此该方式经常放在凌晨进行
- 数据库日志方式:监听日志文件并解析日志
优点:节省数据库IO,避免影响业务
缺点:方式复杂,一般需要采用现有工具,CDC
非结构化、半结构化数据抽取方法:
- 监听文件变动

T:transform(交互转换)

结构化数据ETL中,T的部分很少,最多做一下去重就可以了,但是对于结构化、非结构化数据需要进行较为复杂的清洗

L:load(加载)

常见ETL工具

ODS层

ODS主要是做历史数据积存的,但是ODS层有一个难点:对于业务库中更新过的数据该如何处理?
我们可以对ETL到ODS层的数据进行扩充字段:update_type,里面的枚举为Insert、Update用于表示这条进入ODS的记录是新增的还是业务库中更新的。

DWD层

该层主要做了数据标准化处理,并开始进行一部分的维度退化工作(维度表合并工作),但这一层总体还是范式设计

DWS层

该层开始面向主题的进行宽表设计,对DWD层的数据结构进行反范式设计,减少数仓查询的Join操作

ADS层

ADS层也称之为数据集市层,是为了屏蔽业务直接查询数仓从而导致数仓压力增大的问题,所以该层会使用很多组件如Kylin、ES等组件加速数仓查询速度。

OLAP VS OLTP

OLTP

OLTP为在线事务处理系统。主要操作是随机读写,为了保证数据一致性、减少冗余,常使用关系模型,经常使用三范式规则来减少冗余。

OLAP

OLAP为在线联机分析系统,关注数据整合,以及分析、处理性能,OLAP根据存储方式不同分为 ROLAP、MOLAP、HOLAP 三种建模方式

只有ROLAP是依赖模型设计的,MOLAP、HOLAP是依赖数仓产品的底层,并不是依赖于模型设计。

建模方法

ROLAP建模

ROLAP建模有如下方法:ER模型、维度模型(常用)、Data Value、Anchor

ER模型、DataValue、Anchor三个模型适合成熟的数据仓库,业务变动很少,而维度模型适用于业务多变的场景,使用较为灵活,因此在ROLAP方式建模中维度模型最为常用,也是当下互联网的主流,因此在ROLAP建模方式中,主要去讲解 维度模型

维度建模
维度模型分为:维度表、事实表

MOLAP建模

MOLAP建模方式比较依赖于数仓产品的功能特性,并不需要开发者去手动干预。
MOLAP将数据进行预结算,将聚合结果存储到CUBE模型中,CUBE模型以多为数组的形式存在,物化到存储系统中,加快后续的查询。
常见的MOLAP的产品有:Kylin、Druid

如下图:该多维数组CUBE中,有三个维度,当查询的时候按照group by xxx的时候,可以直接按照相应的xxx维度去查询对应的立方体里的数据。


MOLAP-CUBE.jpg

HOLAP建模

OLAP专业术语

任务调度

常见的任务类型:

上一篇下一篇

猜你喜欢

热点阅读