数仓基本概念:数据集市及分层

什么是数仓

数据仓库(Data Warehouse,简称DW或DWH)数据仓库,是在数据库中有大量案例的,它是一个完整的理论体系,包括ETL、调度、建模。

数据仓库项目建设的目的是作为前端查询和分析的基础,主要应用于联机分析处理(OLAP),支持复杂的分析操作,侧重于决策支持,提供直观易懂的查询结果。AWS Redshift、Greenplum、Hive等。

数据仓库不是数据的最终目的地,而是数据最终目的地的准备工作,包括:清理、转义、排序、重组、合并、拆分、统计等

主要特点:

  • 面向主题
    • 当业务数据库组织面向事务的任务时,数据仓库中的数据是根据主题域组织的。
    • 主题是指用户在使用数据仓库进行决策时关心的关键方面。一个主题与多个业务系统有关。
  • 集成
    • 需要对源数据进行处理和融合、统一和集成
    • 在处理过程中必须消除源数据中的不一致,以确保数据仓库中的信息与整个企业的全局信息一致。(关联关系)
  • 不要修改
    • DW中的数据不是最新的,而是来自其他来源
    • 数据仓库主要为决策分析提供数据,涉及的操作主要是数据查询
  • 实践依赖性
    • 决策需求数据仓库中的数据需要标记时间属性

与数据库的对比

DW:专为数据分析而设计,它涉及读取大量数据,以了解数据之间的关系和趋势

数据库:用于捕获和存储数据

功能数据仓库事务性数据库
应用场景分析、报告、大数据事务处理
数据源从多个来源收集并标准化数据从单个源捕获的数据,例如事务系统。
数据采集批写入是按照预定的批处理计划执行的它针对连续写入操作进行了优化,因为新数据最大限度地提高了事务吞吐量
数据标准化非标准化模式,如星形模式或雪花模式高度标准化的静态模式
数据存储通过列存储进行优化,实现轻松访问和高速查询性能针对单行物理块中的高吞吐量写入进行了优化
数据访问优化以最大限度地减少I/O并最大限度地提高数据吞吐量大量的小型读取操作

数据分层概念:

为了解决我们可能面临的问题,我们需要一套有效的数据组织、管理和处理方法,使我们的数据系统更加有序,这就是数据分层。数据分层的好处:

  • 清晰的数据结构:每个数据层都有自己的角色和责任,更易于使用、维护和理解
  • 复杂问题简化:将复杂任务分解为多个步骤,每一层只解决特定问题
  • 统一的数据口径:通过数据分层提供统一的数据出口和统一的输出口径
  • 减少重复:正式化数据分层并开发通用的中间层可以大大减少重复

ODS层

Operation Data Store,贴源层又称操作数据层,数据源中的数据经过提取、清洗和传输后进入这一层,即ETL过程。该层的主要功能:

  • ODS是后台数据仓库层的暂存区
  • 为DWD层提供原始数据
  • 减少对业务系统的影响

在源数据中放入这一层,如去噪(例如有一个数据中间人的年龄是300岁,这属于异常数据,需要提前做一些处理)和去重(例如在个人数据表中,同一ID有两个重复数据,访问时需要做去重)、字段、命名约定等一系列操作。

但是,为了考虑后续跟踪数据的需要,不建议对该层进行过多的数据清理。可能根据特定业务层的要求访问原始数据。

一般从MYSQL直接同步至HIVE中,就是ODS层

该层中的数据是后续数据仓库中处理数据的来源。数据来源:

  • 业务库:
    • Sqoop通常用于提取,例如每天定期提取。
    • 在实时情况下,canal可以用来监控mysql的binlog,以便实时访问。
  • 埋点日志
    • 日志保存为文件。你可以使用Flume来定期同步日志
    • Spark Streaming或Flink可用于实时访问
    • Kafka也是可以的
  • 消息队列:数据来源于ActiveMq或Kafka

数据仓库层

数据仓库层从上到下可分为三层:数据明细层DWD、数据中间层DWM、数据服务层DWS。

DWD层

Data WareHouse Detail,数据明细层,DWD(数据清理/DWI)

该层是业务层和数据仓库之间的隔离层,并保持与ODS层相同的数据粒度。主要是ODS数据层进行一些数据清理和标准化操作,如清除空数据、脏数据、异常值等。主要是为了保证数据质量。

为了提高数据细节层的易用性,该层通常采用一些降维方法将维度降到事实表,并减少事实表和维度表之间的关联。

DWM层

Data WareHouse Middle,数据仓库中间层,DWM

该层基于DWD层的数据,对数据进行一些轻微的聚合操作,生成一些中间结果表,以提高通用指标的可重用性,减少重复处理的工作量。

简而言之,聚合共同的核心维度并计算相应的统计指标。

对明细数据按照常用维度做初步汇总,保留通用的维度:比如商品、人、设备。计算常用的计算指标:次数、时长等。

DWS层(宽表)

数据服务层:数据仓库服务,DWS(宽表-用户行为,曝光聚合)

该层是一个基于DWM基础数据的数据服务层,它被集成和总结以分析一个主题领域。

一般来说,通过与维表关联生成一个宽表,用于提供后续的业务查询、OLAP分析、数据分发等。这一层的数据表相对较少;一张表包含了大量的业务内容。因为它有许多字段,所以也称为宽表。

用户行为,DWD上的轻度聚集

主要对ODS/DWD层的数据做一些简要的总结。

ADS层

应用数据服务,ADS(APP/DAL/DF)-生成报告结果

该层主要为数据产品和数据分析提供数据,定制性强,一般存储在ES、Redis、PostgreSql等系统中,供在线系统使用。它也可以存储在Hive或Druid中,用于数据分析和数据挖掘。例如,常见的数据报告存储在此处。

事实表

事实表是存储事实记录的表,如系统日志、销售记录等。事实表的记录在不断增长,如电子商务的订单表,是相似的,因此事实表的大小通常比其他表大得多。

维度表

维度表或查找表(有时称为查找表)是事实表的对应项。它存储维度的属性值,并且可以与事实表相关联。这相当于提取和标准化事实表中经常重复出现的属性,并在表中管理它们。维度表由两个主要部分组成:

  • 高基数维度数据:通常是用户表、商品表类似的数据,数据量可能是几千万级或数亿级
  • 低基数维度数据:一般是配置表,如枚举字段的中文含义,或日期维度表等。数据量可能是个位数或数万。

临时表TMP

每个计算层中都有许多临时表,因此我们有一个DWTMP层来将临时表存储在数据仓库中

数据集市

狭窄的ADS层;广义上,它指的是Hadoop从DWD DWS ADS同步到RDS的数据。

数据集市,又称数据市场,是为了满足特定部门或用户的需求。数据集市以多维方式存储,包括定义维度、要计算的指标、维度级别等,以生成面向决策分析需求的数据立方体。

在范围内,数据是从企业范围的数据库、数据仓库或更专业的数据仓库中提取的。数据中心的重点是,它在分析、内容、演示和易用性方面满足了专业用户社区的特定需求。数据中心的用户希望数据以他们熟悉的术语表示。

与数据仓库差异

数据集市是企业级数据仓库的一个子集,主要面向部门业务,仅面向特定主题。为了解决灵活性和性能之间的冲突,数据集市是添加到数据仓库体系结构中的小型部门或工作组级数据仓库。数据集市为特定用户存储预先计算的数据,以满足其性能要求。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。

理论上,在有数据集市之前,应该有一个完整的数据仓库概念。在实际构建数据集市时,中国很少这样做。在中国,我们通常先从数据集市开始,然后在特定的主题(如企业客户信息)上建立数据仓库。数据仓库和数据集市的建立顺序与设计方法密切相关。作为一门工程学科,数据仓库没有对错之分。

就数据结构而言,数据仓库是一个面向主题的、集成的数据集合。数据集市通常被定义为星形结构或雪花型数据结构。数据集市通常由一个事实表和几个维度表组成。

问题摘要

ODS与DWD有什么不同吗?

**问:**还是不太明白 ods 和 dwd 层的区别,有了 ods 层后感觉 dwd 没有什么用了。

**答:**嗯,我是这样理解的,站在一个理想的角度来讲,如果 ods 层的数据就非常规整,基本能满足我们绝大部分的需求,这当然是好的,这时候 dwd 层其实也没太大必要。 但是现实中接触的情况是 ods 层的数据很难保证质量,毕竟数据的来源多种多样,推送方也会有自己的推送逻辑,在这种情况下,我们就需要通过额外的一层 dwd 来屏蔽一些底层的差异。

**问:**我大概明白了,是不是说 dwd 主要是对 ods 层做一些数据清洗和规范化的操作,dws 主要是对 ods 层数据做一些轻度的汇总?

**答:**对的,可以大致这样理解。

应用层的作用是什么?

问:觉得DWS层没有空间,每个业务的DWS表应该在DWD还是应用程序中?

答:这个问题不容易回答,我认为主要是要弄清楚DWS层是什么。如果你的DWS层要放一些可供业务方使用的宽表,那么就把它们放在APP层。如果你说的数据集市是一个相对通用的概念,那么实际上DWS、DWD、APP一起就是数据集市的内容。

问:Redis和ES中存储的数据是应用层吗?

答:是,我个人的理解是,应用层主要存储一些比较成熟的表,可以供业务端使用。这些表可以在配置单元中,也可以从配置单元导入到查询性能更好的系统,如Redis或ES。

附录

宽表

  • 含义:指字段比较多的数据库表。通常是指业务主体相关的指标、维度、属性关联在一起的一张数据库表。
  • 特点:
    • 宽表由于把不同的内容都放在同一张表,宽表已经不符合三范式的模型设计规范:
      • 坏处:数据有大量冗余
      • 好处:查询性能的提高和便捷
    • 宽表的设计广泛应用于数据挖掘模型训练前的数据准备,通过把相关字段放在同一张表中,可以大大提供数据挖掘模型训练过程中迭代计算的消息问题。

主题

**主题(Subject)**是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。例如“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”。

引用

www.cnblogs.com/amyzhu

www.jianshu.com/p/1dd894e5b…

Blog.csdn.net/pmdream/art…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值