淘先锋技术网

首页 1 2 3 4 5 6 7

数仓分层

在这里插入图片描述

一些定义

ETL

将数据从来源经过抽取、转换、加载的过程

宽表

将业务主体相关的指标、维度、属性等关联到一起的表,存在一定的数据冗余

好处:查询性能得到提高

坏处:不满足三范式,数据存在大量冗余

宽表的设计广泛应用于数据挖掘前的数据准备,相关字段信息都放到一张表中,大大提高了迭代计算的能力

主题

在较高层次上对数据进行综合、归类的一个抽象概念,每一个主题对应一个宏观的分析领域。

数仓DW

Data warehouse数据仓库,是在数据库大量存在的情况下,一整套包括etl、调度、建模在内的完整理论体系。

建设目的:支持复杂的分析操作,侧重决策支持,提供直观的查询结果。

数据仓库不是数据的目的地,而是为数据的目的地做准备,包含:清洗,转义,分类,重组,统计,拆分等

主要特点

面向主题

  • 操作型数据库面向事务处理任务,数据仓库中的数据按照一定的主题域进行组织
  • 主题指的是用户在使用数据仓库进行决策时所关心的重点,一个主题通常与多个操作型信息相关

集成

  • 需要对源数据进行统计加工融合
  • 在加工的过程中,必须消除数据的不一致,保证数据仓库中存放的是整个企业一致的全局信息

不可修改

  • 数据仓库主要是为决策分析提供数据,涉及的操作主要是数据的查询

与时间相关

数据仓库中的数据都需要标明时间属性

分层的好处

  • 让数据结构更加清晰:每个数据层都有自己的作用,更方便使用和维护
  • 简化复杂问题:一个复杂的问题拆解成多个步骤,每个层只需解决特定的问题
  • 统一输出口径:通过分层,提供统一的数据出口
  • 减少重复开发:开发通用的中间层,极大地减少了重复计算的工作

数据分层

数据运营层ODS

数据准备区,也称贴源层。数据源中的数据经过ETL之后进入本层。

主要功能

  1. 是后面DW层的准备区、
  2. 为DWD层提供原始数据
  3. 减少对业务系统的影响

考虑后续的追溯数据的问题,该层不必对数据进行过多的清洗,直接接入原始数据也可以,后续工作交给具体分层去做

数据来源

业务库
  • 使用sqoop抽取
  • 实时:用canal监听mysql的binlog
埋点日志
  • 日志一般以文件的形式保存,用flume定时同步
  • 用spark streaming或Flink实时接入
  • kafka
消息队列

来自kafka、ActiveMQ等

DW层

数据明细层DWD

该层是业务层和数据仓库的隔离层,保持和ODS层一样的粒度,主要是对ODS层做数据清洗和规范化的操作

源数据在装入这一层时,要进行去噪(比如,一个人的年龄是200岁,这算异常数据)、去重(同一ID有多条重复数据)、字段命名规范等。

为了提高数据明细层的易用性,通常会采用一些维度退化的方法,将维度退化到事实表,减少维度表和实时表的关联

数据中间层DWM

在DWD层的数据基础上,对数据进行一些轻微的聚合操作,生成一些中间表,提升复用性,减少重复开发。

总之,对核心维度进行聚合,算出相应的统计指标

数据服务层DWS

基于DWM上的基础数据,整合汇总成分析某一特定领域的数据服务层,一般是宽表,用于后续的OLAP等。

该层的数据会相对较少,一张表会覆盖比较多的业务内容

数据应用层 ADS

提供给数据产品和数据分析使用的数据。存放在Redis、ES、PostgreSql等系统供线上系统使用,存放在hive、Druid中供数据分析和数据挖掘使用

事实表

事实表指存储事实记录的表,比如商品订单表

维表层DIM

与事实表相对应的一种表,保存了维度的属性值,和事实表做关联,相当于将事实表重复出现的属性进行抽取,用一张表进行管理

临时表TMP

每一层的计算会有很多临时表,有一个DWTMP层存储临时表

数据集市

也叫数据市场。为了满足特定部门或用户需求。

数据从企业范围的数据库、数据仓库抽取。

和数据仓库的区别

  • 数据集市是数据仓库的一个子集,面向部门级业务,而且只面向特定主题。数据集市存储为特定用户预先计算好的数据,满足用户对性能的需求
  • 数据仓库是面向主题的、集成的数据的集合,数据集市通常被定义成星型结构或雪花模型