查看原文
其他

大数据分析工程师入门17-数据仓库基础

凯凯连 大数据与人工智能 2022-09-08

点击上方“大数据与人工智能”,“星标或置顶公众号”

第一时间获取好内容


作者丨凯凯连

编辑丨Zandy


导语    


上一篇文章我们对ETL工程做了简单介绍,我们知道ETL的最终目标就是把数据加载到数据仓库中。那么,这一篇我们就对数据仓库做一个简单介绍,带领大家理解下数据仓库的设计,希望可以对大家进行面试和上手工作有所帮助。



1.为什么要讲数据仓库


  

数据仓库建设是大数据分析工作中最核心的组成部分,数据仓库中汇聚了企业中多种来源的数据,维护着经过精心处理的、标准相对统一的、质量较高的、可直接用于分析的事实和维度数据,为分析、挖掘和决策提供有力的数据支撑。数据分析师,绝大部分的时间都是在和数据仓库打交道,围绕数据仓库的构建、维护、查询等展开工作。因此,对于入门分析工程师来说,理解数据仓库是门必修课。


2.本文的目标



本文是一篇入门级文章,主要目标是带领大家了解什么是数据仓库,它是如何运转的,它具备哪些优势,它的一般架构是怎样的,如何去构建一个数据仓库,以及在构建过程中该注意些什么。



3.本文的讲解思路


    

第一部分,讲解下数据仓库的概念,以及它的应用场景和优势。

第二部分,讲解数据仓库的架构与一般实现,以及如何构建数据仓库的步骤。

第三部分,讲解构建数据仓库的过程中应该重点关注的内容和注意事项


×××

以下为正文




01
什么是数据仓库



数据仓库,有一个被广泛接受的定义:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。


很明显我们可以看出,数据仓库简单来说就是一个数据集合,它具备的一些特性,翻译成大白话后如下所示:

1.数据仓库是面向主题构建的,每个主题就是一个可直接用于分析的主体
2.数据仓库的数据都是集成的,它的数据来源很丰富,为了分析方便,对多种数据做了集成
3.数据仓库的数据是相对稳定的,不会出现短时间内频繁更新数据仓库中数据的情况
4.数据仓库的数据都是已经发生的历史事实,且保留时间较长,因此如果拉长时间线,是可以看到数据的历史变化情况的
5.数据仓库的目标就是支撑分析工作,用于管理决策,使得企业获得更好的发展
从上面的解读我们可以看出,数据仓库的核心应用场景就是数据分析,它完全是面向分析构建的,数据仓库的存在就是为了更加高效方便地支撑数据分析。



02
数据仓库的优势是什么


既然几乎所有的互联网公司都会用到数据仓库,那么就说明它必有所长。数据仓库在数据分析中的优势主要体现在以下几个方面:
1.完全面向分析构建。数据仓库的目标就是为了更高效方便地做数据分析,因此数据仓库整个数据的组织结构也是完全根据分析需要设计的。它是由多个面向特定方向的分析主题组成的,这样可以使得分析任务变得简单,数据更容易获取,最大化地发挥数据的效用。
2.可以处理大数据量场景。数据仓库不需要太在意响应性能,因为它通常是用来供分析使用的,不会直接用于与用户交互的场景。因此,可以存储大量的历史事实数据,完成跨度较大的历史趋势变化的分析。
3.集成多种数据。数据仓库中的数据,是将企业中分散的、不统一的数据,经过ETL集成到一起。这样,可以提升数据的丰富性,多种数据的融合,能够连接出新的可能性,发挥出更大的作用,分析出单个数据集无法得出的结论。
4.使数据成为一种资产。数据仓库的数据都是经过各种处理、合并、高度结构化的,通过数据治理,使得原本散落无序的数据,形成一种数据资产,支撑和驱动公司业务的良性发展。


03
数据仓库的架构与一般实现
数据仓库一般是采用分层架构设计,根据数据的内容和结构化程度进行分层。各个公司根据自身的业务不同,可能划分的方式也有所不同。一般情况下,分为以下四层,ODS、DWB、DM、DWS。数据仓库的各层之间通过ETL和汇总程序完成转换,也就是说数据在各层之间是会流动的。数据治理的工作,主要依赖元数据中心来完成,它定义数据的格式和含义,以及他们之间的血缘关系。整体架构如下图所示:
     
那么,数据仓库各层都存储了哪些数据?它们的作用是什么呢?


ODS(Operation Data Store),操作明细数据层,这层里面通常存放的是简单处理的相对原始的行为或业务数据。由于数据仓库需要集成各种数据源,而这些数据在进入数仓时会首先进入到ODS层。因此,ODS层相当于是一个缓冲层,数据先从其他架构体系转移至数据仓库体系中,ODS层的作用就是承载这些数据,为下一步构建主题模型提供多种多样的数据支持。

DWB(Data Warehouse Basic),数据仓库基础层,这层是数据仓库的核心,它是面向分析主题构建的。DWB层的数据会基于ODS层的数据,完成多种数据的整合集成,极大地丰富数据的维度,为后续的分析提供有力的支撑。对于专业的数据分析师,可以直接使用这层的数据完成各种分析和挖掘。这层的数据通常采用星状模型来构建。

DM(Data Market),数据集市层,这层的数据会基于DWB层进行进一步的整合,会基于业务需求对DWB层的数据进行抽象和融合,便于普通的数据分析师或业务人员也可以完成一些特定业务的分析工作。它的主要目标是简化数据的复杂度,牺牲一部分灵活性,换来针对特定业务的易用性。

DWS(Data Warehouse Service),数据仓库服务层,也叫应用汇总层。这层存储的数据,通常是基于DWB或DM进行汇总的统计分析结果,便于应用程序直接使用,或者是导出到其他系统中。
负责多层数据之间流转的就是ETL程序,它会根据元数据中心维护的数据规范和流转规则,对各层的数据进行进一步的加工,然后转移到后一层去。


04构建数据仓库的注意事项



构建数据仓库是一个非常复杂,且工作量庞大的工程。笔者公司也是经过很长一段时间,才完善了整体架构,达到一种趋于稳定、高效、易用的状态。构建的过程非常复杂,和公司的业务也是强相关的,这里我介绍几点在构建过程中的心得和注意点,希望对大家有所帮助。


数据资产分级


通过前面两部分的介绍,大家可以了解到,数据仓库中是会一直累积历史数据的,这是它的一个优势,但是同时也会成为它的一个弱点。那就是当数据积累时间足够长后,存储成本将会越来越大。因此,比较好的一种做法是,对数据资产进行分级,比较重要的数据永久保存;但是,重要性不高或者时效性较强,时间过于久远的数据价值不大时,可以考虑只保留最近一段时间的数据。对于已经完全过时的数据,也可以考虑彻底清除掉。另外,也可以考虑分层清理,保留上层集成数据,清理下层的源数据。例如,DWB中的主题模型很稳定后,也可以考虑不再保留ODS层中对应的原始数据。


不要过度设计


在一开始设计数据仓库时,通常会严格遵循星状模型的设计思路,将事实和维度分开,最终形成一个事实表周围围绕着N多个维度表。但是,在使用时发现这样的设计,虽然表结构看起来很清爽,组织结构清晰,但是使用起来非常麻烦,有时候分析一个特定数据,需要关联一大堆的表,SQL非常复杂,执行效率也很低。实际上,对于维度变化不大,查询经常会用到的字段,放入事实表中是一个更好的选择。


设计好命名规范和存储规范


在一开始设计数据仓库时,最好就先把表的命名规范和数据的存储规范定义好,这样可以大大降低管理成本,并且对于后续规整数据也有很大的帮助。表名最好是可以体现从属关系、业务分支、主题含义等信息,这样对于分析师是非常友好的。存储规范,一定要区分清楚不同分层和不同环境的数据,避免数据混乱。


数据治理


数据治理是非常重要的环节,如果数据仓库没有一个统一的元数据中心,通常将会不断跌入熵增的深渊。随着数据的不断丰富,你会发现查找想要的数据,厘清不同数据间的区别变得越来越困难。这时就必须要有元数据中心,管理整个数仓,记录数据结构的变化情况,存储各个表的含义,以及数据间的关系。


 支持数据更新 


通常我们在数据仓库构建的时候,是顺着数据流动的方向去实现的。但是,在构建过程中,难免会遇到处理逻辑有bug、上游输入数据不准确、处理逻辑发生变化等情况。如果重新再走一遍流程,计算量可能非常大,因此,要能够支持数据的部分更新,比如单个字段的更新。这个在设计数据流转ETL程序时,就要考虑到这点。


总结


本文主要对数据仓库做了一个相对全面的介绍,旨在让大家了解数据仓库是什么,它有哪些优势,它的架构和构建的注意事项。对于分析师入门来说,不会直接参与到数据仓库构建的工程中,但是需要对数据仓库的构造比较了解,希望本文能够帮助大家加深对数据仓库的理解。




点击文章底部左下角“阅读原文”,查看“大数据分析工程师入门”系列文章。

- END -
相关内容阅读


1.大数据分析工程师入门16-ETL工程2.大数据分析工程师入门15-数据收集3.大数据分析工程师入门14-数据分析架构
4.大数据分析工程师入门13-Azkaban调度系统5.大数据分析工程师入门12-Tableau数据可视化6.大数据分析工程师入门11-Hue&Zeppelin

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存