第一章 数据仓库基础

数据仓库学习列表




一、数据仓库诞生的原因

历史数据积存:历史数据使用频率过低,堆积在业务数据库中,会导致查询性能下降
企业数据分析需要:各个部门自己建立独立的数据抽取系统,导致数据不一致,资源 浪费严重,数据库权限也会存在风险

二、数据仓库的基本概念

  • 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库顾名思义,是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。
  • 数据仓库将各个异构的数据源数据库的数据给统一管理起来,并且完成了质量较差的数据的剔除、格式转换,最终按照一种合理的建模方式来完成源数据组织形式的转变,以更好的支持到前端的可视化分析。数据仓库的输入方式是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。

在这里插入图片描述

三、数据仓库的主要特征

数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、稳定的(Non-Volatile)和时变的(Time-Variant )数据集合,面向数据分析,用以支持管理决策。

1.主题性

不同于传统数据库对应于某一个或多个项目,数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织。

2.集成性

数据仓库中存储的数据是来源于多个数据源的集成,原始数据来自不同的数据源,存储方式各不相同。要整合成为最终的数据集合,需要从数据源经过一系列抽取、清洗、转换的过程。

3.稳定性

数据仓库中保存的数据是一系列历史快照,不允许被修改。用户只能通过分析工具进行查询和分析。这里说明一点,数据仓库基本上是不许允许用户进行修改,删除操作的。大多数的场景是用来查询分析数据。

4.时变性

据仓库会定期接收新的集成数据,反应出最新的数据变化。这和稳定特点并不矛盾。
另外说明,上面我们已经说了数据仓库中的历史数据是不能修改的,那我们每天修改或新增的数据,从业务数据库中导入数据仓库中,可以以时间戳标记版本来标记最新数据,老旧的数据就可以定期删除,保证数据分析的准确性。

四、数据仓库分层架构

  • 按照数据流入流出的过程,数据仓库架构可分为三层——源数据、数据仓库、数据应用。
  • 数据仓库的数据来源于不同的源数据,并提供多样的数据应用,数据自下而上流入数据仓库后向上层开放应用,而数据仓库只是中间集成化数据管理的一个平台。

1.源数据层(ODS)

源数据层(ODS): 操作性数据(Operational Data Store) ,是作为数据库到数据仓库的一种过渡,ODS的数据结构一般与数据来源保持一致,可以增加字段用来进行数据管理,存储的历史数据只是只读的,提供业务系统查询使用, 而且ODS的数据周期一般比较短。ODS的数据为后一步的数据处理做准备。

2.数据仓库层(DW)

数据仓库层(DW):数据仓库(Data Warehouse),是数据的归宿,这里保持这所有的从ODS到来的数据,并长期保存,而且这些数据不会被修改,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。

3.数据应用层(DA)

数据应用层(DA):数据应用(Data Application),为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据,该数据面向应用。如根据报表、专题分析需求而计算生成的数据。

五、数据仓库之ETL

  • 建立OLAP应用之前,我们要想办法把各个独立系统的数据抽取出来,经过一定的转换和过滤,存放到一个集中的地方,成为数据仓库。这个抽取,转换,加载的过程叫ETL(Extract, Transform,Load),目的是将企业中分散、零乱、标准不统一的数据整合到一起。
  • ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持ETL的正常和稳定。

在这里插入图片描述

1.数据抽取Extract

抽取的数据源分为结构化数据、非结构化数据,半结构化数据。结构化一般采用JDBC、数据库日志方式,非结构或半结构化数据会建通文件变动。

抽取方式:

  • 全量抽取:适用于数据量小且不容易判断其数据发生改变的诸如关系表,维度表,配置表等,一般用于初始化数据。
  • 增量抽取:适用于数据量大,为了节省抽取时间而采用的抽取策略,一般用于数据更新

2.数据转换Transform

用ODS中的增量或者全量数据来刷新DW中的表;包含数据清洗,清洗掉噪音数据

  • 数据清洗(主要是针对非结构化或半结构化数据)
    • 空值处理:将空值替换为特定值或直接过滤掉
    • 验证数据正确性:把不符合业务含义的数据做统一处理
    • 规范数据格式:比如把所有日期都规范成YYYY-MM-DD的格式
    • 数据转码:把一个源数据中用编码表示的字段通过关联编码表转换成代表其真实意义的值
    • 数据标准统一:比如在源数据中表示男女的方式有很多种,在抽取的时候直接根据模型中定义的值做转化。

3.数据加载Load

每insert数据到一张表都可以称为数据加载,就是将处理完的数据导入到对应的目标源里

六、ETL工具

  • 结构化数据ETL工具:
    Sqoop、Kettle、Datastage、Informatica、Kafka
  • 非|半结构化数据ETL工具:
    Flume、Logstash

七、主流的数据仓库

1. Hive

是基于Hadoop的数据仓库工具。
可以对存储在HDFS上的文件数据集进行查询和分析处理。Hive对外提供了类似于SQL语言的查询语言 HiveQL,在做查询时将HQL语句转换成MapReduce任务,在Hadoop层进行执行。
HDFS:Hadoop的分布式文件系统,在这里作为数据仓库的存储层。图中的Data Node就是HDFS的众多工作节点。
MapReduce:一种针对海量数据的并行计算模型,可以简单理解为对多个数据分片的数据转换和合并。

2. Teradata数据仓库

配备性能最高、最可靠的大规模并行处理 (MPP) 平台,能够高速处理海量数据,其性能远远高于Hive。使企业可以专注于业务,无需花费大量精力管理技术,因而可以更加快速地做出明智的决策,实现 ROI(投资回报率) 最大化。


数据库与数据仓库的区别

  • 数据库:数据库是面向交易的处理系统(业务系统),它是针对具体业务在数据库联机的日常操作,通常对记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理,也被称为联机事务处理 OLTP(On-Line Transaction Processing)。
  • 数据仓库::数据仓库一般针对某些主题的历史数据进行分析,支持管理决策,又被称为联机分析处理 OLAP(On-Line Analytical Processing)。

首先要明白,数据仓库的出现,并不是要取代数据库。

​​​​​​​数据仓库VS数据库

  1. 数据库是面向事务的设计,数据仓库是面向主题设计的。
  2. 数据库一般存储业务数据,数据仓库存储的一般是历史数据。
  3. 数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
  4. 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。

eg:
以银行业务为例,数据库是事务系统的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来,这里,可以简单地理解为用数据库记账。 而数据仓库是分析系统的数据平台,它从事务系统获取数据,并做汇总、加工,为决策者提供决策的依据。比如,某银行某分行一个月发生多少交易,该分行当前存款余额是多少。如果存款又多,消费交易又多,那么该地区就有必要设立ATM了。
显然,银行的交易量是巨大的,通常以百万甚至千万次来计算。事务系统是实时的,这就要求时效性,客户存一笔钱需要几十秒是无法忍受的,这就要求数据库只能存储很短一段时间的数据。而分析系统是事后的,它要提供关注时间段内所有的有效数据。这些数据是海量的,汇总计算起来也要慢一些,但是,只要能够提供有效的分析数据就达到目的了。数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。

以上就是今天要讲的内容,本文仅仅介绍了数据仓库相关知识。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值