《数据仓库基础知识》由会员分享,可在线阅读,更多相关《数据仓库基础知识(17页珍藏版)》请在金锄头文库上搜索。
1、解剖数据仓库解剖数据仓库中国电子设备系统工程公司研究所刘东总参第六十一研究所 杨雪南在过去的十几年里,基于数据库的应用软件多数是面向联机事务处理(OLTP)的,其主要目的是让大量的日常事务电子化。这时数据的价值仅仅体现在保证完成一个事务,而数据的体系结构、数据的含义并没有引起人们足够的重视。数据仓库使人们从一个全新的角度认识到信息系统的重要性,也使人们发现了历史数据的价值。从此,数据不仅仅用于检索,还可以用来分析未来的发展趋势,并为决策和管理提供支持。此时数据自身的价值和语义质量不再是一个纯技术问题,而成为一个业务问题,即实现信息的价值,也就是充分利用已有的数据,挖掘数据中潜在的信息价值。然而
2、,传统数据库应用系统中遗留的数据不一致性和不连续性给这一业务带来了极大的困难。为了克服上述困难,就需要提出一种弥补数据体系结构缺陷的方法,即建立一个虚拟的集成数据库,用来存储真实的历史数据,并尽可能降低物理的不一致性和语义的不连续性,使现有的数据能够应用于管理和决策目的。而这正是数据仓库蓬勃发展的真正动因。建立数据仓库的主要目的是满足管理者和决策者全面了解内部情况和外部环境的需要。数据仓库的长远价值在于建立适应企业高速变化的结构化环境。由于企业的生存依赖于对市场变化的反应能力,所以数据仓库对于信息时代的企业具有很大的价值。数据仓库技术首先在商业、金融和企事业管理等领域获得了巨大成功,现在又不断
3、向其它决策支持应用中拓展。然而,任何技术一旦被当成包治百病的灵丹妙药,就极有可能走入误区而最终使人们失望。这很容易让人联想起当年的人工智能热潮。其实,这些技术本身并没有什么问题,只是当它们被寄予不切实际的期望之后反而更加令人失望。但愿数据仓库不会重蹈覆辙。其实,数据仓库的目标与已经应用了多年的决策支持系统(DSS)并无太大差别,只是它的目标更加具体主要面向与时间相关的多维数据分析,手段更加科学充分利用历史数据且重视数据的体系结构和语义等。事实上,如今有许多数据仓库工具供应商都是原来从事 DSS 工具开发的,而且数据仓库目前主要是在商业营销等个别领域取得了比较明显的成功。如果没有真正理解数据仓库
4、的概念就盲目实施大型数据仓库项目,结局一定是失败的。有些企业根本就没有注意到概括数据和元数据的作用便把他们的 DSS 称为数据仓库,这注定是不会成功的。数据仓库中的数据库是面向主题和集成的,具备这种特性的数据库需要经过仔细规划和设计才能得到,这其中包括:数据库设计、预处理数据的设计、数据加载/变换过程的设计、元数据设计、用于大型数据库的设计技术等等。设计含有预处理数据的数据库是指所建立的数据库能够支持用户多层次、多视角地查看周期数据。包含预处理信息是数据仓库区别于传统 DSS 的显著标志之一。另外,还必须规划数据仓库的数据加载工作。这里,数据清洗是必不可少的,其中包括提高数据的准确性,并且将不
5、同环境中的数据进行复杂的匹配,还需要一个对关键字进行规范化的机制。这其中涉及到的数据变换是相当复杂的。元数据设计也是数据仓库设计的重要组成部分。元数据和访问元数据的工具决定着用户利用数据仓库中数据的能力。元数据能将原始数据转变成对决策者和管理者有用的信息。只有通过这样的数据导航,用户才能找到他们想要的数据,提出他们想问的问题,从事他们想做的分析。只有经过深入细致的设计才能将元数据目录和易于访问的前端展现工具有机地结合起来。最后是用于大型数据库系统的专门技术。通常数据仓库中的数据量都在千兆字节以上,若不采用一些特殊的方法是无法实际处理如此大量数据的。好在许多最新版本的数据库管理系统,如 Orac
6、le8、IBMDB2V5 等都提供了各种不同的大规模并行处理和性能优化技术,以提高对大型数据库处理的效率。概念篇概念诠释数据仓库这个名词最早出现于 90 年代初,如今被商家“炒作”得异常火热。然而,数据仓库所取得的成就还远不如商家们宣传的那样辉煌,开发一个成功的数据仓库项目并不是一件容易的事。事实上,有许多数据仓库项目都失败了。造成数据仓库项目失败的原因有技术问题、管理问题、设计问题和规模问题等,但笔者认为从根源上讲主要还是概念问题,即未能真正理解和把握数据仓库的概念。认识数据仓库数据仓库并不是一个新的平台,它仍然建立在数据库管理系统基础上,只是一个新的概念。从用户的角度来看,数据仓库是一些数
7、据、过程、工具和设施,它能够管理完备的、及时的、准确的和可理解的业务信息,并把这种信息提交给授权的个人使他们有效地作出决策。数据仓库之父 W.H.Inmon 给数据仓库下的定义是:数据仓库是集成的、面向主题的、用于决策支持的数据库集合,其中每个数据单元都与时间相关。数据仓库中的数据应当是良构的(well-formed) 、一致的(consistent) 、相对稳定的。另外,它的数据量应足以支持数据分析、查询、报表生成,以及与历史数据的对比。数据仓库是为决策支持服务并具有“面向主题” 、 “数据集成性” 、 “与时间相关”和“相对稳定”等特征的特殊的数据库应用系统。“面向主题”的数据仓库要求进行
8、数据库设计,而一些企业忽视了这一重要环节,根本不进行正规的数据库设计,他们或者简单地把 OLTP 数据库中的数据复制到数据仓库中,或者从不是专为数据仓库设计的现有决策支持系统中复制数据,这样建立的数据仓库不是良构的、可独立维护的主题数据库。 “数据集成性”意味着要采用一些设计方法来建立数据仓库的数据库。在命名协议、关键字、关系和编码中的一致性问题只能通过精心的设计取得。 “与时间相关”意味着数据仓库中的数据大都与时间(如年、季度、月、周、日等)有关,因此数据仓库中数据的组织方式要便于按时间段计算和提取数据。 “相对稳定”是指数据仓库中的数据不进行实时更新。通常数据是以每天或每周,甚至每月为周期
9、进行升级的,这一升级过程不是简单的数据拷贝,而是要经过复杂的提取、概括、聚集和过滤等操作过程。数据一旦进入数据仓库,就不允许随便更新了。一些企业在开发数据仓库项目时允许对数据进行实时更新,他们认为数据更新越及时,提供的决策依据就越可靠,这说明他们还没有理解数据仓库在决策支持中的作用。另外一些企业采用复制服务器直接从 OLTP 系统向数据仓库传播数据,这种方法在效果上与对数据仓库中数据进行实时更新是类似的。这两种做法足以给数据仓库项目造成灾难性的后果。首先,只读系统允许采用很多技术来提高效率,但在更新的环境中,即使只进行很少几次更新,也无法实现这些技术了,例如,只读系统可以建立大量索引,而实时更
10、新这些索引会带来过多的系统开销;将数据加载到数据仓库的过程中要进行集聚、概括和清洗等操作,这些工作也需要实时进行。数据仓库的全部价值在于为一系列复杂的查询请求提供快速响应,实时更新数据必定会损害数据仓库的响应能力。数据仓库中通常包含原有的详细数据、当前的详细数据、低度概括数据、高度概括数据和元数据等信息。因为存在原有的详细数据,所以数据仓库设计者必须有处理老化数据的方法。也就是说,数据仓库要按照一定的策略来清洗与主题无关或关系不大的数据。详细数据的量一般都很大,要想把所有数据都载入数据仓库就必须以牺牲性能为代价,这给数据仓库设计者出了一道难题。概括数据是通过对详细数据的变换、抽象和处理而得到的
11、。这一变换和加载过程十分复杂且需要很长时间,因此这项工作往往放到夜间来处理。元数据能够让用户了解数据仓库中有什么数据以及怎样使用这些数据。为了确保最终用户能够利用元数据确认并检索他们想要的数据,以便回答他们提出的问题,必须进行很好的设计和分析。设计数据仓库的技术人员可能会忽视这一点,忘记了把数据仓库环境转换成用户易于理解的语言。元数据必须填补这道鸿沟,否则数据仓库就失去了使用价值。建立数据仓库的目的,是把企业的内部数据和外部数据进行有效的集成,提供给企业的决策者和管理者使用。企业内部数据是指通过业务系统收集到的数据,这些数据可能分布在不同的硬件设备、数据库系统、网络环境中,为不同的业务部门服务
12、。所有这些数据从结构上看,是相对独立的,往往存在不一致性和不连续性,因此不利于企业决策者进行全面分析和查询。为了满足决策者的需求,应当对这些数据进行结构上的重组,按照更便于决策分析的角度去设计,并且充分考虑今后的扩展性以及与外部数据的接口。了解处理过程人们总喜欢问:数据仓库与数据库有什么不同?事实上,数据库是一种通用的平台,用来管理企业的数据;而数据仓库则主要是一种概念,在此概念下进行的构造过程,称为数据仓库处理。所以说,数据仓库不是可以直接购买到的现成产品,除了需要购买必要的工具以外,数据仓库主要是一个建立的过程。数据仓库处理主要包括 3 个方面的内容,即数据准备、数据展现和过程管理。数据准
13、备包括充分了解决策需求、按数据仓库方法设计数据库结构、业务系统数据向数据仓库结构中转移(包括复制、抽取和清洗等) ,以及数据仓库数据向小规模数据集市(DataMart)数据复制。为了适应不同层次的用户对数据仓库的使用风格,需要提供不同的前端数据展现工具。例如主管信息系统(EIS)提供界面丰富、定制简单的决策分析,它主要适用于企业的高层决策者;联机分析处理(OLAP)工具提供灵活丰富的多维分析与查询功能,可以从不同的视角去分析企业的运作情况,并对未来进行预测,它主要适用于企业的中层领导和业务分析人员;即席查询(AdHocQuery)工具提供多角度的灵活查询功能,它主要适用于业务分析人员;报表生成
14、(Reporting)工具提供灵活报表的设计、展现和输出功能,它主要适用于报表制作人员。另外,数据仓库的建立需要很好的过程管理和方法。我们把数据仓库的建立作为过程来看待,而不是作为工程项目来看待。这主要基于两方面的考虑。一是为了适应业务发展:企业在市场环境中可能经常需要进行机构、产品、市场的调整,从而导致决策模式的变化。对于数据仓库的建立过程来说,这就意味着产生了新的需求。二是适应技术的发展:计算机技术发展迅速,新技术不断涌现,如何在数据仓库建立过程中保证技术不落后,保护原有的技术投资,最佳方式就是采用面向过程的方法,即自上而下的总体设计、自下而上的实施。需要独立的环境或许未来的数据仓库能够把
15、事务处理和决策支持合二为一,但目前还必须为数据仓库建立独立的环境。首先,现有软、硬件性能的局限性使得一个环境难以同时支持日常业务处理和决策支持目标。其次,数据仓库常用于分析长期趋势,而传统数据库中的数据类型、数量和质量通常无法满足决策支持的要求;传统数据库只包含日常业务所必需的数据,而数据仓库则包含大量的历史数据;数据仓库中的数据必须是良构的、一致的、集成的,并且要有时间标记,而传统数据库通常无法满足这些要求,当一个查询需要联接现有业务数据、外部数据和个人数据时,传统数据库基本上无能为力。传统数据库与数据仓库访问的数据对象也不同。对于传统的 OLTP 数据库,用户知道他们需要什么,只是访问单个
16、事务中的一行或多行记录。在数据仓库中,为了响应一个简单的查询就可能要检索成千上万条记录,因此数据的移动量很大。产品篇产品细看我们可以把数据仓库工具供应商分为二类:构件供应商和解决方案供应商。象 BusinessObjects、Cognos、Brio 等更侧重于提供数据展现工具,另外一些供应商,特别是主要的数据库供应商,如 IBM、Oracle、Informix、Sybase 等能够提供完整的数据仓库解决方案。深入了解这些解决方案,不难发现方案中大多由多家产品组成,有的是通过直接进行收购的方式实现,而有些则以与其它构件供应商之间建立联盟和合作关系的方式实现。总的来说,这些解决方案提供了相对完整的建立数据仓库全过程的相应工具,包括数据仓库设计、数据抽取、OLAP 服务器、数据仓库目标数据库、数据仓库管理、前台分析以及 WWW 支持等工具。但各家产品在平台支持、可伸缩性、易用性、安全机制等方面存在许多不同,表现出不同的特点。例如 SAS 产品具有模块化特点,具有较强的可编程能力;IBM 产品在功能上比较完善;Informix 产品易用性较好;微软实现与关系数据库的高度集成;Oracl