数据仓库原理<1>:数据库与数据仓库
updated 2015.8.27
updated 2015.8.26
updated 2015.8.23
0. 说明
《数据仓库原理》系列博文,是笔者在学习数据仓库与商业智能时的读书笔记,现重新梳理思路,分享在这里,希望读者批评指正。
本系列主要包括以下几部分内容:
[1].数据库与数据仓库
为什么有了数据库还需要数据仓库?什么又是数据仓库?
[2].数据仓库系统的体系结构
数据仓库系统的体系结构包括哪些组成要素?各自的作用又是什么?
[3].数据仓库与ODS
什么是ODS?为什么需要ODS?DB~ODS~DW三层体系结构又是什么?
[4].联机分析处理(OLAP)
OLAP是什么?OLAP与OLTP有什么区别?多维数模型有哪几种?多维分析操作又有哪些?
每部分分别作为一篇博文进行总结。
1. 引言
本篇主要讲述什么是数据仓库?数据仓库产生的背景和原因,数据仓库的定义、特征、功能。
人类对数据的管理经历人工管理、文件系统管理、数据库系统管理三个阶段,数据库管理实现了对数据的永久存储、有序组织和共享。在数据库系统管理阶段的早期,人们对数据的使用主要集中在查、删、增、改等操作,当数据积累到一定程度时,人们希望对数据进行统计、多维分析、甚至挖掘来产生更多的价值,这时候,传统的操作型数据库就无法满足这一需求,因此便产生了数据仓库。
传统的数据库与数据仓库在存放的数据特征、性能要求、应用范围、面向人员等方面均有所差别。
2. 两种数据处理模式:操作型数据处理和分析型数据处理
计算机系统中存在着两种不同的数据处理模型:操作型数据处理和分析型数据处理,又分别称为联机事务处理(Online Transaction Process,OLTP)和联机分析处理(Online Analysis Process,OLAP)。
操作型数据处理,是指对数据库联机的日常操作,主要完成数据的收集、整理、存储以及增删查改等操作,主要由一般工作人员和基层管理人员完成。
分析型数据处理,是指对数据的再加工,通常是对海量的历史数据查询和分析,从中获取信息,主要由分析人员和中高级管理人员完成。
3. 两类数据:操作型数据与分析型数据
两种数据处理模式对应着两类数据:操作型数据和分析型数据。

操作型数据处理主要应用于企业的日常事务处理工作,数据库中存放的是细节的数据,也是当前的数据,反映的是最近一次修改后的结果。对数据的操作主要是数据的增删查改。数据库中的数据是可以修改的。数据的组织以方便事务处理、提高事务处理性能为目标。
分析型数据处理主要应用于企业的管理工作,数据库中主要存放的是历史数据和综合数据。对数据的操作主要集中在查询和统计分析,需要涉及大量数据,数据的组织方式以方面查询分析为主要目标,为了提高查询效率允许存在某种程度上的数据冗余。
4. 数据库的局限性
传统的数据库在操作型数据处理上取得了巨大的成功,但是在分析型数据处理上却遇到了瓶颈。主要有以下几个原因:
(1) 数据的分散。操作型数据处理往往只需要涉及一个部门业务或者一个系统的数据,因此现在企业的数据是分散在各个操作型数据库,而分析型操作往往面向整个企业、跨部门进行。
(2) 数据不一致的问题。从各个操作型数据库中抽取数据会存在数据不一致的问题,比如同名异义、异名同义、单位不统一、字长不一致等,因此在分析操作前必须首先对这些数据进行预处理。
(3) 历史数据问题。分析型数据操作往往需要大量的历史数据,但是操作型数据库一般存放的是短期数据。
(4) 数据粒度问题。分析型数据操作往往关注的是综合性数据,但是操作型数据库中存放的是细节数据,如果在分析前对细节数据进行综合,会严重影响分析的效率。
因此,为了克服以上问题,使两种数据操作都能够有效的进行,就产生了数据仓库。
总结:数据库和数据仓库分工不同,数据库存放操作型数据,用于操作型数据处理,关注的事务处理的效率;数据仓库存放分析型数据,用于分析型数据处理,关注的是分析和查询的效率;两者功能不同、用途不同,因此结构也会不同。
5. 数据仓库的定义
“数据仓库之父” William H.Inmon在其
《Building the Data Warehouse》中这样定义数据仓库:“数据仓库是一个面向主题的、集成的、不可更新的、随时间不断变化的用来更好地支持企业或组织决策分析的数据集合。”
这一定义指出了数据仓库中的数据应该具备以下4个特征:
- 面向主题的;
- 集成的;
- 不可更新的;
- 随时间不断变化的。
也指出了数据仓库的用途:面向企业决策分析。
简单地说,数据仓库就是一种面向决策主题的,从多个数据源集成数据的,拥有当前数据、细节级和综合级的历史数据的,以查询和分析为主的数据库系统,目的是支持企业决策。
6. 数据仓库数据的特征
(1)面向主题的
面向主题的数据组织方式是相对面向应用的数据组织方式而言的。
什么是面向主题的数据组织方式?
面向主题的数据组织方式就是在较高层次上对分析对象的数据的一个完整的、一致的描述,能完整、统一地刻画各个分析对象所涉及企业的各项数据,以及数据之间的联系。
企业在信息化建设时通常会按照业务类别来建立子系统,比如采购、销售、库存、人事、财务,子系统背后就是各种操作型数据库。基于这样的数据环境,如果需要对“顾客”这一对象进行相关的分析处理,就需要从各个操作型数据库中提取数据,即使能够取出来也会面临各种问题,比如数据不一致。这就是面向应用的数据组织方式,显然不能满足分析需要。
面向主题就是根据分析需要,将分析对象所涉及的数据以及数据之间的联系从企业各个方面进收集、汇聚,形成一个完整的、一致的、统一的数据集合。这里的主题就是分析对象,比如:“顾客”、“商品”、“供应商”。
面向主题的数据组织方式强调的就是要形成关于主题的一致的信息集合。
(2)集成的
由于数据仓库中的数据是按照主题组织的,因此所涉及的数据来源于各个操作型数据库、数据文件或者网络。由于数据来源不同,就可能存在不一致的情况,比如同名异义、异名同义、单位不同、字长不同,因此在进入数据仓库前就需要对数据进行清洗、转换等操作。又因为之前的数据是面向应用的,因此需要将数据从面向应用到面向主题进行转变。而数据仓库中不仅有细节数据,还需要大量的综合性数据,所以就需要对数据进行综合、计算。完成这几步后,数据才能被加载到数据仓库中。
(3)不可更新的
不可更新是指数据一旦进入到数据仓库中,就不允许修改,并且会被长期保留。
数据仓库中的数据反映的是一段相当长时间内的历史数据,一般会按照一定的周期(月、日)进行加载和刷新。
(4)随时间不断变化的
数据仓库会随着时间的变化不断增加新的数据。因为数据仓库中的数据是来源于操作型数据库等数据源的历史数据和综合性数据,所以就需要定期的去捕捉这些数据源中的新数据,将其加载到数据仓库中。
数据仓库中的数据会有一定的存储期限,当超过这个期限后,数据就会被删除掉。
数据仓库中有大量的综合数据,而很多数据是按照时间进行组织的,比如月记录、日记录,所以就需要按照这一时间周期定期的加载新数据。
7. 数据仓库的功能
数据仓库是一种数据存储,将不同来源的异构数据进行清洗、转换、加工,集成并存储起来,支持分析查询需求,从而为企业决策提供支持。
8. 参考文献
[1] 数据仓库(原书第4版),William H.Inmon著,王志海等译,机械工业出版社,2006.8
[2] 数据仓库与数据分析教程,王珊等编著,高等教育出版社,2012.8
数据仓库原理<1>:数据库与数据仓库的更多相关文章
- 数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别
什么是数据仓库 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH.数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合.它出于分析性报告和决策支持目的而创建. ...
- 【clickhouse专栏】数据库、数据仓库之间的区别与联系
从本篇文章开始,笔者打算写一个系列的<clickhouse专栏>,其全称是Click Stream,Data WareHouse,简称ClickHouse.从其全称中的"Data ...
- Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx
Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx 1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 ...
- 数据仓库原理<2>:数据仓库系统的体系结构
1. 引言 本篇主要讲述数据仓库系统的体系结构与组成要素.数据集市与数据仓库之间的关系.元数据的定义与作用. 在上一篇,笔者介绍了数据仓库的定义: "数据仓库是一个面向主题的.集成的.不可更 ...
- 十一、Hadoop学习笔记————数据库与数据仓库
数据仓库是集成的面向主题的数据库的集合 面向主题主要是宏观上解决某一类问题,集合性指数据集 数据库主要处理用于事务处理,数据仓库用于分析处理,数据库适用于操作型数据,便于增删改查, 数据仓库则用于挖掘 ...
- 数据仓库原理<4>:联机分析处理(OLAP)
本文转载自:http://www.cnblogs.com/hbsygfz/p/4762085.html 1. 引言 本篇主要介绍数据仓库中的一项重要分析技术——联系分析处理(OLAP). 在第一篇笔者 ...
- 数据仓库原理<3>:数据仓库与ODS
1. 引言 本篇主要讲述操作数据存储(ODS)系统产生的背景.定义.特点,以及它与数据仓库的区别. 在前两篇,笔者介绍了什么是数据仓库?为什么需要数据仓库?数据仓库系统的体系结构是什么?因此可能在读者 ...
- 数据库与数据仓库的比较Hbase——Hive
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Varian ...
- HIVE---基于Hadoop的数据仓库工具讲解
Hadoop: Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用来开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个分布式文件系统(Hadoop Dist ...
随机推荐
- cocos2d::Vector
C++中的vector使用范例 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简 ...
- [BZOJ1101][POI2007]Zap
[BZOJ1101][POI2007]Zap 试题描述 FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd ...
- 让jar程序在linux上一直执行
当我们把java程序打成jar包后,放到linux上通过putty或其它终端执行的时候,如果按照:java -jar xxxx.jar执行,当我们退出putty或终端的时候,xxxx.jar这个程序也 ...
- HDU 1176免费馅饼 DP数塔问题转化
L - 免费馅饼 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- linux下cp目录时排除一个或者多个目录的方法
说明:/home目录里面有data目录,data目录里面有a.b.c.d.e五个目录,现在要把data目录里面除过e目录之外的所有目录拷贝到/bak目录中 系统运维 www.osyunwei.com ...
- 编译安装0bda 8179无线网卡
CentOS下安装USB无线网卡(Obda:8179) 参考:http://blog.163.com/thinki_cao/blog/static/83944875201311593529913/ c ...
- 【转】ByteArrayOutputStream和ByteArrayInputStream详解
ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的 ...
- python 列表转为字典的两个小方法
1.现在有两个列表,list1 = ['key1','key2','key3']和list2 = ['1','2','3'],把他们转为这样的字典:{'key1':'1','key2':'2','ke ...
- iOS 图片拉伸的解释
以前对于ios的图片拉伸参数一直不太理解,终于看到一篇好文章,转载一下,原文地址:http://blog.csdn.net/q199109106q/article/details/8615661 主要 ...
- 项目总结(五)--- 界面调试工具Reveal
在开发中,我们也许会碰到以下需求:对于一些动态复杂的交互界面,手码去制定界面是常有的事情,然而我们在开发中想修改过一些参数后想看下实时效果,只能重新运行项目,进入到对应的页面来进行修改,是不是有点麻烦 ...