数据仓库

549 阅读7分钟

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

一、数据仓库

1.1 概念

数据仓库(Data Warehourse,简称 DW),是一个用于存储、分析、报告的数据系统。

数据仓库的目的是构建面向分析的集成化的数据环境,分析结果为企业提供决策支持(Decision Support)

最稳妥的方法就是基于业务数据开展数据分析,基于分析的结果给决策提供支持。这就是所谓的数据驱动决策的制定。在哪里进行数据分析呢?数据库可以吗?

可以但是没必要。

  • OLTP 系统的核心是面向业务,支持业务,支持事务。所有的业务操作可以分为读、写两种操作,一般来说读的压力明显大于写的压力。如果在 OLTP 环境直接开展各种分析,有以下问题需要考虑:

    • 数据分析也是对数据进行读取操作,会让读取压力倍增;
    • OLTP 仅存储数周或数月的数据;
    • 数据发散在不同系统不同表中,字段类型属性不统一;

因此, 我们需要构建一个集成统一的数据分析平台,该平台面向数据分析,并非代替数据库。

1.2 特点

  • 数据仓库本身并不生产任何数据,其数据来源于不同外部系统
  • 同时数据仓库自身也不需要消费任何的数据,其结果开发给各个外部应用使用。
1.2.1 面向主题性(Subject-Oriented)
  • 数据库中,最大特点是面向应用进行数据的组织,各个业务系统可能是相互分离
  • 而数据仓库则是面向主题的。主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。
  • 操作型处理(传统数据)对数据的划分并不适用于决策分析。而基于主题组织的数据则不同,它们被划分为各自独立的领域,每个领域有各自的逻辑内涵但互不交叉,在抽象层次上对数据进行完整、一致和准确的描述。
1.2.2 集成性
  • 确定主题之后,就需要获取和主题相关的数据。当下企业中主题相关的数据通常会分布在多个操作型系统中,彼此独立。

  • 因此在数据进入数据仓库之前,必然要经过统一和综合,对数据进行抽取、清理、转换和汇总,这一步是数据仓库建设中最关键、最复杂的一步,所要完成的工作有:

    • 要统一源数据中所有矛盾之处,如字段的同名异义、单位不统一、字长不统一等;
    • 进行数据综合和计算,数据仓库中的数据综合工作可以在从原有数据库抽取数据时生成,但许多是在数据仓库内部生成的,即进入数据仓库之后进行综合生成的。

例如下面的例子,将数据纳入之前进行数据清洗:

image-20211030155921900

1.2.3 非易失性、非异变性
  • 数据仓库是分析数据的平台,而不是创造数据的平台。我们是通过数仓去分析数据中的规律,而不会去改变它们。
  • 操作型数据库主要服务于日常的业务操作,每隔一段时间把一批新的数据导入数据仓库。
  • 数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导出数据。
  • 数据仓库的用户对数据的操作大多是数据查询或比较复杂的挖掘。
1.2.4 时变性
  • 数据仓库包含各种粒度的历史数据,数据可能与某个特定日期、星期、月份、季度或者年份有关。
  • 数据仓库的数据需要随着时间更新,以适应决策的需要。

二、OLTP 和 OLAP

  • 联机事务处理 OLTP
  • 联机分析处理 OLAP

image-20211030161432414

2.1 OLTP

  • 操作型处理,叫联机事务处理 OLTP,主要目标是做数据处理,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。
  • 用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。
  • 传统的关系型数据库系统(RDBMS)作为数据管理的主要手段,主要用于操作型处理。

2.2 OLAP

  • 分析型处理,叫联机分析处理 OLAP,目标做数据分析
  • 一般针对某些主题的历史数据进行复杂的多维分析,支持管理决策
  • 数据仓库 OLAP 系统的一个典型实例,主要用于数据分析。

三、数据仓库和数据库

  • 数据库与数据仓库的区别实际讲的是 OLTP 与 OLAP 的区别
  • 数据仓库不是大型的数据库,并不是要取代数据库。
  • 数据库是面向事务的涉及,一般存储业务数据;数据仓库是面向主题设计的,一般存储历史数据,面向分析而设计的。

四、数仓架构

4.1 分层思想和标准

  • 根据业务需求分成不同的层次,但是最基础的分层思想,理论上分为三个层:操作型数据层(ODS)、数据仓库层(DW)、数据应用层(DA)。
  • 企业在实际运用中可以基于这个基础分层之上添加新的层次,来满足不同的业务需求

image-20211030163141966

4.2 阿里巴巴数仓 3层架构

  • 为了更好的理解数据仓库分层的思想以及每层的功能意义,下面结合阿里巴巴提供除出的数仓分层架构图进行分析
  • 阿里数仓是非常经典的3层架构,从下往上依次是:ODS、DW、DA
  • 通过元数据管理和数据质量监控来把控整个数仓中数据的流传过程,血缘依赖关系和生命周期。

image-20211030164117606

分层好处:

分层能对数据有一个更加清晰的掌握,主要有下面几个原因:

  • 清晰数据结构

    • 每个数据分层都有它的作用域,在使用表的时候能更方便的定位和理解
  • 数据血缘追踪

    • 最终给业务呈现的是一个能直接使用的业务表
  • 减少重复开发

    • 规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
  • 把复杂问题简单化

五、ETL、ELT 区别

数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是 ETL(抽取、转化、装载)的过程

但是在实际操作中讲数据加载打仓库却产生了两种不同做法:ETL 和 ELT。

5.1 ETL 是什么?

ETL :首先从数据源提取数据,数据保存在临时暂存数据库中 (ODS),然后执行转换操作,讲数据结构化并转换为适合目标数据仓库系统的形式,然后将结构化数据加载到仓库中,以备分析。

5.2 ELT(比较多)

使用 ELT,数据在数据池中提取后立即加载,没有专门的临时数据库(ODS),这意味着数据会立即加载到单一的集中存储库中,数据在数据仓库系统中进行转换。

image-20211030165958037