Loading

数仓架构

date: 2020-12-13 11:49:06
updated: 2020-12-16 17:16:14

数仓架构

1. 数据仓库

特点:

  1. 面向主题

    电商,流量,交易。。。

  2. 集成

    各个数据源:数据库,日志,爬虫。。。

  3. 相对稳定

    主要用来查询,不是用来删除和修改

  4. 反映历史变化

    N年的记录,每个月、每个季度、每年的汇总记录

  5. 管理决策

    分析数据 -> 指标

数据湖指的是所有的原始数据,数据仓库指经过处理的原始数据(四层)

2. 数据库和数据仓库的区别

数据库: 联机事务处理和查询处理 OLTP
传统的数据仓库:主要是查询,用结果来支撑决策。联机分析处理 OLAP
大数据数据仓库:基于Hadoop的海量 分布式数据仓库
实时仓库:Flink + Kafka/Redis/HBase

3. 架构

lambda:实时+ 数仓
kappa:实时
批流一体

4. 数仓分层

4.1 分层

  1. ODS(Operation Data Store):原始数据
  2. DWD(Data Warehouse Detail):对原始数据进行清洗(去除空值、脏数据、超过极限范围的数据)、脱敏等,保存明细数据
    • 选择业务过程 -> 声明粒度 -> 确认维度 —> 确认事实
  3. DWS(Data Warehouse Service):按天进行轻度汇总,比如一个用户一天下单次数
  4. DWT(Data Warehouse Topic):对数据进行累计汇总,比如一个用户从注册那天开始至今一共下了多少次单
  5. ADS(Application Data Store):为各种统计报表提供数据

第3、4层不一定都有,甚至都没有,直接从第2层经过操作到第5层,中间没有保留中间表
并不能保证一定按照这个分层来进行。如果说过滤条件也比较少,甚至可以直接从ODS进行过滤后直接返回给用户。

4.2 为什么要分层

  1. 把复杂问题简单化:拆解每一个需求,方便定位问题
  2. 减少重复开发:提供模型的复用性
  3. 隔离原始数据:使真实数据和汇总数据解耦

5. 数据集市和数据仓库的区别

数据集市是一个微型的数据仓库,通常有更少的数据,更少的主题区域,以及更少的历史数据,是部门级的。
数据仓库是企业级的。

6. 数据理论

6.1 范式

  1. 定义:范式可以理解为设计一张数据表的表结构
  2. 优点:降低数据的冗余性;数据保存多份,一次修改,需要修改多个表,很难保证数据的一致性
  3. 缺点:获取数据的时候,需要通过Join连接来获取最后的数据
  4. 分类:
    1. 第一范式:属性不可分割
    2. 第二范式:不能存在非主键字段部分函数依赖主键字段,可以消除部分数据冗余
    3. 第三范式:不能存在非主键字段传递函数依赖主键字段
    4. BCNF、第四范式、第五范式。。。

满足的范式越多,数据冗余性越低,但是表会越散,影响查询效率

  1. 函数依赖:完全函数依赖、部分函数依赖、传递函数依赖

6.2 OLTP 和 OLAP

  • OLTP:传统数据库的主要应用,主要是基本的、日常的事务处理,比如银行交易
  • OLAP:数据仓库的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观的查询结果

OLTP 一般是关系建模方式,OLAP 一般是维度建模方式

6.3 关系建模和维度建模

关系建模符合3NF,表松散,表的数据量多,但是数据冗余性低。由于数据分布在很多的表中,这些数据可以更为灵活地被应用,功能性更强。

维度建模:基于维度和度量。维度就是事实,相当于用户进行的业务操作

6.4 维度表和事实表

维度表:一般是对事实的描述信息,例如:用户、商品、日期、地区等
特征:维度表的范围很宽(具有多个属性,列比较多);跟事实表相比,行数较小;内容比较固定,比如编码表

事实表:对应着业务事件,每一个业务都应该有一个事实表。事实对应了业务事件中的度量值
特征:行数很多;内容相对的窄,列数较少(维度外键 + 度量值);经常发生变化

事实表又分为如下三种:

  1. 事务型事实表
    • 以每个事务或事件为单位,一旦插入就不会再作修改,更新方式就只能是增量方式
  2. 周期型快照事实表
    • 不会保留所有数据,只保留固定时间间隔的数据
    • 事务型事实表用来保存所有的数据。比如购物车数据,不需要记录每一次加减,只要汇总每一天最后的那个状态就行。
  3. 累积型快照事实表
    • 用于跟踪业务事实的变化。

这三种像是针对关系型数据库如何设计表来说的,根据表类型的不同,来决定每天同步数据到数仓的方式是全量还是增量。
比如第一种因为只会新增数据,所以每天增量同步到数仓即可;第二种需要全量同步;第三种将新增变化数据同步之后,还需要再做一步整合。

事实表一般是动词,维度表一般是名词。

7. 星型模型、雪花模型、星座模型

雪花模型和星型模型的区别主要是在维度的层级,标准的星型模型维度只有一层,雪花模型可能会涉及多层。
多个事实表可能会使用相同的维度表,组合起来就是星座模型。

Q&A

数仓最重要的是什么?
数据的准确性。数仓最终是为了支撑决策,决策的前提要保证数据的准确性。

如何保证数据的准确性?
元数据的建设与管理是其中重要的一个环节。元数据建设的目标是打通数据接入到加工 ,再到数据消费整个链路,规范元数据体系与模型,提供统一的元数据服务出口,保障元数据产出的稳定性和质量。首先梳理清楚元仓底层数据,对元数据做分类,如计算元数据、存储元数据、质量元数据等,减少数据重复建设,保障数据的唯一性。
另外, 要丰富表和字段使用说明,方便使用和理解。根据元仓底层数据构建元仓中间层,建设元数据基础宽表,也就是元数据中间层,打通从数据产生到消费整个链路。
也可在粒度、规范等方面展开,见仁见智。

如何做数据治理?数据资产管理呢?
在明确数据治理是数据管理的一部分之后,下一个问题就是定义数据管理。治理相对容易界定,它是用来明确相关角色、工作责任和工作流程的,确保数据资产能长期有序地、可持续地得到管理。
而数据管理则是一个更为广泛的定义,它与任何时间采集和应用数据的可重复流程的方方面面都紧密相关。
其实在数仓的整个链路中数据治理的理念是渗入其中的,在ETL过程中开发人员会对数据清洗这其实就是治理的一部分,再加上后期数据资产的管理和落定都有数据治理的渗入。

如何控制数据质量?
1.数据质量保证原则:完整性,准确性,数据质量,及时性,一致性
2.数据质量方法:数据资产等级的划定
3.数据加工过程卡点校验
4.风险点监控:针对在线或者离线数据的监控
5.质量衡量:故障等级的划定以及数据质量的事件的记录

元数据的理解?元数据管理系统?
元数据主要记录数据仓库中模型的定义、各层级间的映射关系、监 控数据仓库的数据状态及 ETL 的任务运行状态。
元数据有重要的应用价值,是数据管理、数据内容、数据应用的基础,在数据管理方面为集团数据提供在计算、存储、成本、质量、安全、模型等治理领域上的数据支持。
元数据管理系统: 首先梳理清楚元仓底层数据,对元数据做分类,如计算元数据、存储元数据、质量元数据等,减少数据重复建设,保障数据的唯一性。
另外, 要丰富表和字段使用说明,方便使用和理解。根据元仓底层数据构建元仓中间层,建设元数据基础宽表,也就是元数据中间层,打通从数据产生到消费整个链路

posted @ 2020-12-19 11:29  猫熊小才天  阅读(598)  评论(0编辑  收藏  举报