上一节我们了解了数仓中常见的两大建模体系:关系建模和维度建模,并论述了维度建模的4个步骤。

数仓(二)关系建模和维度建模

数仓(三)简析阿里、美团、网易、恒丰银行、马蜂窝5家数仓分层架构

其实数仓建模中还有些其他建模体系:

像DataVault、Anchor模型,这两个模型感兴趣的可以自己查些资料。

这一篇我们来学习一下数仓中非常重要的内容:数仓的分层架构体系。

一、数据集市(Data Mart)

在学习数仓架构体系之前,我们还需要了解一下数据集市的概念。

1、数据集市概念

数据集市也叫数据市场。为某个特殊的专业人员团体服务的数据源中收集数据的仓库。从范围上来说,数仓是从企业范围的,而数据集市是部门范围的。

2、数据集市和数据仓库的主要区别

数据仓库

是企业级的,能为整个企业各个部门的运行提供决策支持手段;

数据集市

则是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的。

一般只能为某个局部范围内的管理人员服务,因此也称之为部门级数据仓库

二、数仓分层思想

1、为什么要分层

  • 通过分层管理来实现分步完成工作,

  • 用空间换时间,通过数据预处理提高效率,提升应用系统的用户体验(效率),简化数据清洗的过程,使每一层处理逻辑变得更简单。

  • 每一层的处理逻辑都相对简单和容易理解,这样我们比较容易保证每一个步骤的正确性;

  • 当数据发生错误的时候,往往我们只需要局部调整某个步骤即可。

宏观抽象来说,数仓分层是一套让我们的数据体系更有序的行之有效的数据组织和管理方法。

2、数仓分层带来如下的好处:

  • 数据结构化更清晰

每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解。

  • 数据血缘追踪

提供给外界使用的是一张业务表,但是这张业务表可能来源很多张表。如果有一张来源表出问题了,我们可以快速准确的定位到问题,并清楚每张表的作用范围。

  • 增强数据复用能力

减少重复开发,通过数据分层规范化,开发一些通用的中间层数据,能够减少重复计算,提高单张业务表的使用率,提升系统的执行效率。

  • 简化复杂的问题

把一个复杂的业务分成多个步骤实现,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

  • 减少业务的影响

业务可能会经常变化,这样做就不必改一次业务就需要重新接入数据。

  • 统一数据口径

通过数据分层,提供统一的数据出口,统一对外输出的数据口径。

3、数仓分层的目的

分层就能解决业务上所有的数据问题?

  • 数仓分层尽管给数仓带来了很多好处,但它不是银弹,不能解决所有的数据问题;

  • 并且没有绝对标准的数仓。不同的公司针对不同的业务搭建数仓的设计模型和分层一般也不一样。

  • 数仓分层要结合当下企业的的技术以及当前的业务的数据量,业务的复杂度等通盘考量。

数仓的搭建设计是由关系型在线交易系统到面向主题的数据仓库系统,从范式建模到维度建模的必经之路。

三、数仓中常见的层级

数仓中常见的层级如下:

1、ODS(Operation Data Store)

这层字面意思叫操作型数据存储,存储来自多个业务系统、前端埋点、爬虫获取等的一系列数据源的数据。

  • 又叫“贴源层”,这层保持数据原貌不做任何修改,保留历史数据,储存起到备份数据的作用。

  • 数据一般采用lzo、Snappy、parquet等压缩格式,减少磁盘存储空间(例如:原始数据 10G,根据算法可以压缩到 1G 左 右)。

  • 创建分区表,防止后续的全表扫描,减少集群资源访问数仓的压力,一般按天存储在数仓中。

有些公司还会把ODS层再细分两层:

STG:数据缓冲层,存原始数据;

ODS:对STG层简单清洗后的数据。

2、DW(Data Warehouse)

数仓主体层从ODS层中获得的数据按照主题建立各种数据模型。

又细分为以下几层:

2.1、DWD(Data Warehouse Detail)

明细粒度事实层:是以业务过程来作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表(注意是最细粒度)。需要结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。明细粒度事实层的表通常也被称为逻辑事实表

  • DWD层是维度建模层

    关于维度建模请查阅数仓(三)建模和维度建模,这层维度建模主要做的4个步骤:

  • ODS到DWD层,需要对数据进行清洗做ETL操作(ETL是英文Extract-Transform-Load的缩写)。

ETL(Extract-Transform-Load)

将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程。

目的是将企业中的分散、凌乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。

  • 主要的数据处理是:去空值、去极值(比方取款300亿)、去业务极值、部分数据脱敏、维度退化等即对业务数据传过来的表进行维度退化和降维(如:商品一级二级、省市县、年月日等)。

2.2、DWS(Data Warehouse Service)

  • 使轻度汇总层,从ODS层中对用户的行为做一个初步的汇总,抽象出来一些通用的维度:时间、ip、id,并根据这些维度做一些统计值。

  • 这里做轻度的汇总会让以后的计算更加的高效,如:统计各个主题对象计算7天、30天、90天的行为, 应对特殊需求(例如,购买行为,统计商品复购率)会快很多不必走ODS层反复拿数据做加工。

  • 这层以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。

  • 服务于 DWT 层的主题宽表,以及一些业务明细数据。

2.3、DWT(Data Warehouse Topic)

以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建主题对象的全量宽表。就是按照维度来决定分析者的角度,如:某用户从注册登录后下了多少订单。

2.4、DIM(Dimension)

以维度作为建模驱动,基于每个维度的业务含义,通过添加维度属性、关联维度等定义计算逻辑,完成属性定义的过程并建立一致的数据分析维表。为了避免在维度模型中冗余关联维度的属性,基于雪花模型构建维度表。维度层的表通常也被称为维度逻辑表。

  • 高基数维度数据

    一般是用户资料表、商品资料表等类似的资料表。数据量可能是千万级或者上亿级别。

  • 低基数维度数据

    一般是配置表,比如枚举值对应的中文含义,比如国家、城市、县市、街道等维表。数据量可能是个位数或者几千几万。

3、ADS(Application Data Store)

供给业务使用的数据层,这层是面向业务定制的应用数据层。

  • 这一层是提供为数据产品使用的结果数据。

  • 在这里,主要是提供给数据产品和数据分析使用的数据,一般会存放在 ES、MySQL等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 、kill中供数据分析和数据挖掘使用。如我们经常说的报表数据,或者说那种大宽表,一般就放在这里。

4、DM(Data Mart)

数据集市层,上面已经讨论过数据集市的概念,这层就是对不同的主题域,对某个单独业务或者部门专门设立的小型数据集市。

下一篇会精选了几个大厂的数仓分层架构的典型代表,来加深对数仓分层架构的理解、希望对我们设计和构建数仓分层模型,能有所借鉴或启迪。

参考书籍:

  1. 数据仓库第4版

  2. 数据仓库工具

  3. DAMA数据管理知识体系指南

  4. 华为数据之道


>>>>

Q&A

Q:数仓分几层适合?有没有统一的标准

A: 我们设计数仓分层的时候,要考虑到公司或者部门的实际需要来对数仓分层。如果你负责的仅仅是一个小部门的数据,而公司已经有一个数仓平台了。那么你或许仅需要构建一个你自己的应用层,或者集市层,根本无需分层。

如果一般大的公司有公共IT部门,该部门会构建统一数仓,如主数据,如统一交易表,统一埋点或者标准维度表等。当然大一点的事业群或者事业部会构建自己的数仓层,有一些部门特有的业务数据。可以构建简单三层模型即ODS + DW + ADS。

数仓(四)数据仓库分层相关推荐

  1. 数据仓库面试题汇总-数仓-四

    目录 1.数仓与关系数据库区别? 2.数仓为什么需要分层?优缺点? 2.1 什么是数仓? 2.2 数据仓库建模的意义,为什么要对数据仓库分层? 3.数仓链路很长怎么保证任务有序执行? 4.消息队列(了 ...

  2. 【数仓】数据仓库高频面试题题英文版(1)

      今天更新数据仓库高频面试题英文版,分为三个部分.下面是第一部分. 音频文件点击下方获取. [数仓]数据仓库高频面试题题英文版(1) [数仓]数据仓库高频面试题题英文版(2) [数仓]数据仓库高频面 ...

  3. (3)数仓建设-数据仓库设计方案

    一.概述  数据仓库的特征在于面向主题.集成性.稳定性和时变性,用于支持管理决策.数据仓库的存在的意义在于对企业的所有数据进行汇总,为企业各个部门提供统一的.规范的数据出口.数据仓库在构建过程中通常都 ...

  4. 数仓(三):分层设计 ODS-DWD-DWS-ADS

    数据仓库数据模型设计是构建数据仓库的核心过程之一.其目的是将多个数据源中的数据整合到一个统一的数据模型中,以支持业务分析和决策.然而,在数仓建设的过程中,由于未能完全按照规范操作, 从而导致数据仓库建 ...

  5. 数仓(四):数据建模:如何构建主题域/面向主题的建模

    数据仓库十大主题:TeraData金融数据模型  数据仓库十大主题:TeraData金融数据模型_Jackie 的博客-CSDN博客 一.什么是主题 数仓主题(Subject) 是在较高层次上将企业信 ...

  6. 数仓潮汐猎人 | 数据仓库企业数仓拉链表制作​

    拉链表 拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史.记录一个事物从开始,一直到当前状态的所有变化的信息. 下面就是一张拉链表,存储的是用户的最基本信息以及每条 ...

  7. 【数仓】数据仓库—数据集成

    其实数据集成是数仓的一个基本特点,这里我们再回顾一下数仓的特性,或者说是我们再回顾一下数仓的定义,面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Vo ...

  8. 数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模

    文章目录 一.数仓分层 数仓概念 ODS(原始数据层)做了哪些事 DWD(明细数据层)做了哪些事 DWS(服务数据层)做了哪些事 DWT(主题数据层)做了哪些事 ADS(应用数据层)做了哪些事 二.数 ...

  9. 数仓(三)简析阿里、美团、网易、恒丰银行、马蜂窝5家数仓分层架构

    上一篇我们介绍了数据集市的概念以及它和数仓的区别,并且重点论述了大数据数仓中的分层架构体系. 这篇我们简要分析一下以下5家公司的数仓分层架构模型: 1.马蜂窝数仓分层架构 2.阿里云MaxComput ...

  10. 数据仓库系列:初识数仓

    数据仓库系列:初识数仓 前言: 本节是数据仓库系列文章的第一篇,本系列的目的在于快速的构建一套最小化可运行的基础数据体系,过程中也会涉及一些数仓的理论知识,但更偏重的是数仓的实现和背后的思考逻辑.所以 ...

最新文章

  1. 为什么说无人出租车关乎特斯拉和Uber的生死存亡
  2. swift3.0 渐变色
  3. YUM更换源(1)--yum找不到安装包 2013-01-18 20:08 8687人阅读 评论(1) 收藏 举报 分类: linux(70) 公司提供的CentOS VM中,/etc/yum.r
  4. 起点低,是彪悍的最好证明!
  5. CCIE-LAB-SDN-第四篇-SD-WAN-2
  6. Spring事件发布
  7. 洛谷 P1762 偶数
  8. Yii 2 修改 URL 模式为 PATH 模式,并隐藏index.php
  9. 性能比 GPU 高 100 倍!首款可编程忆阻器 AI 计算机面世
  10. 只允许,同一域名下IFRAME,禁止直接访问页面
  11. duilib整体框架认识
  12. spring-speed-up.xml
  13. 工作中遇到大小端数据存储格式
  14. 了解React Native组件,模板和工具
  15. 如何在拍照时摆POSS
  16. android如何屏蔽掉home键
  17. 不要再叫自己“程序员”了
  18. mysql2004报错_mysqlbinlog备份时候报错Sanity check failed
  19. 调用Java API发送传真
  20. 内含福利 | DTCC第十届中国数据库技术大会,100+干货主题,与您共享

热门文章

  1. 只要60页!金融量化博士总结的Python数据分析入门知识手册
  2. 第二次热带近岸出海记录
  3. 云班课计算机基础测试题,云班课在高职计算机基础微课教学中应用探究.doc
  4. 根据子节点递归查询所有父节点
  5. uva 10158 War
  6. Linux手机DIY.夏新E600和飞利浦968的重大突破
  7. 如何识别手写汉字?跟着步骤就能完成
  8. vs2008+vss2005实现代码管理
  9. html-css10 过渡/米兔练习/动画/动画练习/小球动画/平移和小米移动图
  10. SwiftUI 使用Apple Visionkit构建文档扫描仪