- 概述
- 数据仓库特点
- OLTP VS OLAP
- 数据仓库建模-方法论
概述
数据仓库(英文名称为:Data Warehouse ),可简写为 DW ;数据仓库是一个面向主题、集成性、稳定性、反映历史变化的数据集合;主要用于组织积累的历史数据,以及使用分析方法( OLAP 、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能。
数据仓库特点
面向主题
常见的操作型数据库主要面向事务性处理,而数据仓库中的数据一般按照主题进行划分。主题是对业务数据的一种抽象,是从较高层次上对信息系统中的数据进行归纳和整理。例如:根据原系统业务数据的特点进行主题的抽取和确定每个主题所包含的数据内容。例如客户主题、产品主题、财务主题等;而客户主题包括客户基本信息、客户信用信息、客户资源信息等内容。分析数据仓库主题的时候,一般方法是先确定几个基本的 主题,然后再将范围扩大,最后再逐步求精
集成性
原始数据来源于不同的数据源,要整合成最终数据,需要经过 ETL(抽取、清洗、转换)的过程;最后必须对数据进行编码(例如:金额是以元或者万元为统一计量、时间是以固定格式或者时间戳为记录方式)统一和必要的汇总,以保证数据仓库内数据的一致性。
稳定性
数据仓库中的数据反映的都是一段历史时期的数据内容,它的主要职能是查询与分析(通常情况下不会进行任何修改操作);一般情况下数据会被长期保留,当超过规定的期限才会被删除。通常数据仓库需要做的工作就是加载、查询和分析。
反映历史变化性
数据仓库不断从操作型数据库或其他数据源获取变化的数据,从而进行分析与预测;因此一般数据仓库中数据表的维度都含有时间键,以表明数据的历史时期信息,然后不断增加新的数据内容。通过这些历史信息可以对企业的发展历程和趋势做出分析和预测。
OLTP VS OLAP
OLTP(On-Line Transaction Processing)联机事务处理,主要针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题;传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
OLAP(On-Line Analytical Processing)联机分析处理,一般针对某些主题的历史数据进行分析,支持管理决策。
总的来说,数据仓库的出现不是为替代数据库,而是更好的利用数据创造价值
;其中 OLTP 主要面向的是数据的随机读写,因此在建模方面采用的是 3NF 的关系模型,从而在事务处理中解决数据的冗余和一致性问题。而 OLAP 主要面向的是数据的批写操作,数据的冗余和一致性不是 OLAP 所关注的;其主要关注数据的整合,以及一次性处理复杂大数据查询与处理的性能,所以才会采用不一样的法式建模。
OLTP VS OLAP 特性比较:
操作型(OLTP) | 分析性(OLAP) | |
用户 | 操作人员、一线管理人员 | 分析决策人员、高级管理人员 |
场景 | 面向事务 | 面向分析 |
模型 | 实体 – 关系(E-R) | 星型或雪花 |
操作粒度 | 操作一个单元 | 操作一个集合 |
场景 | 面向事务 | 面向分析 |
数据量大小 | 小(GB ~ TB) | 大(>= TB) |
响应时间 | 毫秒级别 | 秒、分甚至小时 |
数据类型 | 当前应用的最新数据 | 历史的、聚集的、多维、集成、统一的数据 |
数据仓库建模-方法论
谈及数仓建模方法论一定离不开两位杰出的大师,一位是数据仓库之父
Bill Inmon,另一位是数据仓库权威专家
Ralph Kimball;两位大师每人都有一本经典著作,Inmon 大师著作《数据仓库》及 Kimball 大师的《数仓工具箱》。这两本书也代表了两种不同的数仓建设模式,分别是范式建模与维度建模。
什么是范式建模与维度建模
范式建模
提出的方法是从全企业高度设计一个 3NF 模型,即实体关系( E-R 模型)模型描述企业业务;其中数仓中的 3NF 建模与 OLTP 中的 3NF 建模有区别在于,数仓是站在企业角度面向主题的抽象,而不是针对某一个具体业务流程的实体对象关系的抽象。
维度建模
提出的方法是从分析决策的需求构建模型,它重点关注的是如何快速完成需求分析;同时具有较好大规模复杂查询的响应性能(例如:星型模型)。
范式建模与维度建模构建流程
范式建模
从整体流程来看是自上而下的,其中上
指的是上游的数据,下
指的是下游的数据;即是以数据为导向进行构建,是一种瀑布流开发的方式。在构建事实表与维度表方面,则不强调因为数据源可能会变化较大,所以更加强调数据清洗工作。
自上而下:分散异构的数据源 -> 数据仓库 -> 数据集市
维度建模
从整体流程来看是自下而上的;是以需求为导向进行构建。在构建事实表与维度表方面,则是强调模型由事实表与维度表组成,注重事实表与维度表的设计。
自下而上:数据集市(主题划分)-> 数据仓库 -> 分散异构的数据源
范式建模与维度建模的特点
范式建模
- 实施周期非常长;
- 需要全面了解企业业务与数据,是以部门为中心;
- 对建模人员的能力要求非常高;
维度建模
- 以业务过程为中心,模型结构简单且面向分析;
- 反规范化的设计,缩短开发周期;
- 提高查询性能但增加了数据冗余,具有较大规模复杂查询的响应性能;
范式建模与维度建模示例
范式建模
维度建模
通过上的例子可以看出来,范式建模
是保证数据的一致性,让数据没有冗余;以及数据解耦,方便后期维护;但是这样就会导致表的数量变多,复杂查询时关联表会很多使得查询性能降低。而维度建模
相对数据结构上更加简单开发周期也会短,因此在查询的时候性能上也有所提升;但这也会出现大量的数据冗余,以及数据口径可能不一致的问题。
相比较下目前大多数数仓建模使用的维度建模,主要原因是数仓主要面向的功能是分析,而当前的存储成本就不是考虑的重点(存储成本相对以前更低)。数仓的核心是赋能业务(可以使业务更快看到各项指标,以及提供数据挖掘的基础),因此高效与稳定是数仓建模目的。