数据仓库——数据分层基础总结

一、什么是数据仓库、数据为什么要分层

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

2、为什么要分层?

  • 清晰数据结构:每个数据分层都有它的作用域和职责,在使用表的时候能更方便的定位和理解
  • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算
  • 统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径
  • 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题

二、数据仓库分层介绍

1、数据仓库基本分层架构图

2、ODS层:原始数据层

     数据来源可能是通过Flume监控、Sqoop导入

     Flume可以定义拦截器,进行数据ETL

     Sqoop可以通过sql语句,进行数据ETL

     所以一般ODS层存放的是ETL之后的原始数据,在业务系统和数据仓库之间形成一个隔离层,保存的是原始数据,或者ETL之后的数据

3、DWD:数据明细层

   1)、提供所有数据类型数据支持的战略集和,是一个包含所有主题的通用的集合,对ods层数据进行再次清洗(去空、去脏数据、去超过极限的数据)

   2)、调整压缩算法,存储格式

      Hive存储格式:TEXTFILE 、SEQUENCEFILE、ORC、PARQUET,前面两种是行式存储,后面两种是列式存储。在dw层我们希望文件格式是解压和压缩速度快,用来提高查询速度,一般选择Snappy+(orc/parquet)

4、DWM:数据中间层,在DWD层的基础上,对数据做轻度的聚合操作,生成一系列的中间表,提高公告指标的复用性,减少加工,对核心维度进行聚合操作,算出相应统计的指标

5、DWS:数据服务层

     又称数据集市或宽表。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。

    一般来讲,该层的数据表会相对比较少,一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。

    在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。

6、数据应用层:App层

    主要是提供给数据产品和数据分析使用的数据,一般会存在ES、PostgreSql、Redis等系统中供线上系统使用,也可能存在Hive中供数据分析和数据挖掘使用,比如我们常说的报表数据,一般就放在这里

7、DIM层(维度层)

    维度层一般包含两部分数据

  • 高基数维度数据:一般是用户资料表、商品资料表类似的资料库,数量级可能是千万级或者亿万级
  • 低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维度,数量级可能是个位数或者几千几万

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值