数据仓库基础与Apache Hive入门
一、数据仓库基本概念
1、数据仓库概念
数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。
数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。
数仓专注分析
- 数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统;
- 同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用;
- 这也是为什么叫“仓库”,而不叫“工厂”的原因。
2、 案例:数据仓库为何而来
先下结论:为了分析数据而来,分析结果给企业决策提供支撑。
下面以中国人寿保险公司(chinalife)发展为例,阐述数据仓库为何而来?
(1)业务数据的存储问题
中国人寿保险(集团)公司下辖多条业务线,包括:人寿险、财险、车险,养老险等。各业务线的业务正常运营需要记录维护包括客户、保单、收付费、核保、理赔等信息。这么多业务数据存储在哪里呢?
联机事务处理系统(OLTP) 正好可以满足上述业务需求开展, 其主要任务是执行联机事务处理。其基本特征是前台接收的用户数据可以立即传送到后台进行处理,并在很短的时间内给出处理结果。
关系型数据库(RDBMS) 是OLTP典型应用,比如:Oracle、MySQL、SQL Server等。
(2)分析型决策的制定
随着集团业务的持续运营,业务数据将会越来越多。由此也产生出许多运营相关的困惑:
能够确定哪些险种正在恶化或已成为不良险种?
能够用有效的方式制定新增和续保的政策吗?
理赔过程有欺诈的可能吗?
现在得到的报表是否只是某条业务线的?集团整体层面数据如何?
为了能够正确认识这些问题,制定相关的解决措施,瞎拍桌子是肯定不行的。
最稳妥办法就是:基于业务数据开展数据分析,基于分析的结果给决策提供支撑。也就是所谓的数据驱动决策的制定。
OLTP环境开展分析可行吗?
可以,但是没必要
- OLTP系统的核心是面向业务,支持业务,支持事务。所有的业务操作可以分为读、写两种操作,一般来说读的压力明显大于写的压力。如果在OLTP环境直接开展各种分析,有以下问题需要考虑:
- 数据分析也是对数据进行读取操作,会让读取压力倍增;
- OLTP仅存储数周或数月的数据;
- 数据分散在不同系统不同表中,字段类型属性不统一;
数据仓库面世
- 当分析所涉及数据规模较小的时候,在业务低峰期时可以在OLTP系统上开展直接分析。
- 但为了更好的进行各种规模的数据分析,同时也不影响OLTP系统运行,此时需要构建一个集成统一的数据分析平台。该平台的目的很简单:面向分析,支持分析,并且和OLTP系统解耦合。
- 基于这种需求,数据仓库的雏形开始在企业中出现了。
数据仓库的构建
- 如数仓定义所说,数仓是一个用于存储、分析、报告的数据系统,目的是构建面向分析的集成化数据环境。我们把这种面向分析、支持分析的系统称之为OLAP(联机分析处理)系统。当然,数据仓库是OLAP系统的一种实现。
- 中国人寿保险公司就可以基于分析决策需求,构建数仓平台。
3、数据仓库主要特征
面向主题性(Subject-Oriented)
- 主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、