李小强 何珊 何金明
摘 要: 数据仓库的产生是信息技术发展的必然结果。它是在数据库的基础上发展起来的,又不同于数据库。数据库是作为数据管理的手段,主要用于事务处理,而数据仓库则对联机分析的能力提出更高的要求。本文通过对数据库和数据仓库的概念及应用进行较全面的对比分析,对数据仓库有更深刻的理解。
关键词: 数据库 数据仓库 区别
很多BI论坛上在探讨数据仓库的概念与理解:为什么要建立数据仓库,数据仓库和数据库有什么区别?理论上的说法很多,但要真正很好地理解,能简洁地向客户阐述明白,让客户觉得建立数据仓库是一件值得做的事情,就有必要回答这个问题。
一、数据库与数据仓库的概念区别
严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个“数据库”就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数,等等。这些工作如果都在计算机上自动进行,那人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种“数据库”,使其可以利用计算机实现财务、仓库、生产的自动化管理。J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。
数据仓库是一种系统,这种系统是用数据库装东西;关键是装的什么样的数据,数据库装的原始数据,没经过任何加工;而数据仓库是为了满足分析需要,对源数据进行了Transform过程,具体是怎样一个处理过程,可以从BillInmon的仓库定义四个特性进行理解。数据仓库系统与其他基础业务系统(例如财务系统、销售系统、人力资源系统等)的区别是:
基础业务系统的特点是各管各的,例如农场系统生产了白菜,那么用一个数据库来装,人力资源系统生产了猪肉,再用一个数据库来装。我要做一道菜,取菜的方式为如下两种。一是分别到各个数据库去取,比较麻烦,同时各个数据库中放的是一些比较原始的东西,我要拿过来做菜,从生菜到下锅还需要经过很多道工序。二是让种菜的菜农送过来,但送过来的东西不一定是我想要的,而且不同的时候我想要不同的东西,这样对买卖双方造成很多麻烦。为了减少这些困扰,就需要改进从菜农供菜到炒菜的流程,超市就应运而生了。数据仓库系统就是建立一个大的超市,将各地菜农出产的东西收集过来,清洗干净,分门别类地放好。这样,你要哪种菜的时候,直接从超市里面拿就可以了。
二、数据库与数据仓库应用于不同的方向
从应用上来讲,数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
因此设计上,数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID。
任何技术都是为应用服务的,结合应用可以很容易地理解。以银行业务为例。数据库是事务系统的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来,这里,可以简单地理解为用数据库记账。数据仓库是分析系统的数据平台,它从事务系统获取数据,并进行汇总、加工,为决策者提供决策的依据。比如,某银行某分行一个月发生多少交易,该分行当前存款余额是多少。比如,某品牌汽车在某地一个月销售多少台汽车,有多少台是属于高档的。如果销售量又多,咨询的人数又在上涨,那么就要考虑在这个地区设高档4S店。
显然,有些事实数据的交易量是巨大的,通常以百万甚至千万次计算。事务系统是实时的,这就要求时效性,比如在银行,客户存一笔钱需要几十秒是无法忍受的,这就要求数据库只能存储很短一段时间的数据。而分析系统是事后的,它要提供关注时间段内所有的有效数据。这些数据是海量的,汇总计算起来也要慢一些,但是,只要提供有效的分析数据就达到目的了。
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它绝不是所谓的“大型数据库”。那么,数据仓库与传统数据库比较,有哪些不同呢?让我们先看看W.H.Inmon关于数据仓库的定义:面向主题的、集成的、与时间相关且不可修改的数据集合。
1.“面向主题的”:传统数据库主要是为应用程序进行数据处理,未必按照同一主题存储数据;数据仓库侧重于数据分析工作,是按照主题存储的。这一点,类似于传统农贸市场与超市的区别——市场里面,白菜、萝卜、香菜会在一个摊位上,如果它们是一个小贩卖的;而超市里,白菜、萝卜、香菜则各自一块。也就是说,市场里的菜(数据)是按照小贩(应用程序)归堆(存储)的,超市里面则是按照菜的类型(同主题)归堆的。
2.“与时间相关”:数据库保存信息的时候,并不强调一定有时间信息。数据仓库则不同,出于决策的需要,数据仓库中的数据都要标明时间属性。决策中,时间属性很重要。同样都是累计购买过九车产品的顾客,一位是最近三个月购买九车,一位是最近一年从未买过,这对于决策者意义是不同的。
3、“不可修改”:数据仓库中的数据并不是最新的,而是来源于其他数据源。数据仓库反映的是历史信息,并不是很多数据库处理的那种日常事务数据(有的数据库例如电信计费数据库甚至处理实时信息)。因此,数据仓库中的数据是极少或根本不修改的;当然,向数据仓库添加数据是允许的。
三、不要把数据仓库理解为数据仓库产生的过程
早期一直不理解数据仓库是什么困惑得很。宏观一点讲,数据仓库就是堆放公司所有数据的地方,之所以把数据都堆在一起,是为了从中找到有价值的东西。
数据仓库更多的是一个概念,不要把数据仓库想成那些号称是数据仓库的软件产品们。(数据仓库的建立和数据挖掘都是一个过程,可以从数据仓库生命周期和OLTP系统生命周期的区别进行理解)。
数据仓库的物理上就是数据库,相对业务系统数据库叫OLTP数据库(用于业务处理),这种数据库叫OLAP数据库,OLAP是针对特定问题的联机数据访问和数据分析而产生的一种技术,它满足DDS从多种角度对数据进行快速、一致、交互地分析,克服传统DDS交互能力差的弊病,使决策者能够对数据进行深入观察。OLAP服务器使用为用户预定义的多维数据视图对数据仓库的信息进行统计分析处理,为具有明确分析范围和分析要求的用户提供高性能的决策支持在线分析处理,是基于DW上的一种多维分析方式。
数据仓库的概念是针对以下基本需求产生的:公司的业务系统很多,业务系统的历史数据不方便查询。不同的业务系统往往管理部门不同,地域不同。能不能将所有这些数据集中起来,再淘淘有没有有意义的业务规律。数据仓库数据库往往很大,因为公司所有的数据集中得越多,越能淘到有价值的发现,例如随便就100G以上。
数据仓库的组成十分繁杂,既有业务系统的历史数据,又有人事、财务数据,还要自己建一些基础性的数据,例如,公共假期数据、地理信息、国家信息等。
数据仓库概念包含从业务生产系统采集数据的程序,这个程序还不能影响业务系统的运行,即所谓“ETL”过程。数据仓库包括业务系统长期的历史数据,例如5年,用来分析,即所谓“ODS”数据。数据仓库包括针对某项业务值(例如销售量)重新打上标签的业务流水数据,即所谓“事实表”、“维度表”。数据仓库概念兴许还包含报表生成工具,即所谓“BI”工具。这些工具能够达到几年前所谓DSS(决策分析)的效果。数据仓库的客户历史资料的分析,也许又与CRM系统沾点边。总之,一个公司要针对已有的历史业务数据,充分利用它们,那么就应上数据仓库项目。至于那些吓唬人的大写字母的组合,只是为达到这个目的的科学技术罢了。必须牢记住数据仓库的基本需求,不要被供应商吓着。
四、数据仓库是数据提炼的结果
数据仓库可以说是决策支持系统,能帮助老板了解企业的整体全貌,看到数据仓库提供的经过整理统计归纳的数据后老板凭自己的管理经验可以发现企业的问题或困难或成功因素在哪一方面,然后不断地追溯数据,直到确定到最具体的细节上,这样能够不断提升老板或管理层的管理水平,不断改善企业的管理情况。最好的一个例子就是某大型公司炸薯片的故事:
某大型食品公司的一位生成经理曾发现,每天晚上炸薯片用的油量比白天增加很多,薯片质量也下降很多,一时却搞不清是什么原因。后来,公司运用商业智能(BusinessIntelligence,简称BI)技术发现,因为在夏天天气炎热,人容易犯困,在凌晨3点到5点工人的工作效率不高。公司在对相关数据分析后得知,工人在3点到5点增加一顿夜宵,工人的工作效率明显提高。得到这个结果后,公司决定在晚上定时增加一顿夜宵,并把工作时间缩短1个小时,结果是薯片的产量和质量都提高了很多。
五、数据仓库的几个特点
数据仓库的方案建设的目的,是为前端查询和分析作为基础,因为有较大的冗余,所以需要的存储空间较大。为了更好地为前端应用服务,数据仓库必须有如下几点优点,否则就是失败的数据仓库方案。
1.效率足够高。客户要求的分析数据一般分为日、周、月、季、年等,可以看出,日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。由于有的企业每日的数据量很大,设计不好的数据仓库经常会出问题,延迟1—3日才能给出数据,显然不行。
2.数据质量。客户要看各种信息,肯定要准确的数据,但由于数据仓库流程至少分为3步,2次ETL,复杂的架构会更多层次,那么由于数据源有脏数据或者代码不严谨,都可以导致数据失真,客户看到错误的信息就可能导致分析出错误的决策,造成损失,而不是效益。
3.扩展性。之所以有的大型数据仓库系统架构设计复杂,是因为考虑到了未来3—5年的扩展性,这样的话,客户不用太快花钱重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于数据量大时就运行不起来。
参考文献:
[1]周宁,吴佳鑫.信息资源数据库[M].武汉大学出版社,2010.9,第三版.
[2]陆剑峰,张浩.数据仓库数据更新的研究及基于Oracle数据库的开发与应用[J].《计算机工程与应用》,2004(26).
[3]蔡菁,吴东峥.试析数据仓库技术与数据库技术[J].《计算机时代》,2002(8).
[4]王瑞梅.管理信息系统中的数据库与数据仓库[J],《价值工程》.2005(七).
[5]赵俏.数据库与数据仓库的比较[J].《辽宁师专学报。自然科学版》,2007(四).