一、 什么是数据仓库?
数据仓库(Data Warehouse)简称 DW 或 DWH,是数据库的一种概念上的升级,可以说是为满足新需求设计上的一种新数据库,而这个数据库是需容纳更多的数据,更加庞大的数据集, 从逻辑上讲数据仓库和数据库没有什么区别的。
二、 数据仓库的特点
1. 面向主题
主题是与传统数据库的面向应用相对应的,是一个抽象概念,是在较高层次上将企业信息系统中的数据综合、归类并进行分析利用的抽象。每一个主题对应一个宏观的分析领域。在逻辑意义上,他是对应企业中某一宏观分析领域所设计到的分析对象。面向主题的数据组织系。
所谓较高层是相对面向应用的数据组织方式而言的,是指按照主题进行数据组织的方式具有更高的数据抽象级别。与传统数据库面向应用进行数据组织的特点相对应。
数据仓库中的数据是面向主题进行组织的。主题是根据分析的要求来确定的。这与按照数据处理或应用的要求来组织的数据是不同的。
2. 主题域
主题域通常是联系较为紧密的数据主题的集合。可以根据业务的关注点,将这些数据主题划分到不同的主题域。主题域的确定必须由最终用户和数据仓库的设计人员共同完成。
3. 主题域、主题、实体间关系
主题设计是对主题域进一步分解,细化的过程。主题域下面可以由很多主题,主题还可以划分为各方多的子主题,而实体则是不可划分的最小单位。主题域、主题、实体的关系如下图所示:
4. 数据集成
数据仓库的数据是从原有分散的数据库中的数据抽取而来的。
操作型数据和支持决策分析型(DSS)数据差距甚大,这里需要做大量的数据清晰与数据整理的工作。
第一: 每一个主题的源数据在原有的分散数据库中有很多重复和不一致,且不同的数据库的数据是和不同的应用逻辑绑定的。
第二: 数据仓库的综合性不能从原有的数据库系统直接得到,因此在数据进入数据仓库之前要进行统一和综合(字段同名异名,异名同义,长度等)。
三、数据仓库与数据库的区别
数据库的操作: 一般称为联机事务处理OLTP(On-Line Transaction Processing),是针对具体的业务在数据库中的联机操作,具有数据量较少的特点,通常对少量的数据记录进行查询、修改。
数据仓库的操作: 一般称为联系分析处理OLAP(On-Line Analytical Processing),是针对某些主题(综合数据)的历史数据进行分析,支持管理决策。
比较项操作性(OLTP)分析型(OLAP)
关注细节综合或提炼
模型实体 - 关系(E-R)星型或雪花
操作可更新只读,追加
操作粒度操作一个单元操作一个集合
场景面向事务面向分析
数据量小大
需求日常操作决策需求
业务方向客户信息、订单等查询客户登录间隔,市场细分等
1. 数据仓库常用系统架构
ODS(临时存储层): 这一层做的工作是贴源,而这些数据和源系统的数据是同构,一般对这些数据分为全量更新和增量更新,通常在贴源的过程中会做一些简单的清晰。
DW层(数据仓库层): 将一些数据关联的日期进行拆分,使得其更具体的分类,一般拆分成年、月、日,而ODS层到DW层的ETL脚本会根据业务需求对数据进行清晰、设计,如果没有业务需求,则根据源系统的数据结构和未来的规划去做处理,对这层的数据要求是一致、准确、尽量建立数据的完整性。
APP层(引用层): 提供报表和数据沙盘展示所需的数据。
2. 为什么要分层?
在未分层的情况下,数据之间的耦合性与业务耦合性是不可避免的,当源业务系统的业务规则发生变化时,可能影响整个数据的清洗过程。
数据分层简化了数据清晰的过程,每一层的逻辑变得更加的简单和易于理解,当发生错误或规则变化时,只需要进行局部调整。通过大量的预处理来提升应用系统查询速度,进而提升用户体验,因此数据仓库会冗余大量的数据,是典型的空间换时间的策略。
3. 为什么需要数据仓库?
进行全面的业务梳理时,我们可以通过业务模型,全面了解业务结构及运行情况,按照业务特定的规律分门别类的程序化,改进业务的流程。
通过模型的建设,我们可以很的看到数据之间内在的关联关系,从而建立全方位的数据视角,并消灭信息孤岛和数据差异化的问题,进而保证数据的一致性。
模型可以很好的帮助我们分离出底层技术的实现和上层业务的展现,当上层业务发生变化时,通过数据模型,底层的技术实现可以相应了业务的变动,进而解决数据库的灵活性。
在模型中可以很好的看出开发人员和业务人员之间的系统建设范围内的界定,及未来的规划。
4. 什么是数据模型?
数据模型是数据关系的一种映射,就是将业务之间的关系,用模型图形化的方式描绘出来,而不再是脑海中一个模糊的关系。
在设计数据仓库模型和架构时,我们需要懂具体的技术,也需要了解行业的知识和经验来帮助我们对业务进行抽象、处理,进而生成各个阶段的模型。
5. 数据模型架构
在大体上,我们将数据模型分为5大块。
系统记录域: 数据仓库业务数据存储区,保证数据的一致性。
内部管理域: 用于内部管理的元数据,统一的元数据管理。
汇总域: 这里的数据来自于系统记录域的汇总,保证分析域的主题分析性能,满足部分报表查询。
分析域: 每个业务的具体主题业务分析,可以单独存储在相应的数据集市中。
反馈域: 用于相应的前端的反馈数据,视业务的需求设置这个域。
6. 维度和指标(度量)
维度和指标是数据分析领域常用的概念,亦是在设计数据仓库过程中需要考虑的。
维度就是数据的观察角度,即从哪个角度去分析问题,看待问题。
**指标(度量)**就是从维度的基础上去衡算这个结果的值。
比如银行采集的数据:
时间(维度)分行(维度)存款额(指标)
1999年A分行1000W
2000年A分行2000W
2001年A分行3000W
1999年B分行500W
2000年B分行1600W
2001年B分行3300W
维度: 一般是一个离散的值,比如时间维度上某一个独立的日期或地域,因此统计时,可以把维度相同记录的数据聚合在一起,应用聚合函数做累加、均值、最大值、最小值等聚合计算。
指标(度量): 就是被聚合的通计算,即聚合运算的结果, 一般是一个连续的值。
比如我们可以从银行的存款额和企业的贷款额之间的计算,推算出目前的市场状况是如何,如果企业的贷款额高,银行的存款额也高,说明人们不愿意消费了,都把钱存起来,小型企业的产品卖不出去,要发工资,那么自然要贷款,这只是一个例子,具体还需要结合很多数据做分析。