一、数仓的诞生背景
1.1 数仓诞生原因
- 历史数据积存
- 企业数据分析需要
(1)历史数据积存
历史数据使用频率低,堆积在业务库中,导致性能下降。
对于企业来说,线上的业务系统随着业务的进行,会源源不断的产生数据,这些数据都会存储在业务数据库中(例如Mysql、Oracle、SQL Server等)来支持业务系统的运行,但是,当线上业务系统运行超过一定时间后会累积越来越多的数据,就会对我们的业务数据库产生一定的负载,从而导致我们的业务系统运行较慢。而这些历史数据中,有相当一部分是冷数据,即业务系统一般对最近产生的数据(当天、一周内、一个月内)调用比较频繁,对较早之前的数据调用频率很低。
所以为了避免随着时间的推移,历史数据积压对业务数据库产生的影响,妨碍业务的正常运行,企业需要定期将积压的冷数据从业务数据库中转移出去,存储到一个专门存放历史数据的仓库中。这就是——数据仓库。
(2)企业数据分析需要
各部门自己建立独立的数据抽取系统,导致数据不一致.
企业将历史数据存储到数据仓库中后,这些数据不仅可以改善业务数据库的性能;还可以用来进行数据分析,从而辅助管理层进行决策。以历史数据积存为导向,这种发展是顺其自然的。
但有的企业开始并没有历史数据积存,然而仅仅是对数据分析特别看重。这些企业可能会存在多个部门需要进行数据分析的任务。这些企业建立数据仓库的原由,是以数据分析为导向的。
在没有建立数据仓库时候,各个部门是有自己的数据抽取系统的,他们做数据分析的时候是在业务数据库了提取数据,然后分析。但是这样存在一些问题:
- 各个部门分析的结果不一致,例如各部门提取数据的时间不同,就会导致数据不同,从而导致分析的结果有差异;
- 各部门建立各自的数据抽取系统,这样很浪费资源;
- 每个部门有一个抽取系统,数据库需要给权限,这样数据库的权限管理也存在极大的风险。
因此,企业统一建立一个数据仓库,使用专门的数据抽取系统,定期从业务数据库把数据抽取到数据仓库里面,①实际上就是数据仓库为各个部门建立了一个统一的数据视图,就直接解决了分析结果不一致的问题;②数据仓库可以直接开放访问接口,这样业务数据库和数仓的权限管控就更具有针对性了。
数仓面向于数据分析,业务数据库面向于业务系统。企业无论是以历史数据积存,还是数据分析为导向建立的数据仓库。数据积存、数据分析,这两个都是数据仓库的基本功能与建设目的。
1.2 基本概念
数据仓库(Data Warehouse,DW)
- 由数据仓库之父比尔.恩门(Bill Inmon)提出;
- 数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合;
- 主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能。
数据仓库特点
(1)面向主题:为数据分析提供服务,根据主题将原始数据集合在一起;
(2)集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程(便于后面的分析);
(3)非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析;
(4)时变性:数仓会定期接收、集成新的数据,从而反映出数据的最新变化。
数据仓库与数据库的区别
- 数据库面向事务设计,属于OLTP(在线事务处理)系统,主要操作是随机读写;在设计时尽量避免冗余,常采用符合范式规范来设计;
- 数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计。
1.3技术实现
1.3.1数据仓库建设方案
- 传统数据仓库
- 大数据数据仓库
1.3.2传统数据仓库
传统的数据仓库是由关系型数据库组成MPP(大规模并行处理)集群,是由单机数据库发展而来的,业务数据库一般是单机的关系型数据库,数仓在建设初期一般会选用关系型数据库,是为了同步业务数据库的数据,使得数据迁移起来更加方便,而且它的业务系统这块改造的成本