数据仓库抽象

朗如行玉山关注IP属地: 重庆

2022.04.11 14:56:33 字数 1,586 阅读 2,493

在对大数据的发展历程,整体架构和其中涉及到的相关组件有了一个初步的理解后。我们可以知道所谓的大数据实际上就是系统在运行过程中产生的各种日志的汇总集合,那么为了更进一步使数据能高复用,产生了数据仓库的概念,本章就是笔者结合自己的工作经历梳理数据仓库中的抽象层级,以便于加深对大数据架构的理解。

数据仓库层级

需要了解数据仓库,那么首先就要了解几个基本概念:
(1)DB(数据库):即DataBase的简称,在实际业务场景中,也称之为应用数据库,是现有的数据来源,具体的产品有mysql、oracle、sql server等一系列,为数据仓库提供数据来源。
(2)ETL:即Extract-Transform-Load的缩写,即将数据从源系统迁移到数据仓库的加工工程,包含几个步骤:
a、Extract:抽取数据,即在源系统中读取数据。
b、Transform:数据转化,把原始数据转化为需要的格式和维度,同时还可以进行数据清洗和去噪。
c、Load:数据加载,将处理后的数据加载上传到数据仓库中固化。
(3)ODS层:即Operational Data Store,即操作数据层,是作为应用数据库到应用仓库的一种过渡,也叫做贴源层。主要是多个应用数据库的汇总,基本不改变数据格式和结构,ODS层存储的数据周期较短(一般不超过一个月),且数据最终会流入到DW层里。其次,ODS给使用者提供的是当前系统的运行状态,一般来说ODS层可以作为数据仓库的入口层。ODS的数据是“实时值”,而数据仓库的数据却是“历史值”。主要特征有:
a、从业务直接抽取,与业务系统保持一致,降低了数据抽取的复杂性。
b、转移部分业务系统的细节查询功能,让部分报表直接从ODS里面取数。
c、作为数仓中明细层数据查询来源。
d、ODS数据作为过渡数据,只能增加不能修改,而且数据都是业务系统原样拷贝,所以可能存在数据冲突的可能,解决办法是添加时间戳来区分版本。
总之,ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于及时性的、操作性的、集成的全体信息的需求,常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一。
那么为什么一定要有一个ODS系统呢?
原因有三点:
a、在业务系统和数据仓库之间形成一个隔离层。
b、转移一部分业务系统细节查询功能。
c、完成数仓中不能完成的一些功能。
(4)数据仓库DW(Data Warehouse),是数据的归宿,这里保持所有从ODS到来的数据,并长期保持。DW的数据实际存储在分布式文件系统中(HDFS),如果需要删除数据,只能对分布式文件系统进行操作,由于效率问题,数据仓库一般只读取数据,不直接对数据进行修改。数仓又可以分为数据服务层(DWS)、中间层(DWM)、数据明细层(DWD)
特点:
a、效率高。
b、数据质量高。
c、可扩展性强。
d、面向主题。
e、主要是提供查询服务,能及时响应查询。
f、只增不删改。
数据仓库是一个信息提供平台,从业务处理系统获得数据,并为用户提供各种手段从数据中获取信息和知识。整个数仓包含三部分:数据获取、数据存储、数据访问。
(5)数据集市(Data Mart),为了特定的应用目的,而从数仓独立出来的面向应用的部分主题数据。
特点:
a、DM结构清晰,易维护。
b、DM任务反正,每个业务单独建表。
c、DM占用存储资源大。
(6)在了解完组件后,从描述中可以看到ODS和数仓中的数据是差不多的,那么ODS和数仓主要区别是什么呢?
区别:
a、ODS是短期实时数据,供业务人员分析或短期决策使用,而数仓是完整全生命周期的数据,提供战略决策使用。
b、ODS是可以更新的数据,数仓的数据基本不改变(存入过后的数据)。

详解数据仓库和数据集市

一、数据流向

img

二、应用示例

img

三、何为数仓DW

Data warehouse(可简写为DW或者DWH)数据仓库,是在数据库已经大量存在的情况下,它是一整套包括了etl、调度、建模在内的完整的理论体系。数据仓库的方案建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。目前行业比较流行的有:AWS Redshift,Greenplum,Hive等。数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备,这些准备包含:清洗、转义、分类、重组、合并、拆分、统计等

主要特点

与数据库的对比

四、为何要分层

数据仓库中涉及到的问题:

  1. 为什么要做数据仓库?
  2. 为什么要做数据质量管理?
  3. 为什么要做元数据管理?
  4. 数仓分层中每个层的作用是什么?
  5. …...

在实际的工作中,我们都希望自己的数据能够有顺序地流转,设计者和使用者能够清晰地知道数据的整个声明周期,比如下面左图。但是,实际情况下,我们所面临的数据状况很有可能是复杂性高、且层级混乱的,我们可能会做出一套表依赖结构混乱,且出现循环依赖的数据体系,比如下面的右图。为了解决我们可能面临的问题,需要一套行之有效的数据组织、管理和处理方法,来让我们的数据体系更加有序,这就是数据分层。数据分层的好处:

五、数据分层

每个公司的业务都可以根据自己的业务需求分层不同的层次;目前比较成熟的数据分层:数据运营层ODS、数据仓库层DW、数据服务层ADS(APP)。

数据运营层ODS

数据运营层:Operation Data Store 数据准备区,也称为贴源层。数据源中的数据,经过抽取、洗净、传输,也就是ETL过程之后进入本层。该层的主要功能:

在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是 300 岁,这种属于异常数据,就需要提前做一些处理)、去重(例如在个人资料表中,同一 ID 却有两条重复数据,在接入的时候需要做一步去重)、字段命名规范等一系列操作。但是为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据也可以,根据业务具体分层的需求来做。这层的数据是后续数据仓库加工数据的来源。数据来源的方式:

数据仓库层

数据仓库层从上到下,又可以分为3个层:数据细节层DWD、数据中间层DWM、数据服务层DWS。

数据细节层DWD

数据细节层:data warehouse details,DWD(数据清洗/DWI)该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度;主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。为了提高数据明细层的易用性,该层通常会才采用一些维度退化方法,将维度退化至事实表中,减少事实表和维表的关联。

数据中间层DWM

数据中间层:Data Warehouse Middle,DWM该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。简答来说,对通用的核心维度进行聚合操作,算出相应的统计指标。

数据服务层DWS

数据服务层:Data Warehouse Service,DWS(宽表-用户行为,轻度聚合)该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。

数据应用层ADS

数据应用层:Application Data Service,ADS(APP/DAL/DF)-出报表结果该层主要是提供给数据产品和数据分析使用的数据,一般会存放在ES、Redis、PostgreSql等系统中供线上系统使用;也可能存放在hive或者Druid中,供数据分析和数据挖掘使用,比如常用的数据报表就是存在这里的。

事实表 Fact Table

事实表是指存储有事实记录的表,比如系统日志、销售记录等。事实表的记录在不断地增长,比如电商的商品订单表,就是类似的情况,所以事实表的体积通常是远大于其他表。

维表层Dimension(DIM)

维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联,相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。维度表主要是包含两个部分:

临时表TMP

每一层的计算都会有很多临时表,专设一个DWTMP层来存储我们数据仓库的临时表

六、数据集市

狭义ADS层;广义上指hadoop从DWD DWSADS同步到RDS的数据数据集市(Data Mart),也叫数据市场,数据集市就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。从范围上来说,数据是从企业范围的数据库、数据仓库,或者是更加专业的数据仓库中抽取出来的。数据中心的重点就在于它迎合了专业用户群体的特殊需求,在分析、内容、表现,以及易用方面。数据中心的用户希望数据是由他们熟悉的术语表现的。带有数据集市的数据仓储结构