登录
首页精彩阅读干货 | 你想知道的数据仓库知识,这里都有!
干货 | 你想知道的数据仓库知识,这里都有!
2020-11-19
收藏

数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、稳定的(Non-Volatile)、反映历史变化的(Time Variant)数据集合,用于支持管理决策。

  • 面向主题:数据仓库侧重于数据分析工作,所以数据仓库中的数据是按照一定的主题进行组织和存储。
  • 集成:对原有分散的数据库数据经过系统加工、整理,消除源数据中的不一致性。
  • 稳定:数据进入数据仓库以后只需要定期的加载、刷新,不需要频繁修改。
  • 反映历史变化:出于决策的需要,数据仓库中的数据都要标明时间属性。通过这些数据信息,对企业的发展历程和未来趋势做出定量分析预测。

——数据库与数据仓库的区别

数据库和数据仓库其实很相似,都是通过数据库管理系统,来组织、存储和管理数据。 它们的不同之处在于:

数据库是存放原始数据的集合,主要存储业务流程中的事务性数据,如银行交易、订单记录等。 数据仓库是数据库概念的升级,是存放加工处理后的数据集合,主要存储从数据库中整合、汇总后的数据,用于针对某些主题的历史数据进行分析,侧重决策支持。

单从概念上讲有些晦涩,任何技术都是为应用服务的,结合应用可以很容易地理解。以银行业务为例,数据库是银行事务系统的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来。数据仓库是分析系统的数据平台,它从事务数据库获取数据,并做汇总、加工,为决策者提供决策的依据。比如,某银行某分行一个月发生多少交易,该分行当前存款余额是多少。如果存款又多,消费交易又多,那么该地区就有必要加设ATM了。 显然,银行的交易量是巨大的,通常以百万甚至千万次来计算。事务系统是要求时效性的,客户存取一笔钱等待几十秒是无法忍受的,这就要求数据库实时响应。而分析系统是事后的,它要提供关注时间段内所有的有效数据。这些数据是海量的,汇总计算起来也要慢一些,但是,只要能够提供有效的分析结果就达到目的了。

数据库与数据仓库的区别,实际上就是OLTP与OLAP的区别。

  • 操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发的支持用户数等问题。传统的数据库作为数据管理的主要手段,主要用于操作型处理。
  • 分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

基本每个企业都会经历从数据库到数据仓库的阶段,以电商行业为例:

  • 电商行业早期入行门槛低,找个外包团队,做一个网页前端 + 几台服务器 + 一个MySQL,就能开门迎客了。
  • 第二阶段,流量来了,客户和订单都多起来了,这个时候就需要升级架构变成多台服务器和多个业务数据库(分布式存储),这个阶段的业务数据和指标还可以勉强从业务数据库里查询。
  • 第三个阶段,随着业务的发展数据量呈指数级增长,面临的业务问题越来越复杂。领导者关心的问题,从最初非常粗放的:“昨天的收入是多少”、“上个月的 PV、UV 是多少”,逐渐演化到非常精细化和具体的用户消费行为分析,如“20~30岁女性用户在过去五年的第一季度化妆品类商品的购买行为在促销活动方案中的表现”。 这类非常具体且能够对公司决策起到关键性作用的数据,很难从业务数据库从调取出来。原因在于: 1、业务数据库中的数据结构是为了完成交易而设计的,不是为了查询和分析的便利设计的。 2、业务数据库大多是读写优化的,即又要读(查看相关的商品信息),也要写(产生订单,完成支付)。因此对于大批量的数据读取(复杂的查询指标)是支持不足的。 为了解决此类问题就需要建立数据仓库,它的作用在于: 1、数据结构为了分析和查询的便利而设计。 2、只读优化的数据库,即不需要它写入速度多么快,只要做大量数据的复杂查询的速度足够快就行了。

——ETL

数据仓库中的数据通常从多个数据源中提取,整合、汇总后成为数据仓库中的历史记录。多个数据源(内部业务数据库、外部文件、爬虫、第三方API等等)的数据存储方式不同,所以需要经过抽取、清洗、转换。 数据从数据库到数据仓库的处理过程就是ETL(Extract-Transform-Load):

常用的ETL工具:Datastage、Informatica、Kettle

——数据仓库的分层存储

一般来说数据仓库会至少分为ODS、DSA、EDW三个层级,当然层级的名称每个公司可能不同,这里主要是在作用上进行区分解释。

  • ODS层存储的是业务数据库在一个时间范围内新增或更新的数据,它的存储是线性增长的,有数据发生变化,ODS才会存储数据,相当于是业务数据库的一个拷贝。
  • DSA层是经由ODS层抽取、清洗、转换后的数据。
  • EDW层是对DSA层进行业务模型的抽象之后的合并层,将一些冗余的库表简化,做成比较利于数据抽取的库表。

数据仓库的输入就是各种各样的数据源,最终的输出是用来为企业做数据分析、数据挖掘和数据报表。

——常用的数据仓库

Hive是基于Hadoop数据仓库工具,可以对存储在HDFS上的文件数据集进行查询和分析处理。Hive对外提供了类似于SQL语言的查询语言 HiveSQL,在做查询时将HiveSQL语句转换成MapReduce任务,在Hadoop层进行执行。

HDFSHadoop的分布式文件系统,在这里作为数据仓库的存储层。图中的Data Node就是HDFS的众多工作节点。

MapReduce是一种针对海量数据的并行计算模型,可以简单理解为对多个数据分片的数据转换和合并。

Teradata数据仓库配备性能最高、最可靠的大规模并行处理 (MPP) 平台,能够高速处理海量数据,其性能远远高于Hive


——热门课程推荐:

想学习PYTHON数据分析与金融数字化转型精英训练营,您可以点击>>>“人才转型”了解课程详情;

想从事业务型数据分析师,您可以点击>>>“数据分析师”了解课程详情;

想从事大数据分析师,您可以点击>>>“大数据就业”了解课程详情;

想成为人工智能工程师,您可以点击>>>“人工智能就业”了解课程详情;

想了解Python数据分析,您可以点击>>>“Python数据分析师”了解课程详情;

想咨询互联网运营,你可以点击>>>“互联网运营就业班”了解课程详情; 

想了解更多优质课程,请点击>>>

数据分析咨询请扫描二维码

客服在线
立即咨询