概述
数据仓库概念创始人W.H.Inmon在《建立数据仓库》一书中对数据仓库的定义是:数据仓库就是面向主题的、集成的、相对稳定的、随时间不断变化(不同时间)的数据集合,用以支持经营管理中的决策制定过程、数据仓库中的数据面向主题,与传统数据库面向应用相对应。
主题导向(Subject-Oriented)
主题是一个在较高层次上将数据归类的标准,每一个主题对应一个宏观的分析领域。有 别于一般OLTP系统,数据仓库的资料模型设计,着重将资料按其意义归类至相同的主题区(subject area),因此称为主题导向。举例如Party、Arrangement、Event、Finance、Market、Sales、Product等。
集成性(Integrated)
数据仓库中的数据是从原有分散的数据库中抽取出来的,由于数据仓库的每一主题所对 应的源数据在原有分散的数据库中可能有重复或不一致的地方,加上综合数据不能从原有数据库中直接得到,因此数据在进入数据仓库之前必须经过数据加工和集 成。这是建立数据仓库的关键步骤,首先要统一原始数据中的矛盾之处,还要将原始数据结构做一个从面向应用向面向主题的转变。
不变动性(Nonvolatile)
数据仓库的稳定性是指数据仓库反映的是历史数据,而不是日常事务处理产生的数据,数据经加工和集成进入数据仓库后是极少或根本不修改的,即使资料是错误的亦同。(i.e.错误的后续修正,便可因上述时间差异性的特性而被追踪)
时间差异性(Time-Variant)
数据仓库中数据的不可更新性是针对应用来说的,即用户进行分析处理时是不进行数据 更新操作的。但并不是说,从数据集成入库到最终被删除的整个数据生成周期中,所有数据仓库中的数据都永远不变,而是随时间不断变化的。数据仓库是不同时间 的数据集合,它要求数据仓库中的数据保存时限能满足进行决策分析的需要。
数据仓库的价值
高效的数据组织形式
面向主题的特性决定了数据仓库拥有业务数据库所无法拥有的高效的数据组织形式,更加完整的数据体系,清晰的数据分类和分层机制。因为所有数据在进入数据仓库之前都经过清洗和过滤,使原始数据不再杂乱无章,基于优化查询的组织形式,有效提高数据获取、统计和分析的效率。
时间价值
数 据仓库的构建将大大缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,数据仓库的最大优势在于一旦底层从各类数据源到数 据仓库的ETL流程构建成型,那么每天就会有来自各方面的信息通过自动任务调度的形式流入数据仓库,从而使一切基于这些底层信息的数据获取的效率达到迅速 提升。
从应用来看,使用数据仓库可以大大提高数据的查询效率,尤其对于海量数据的关联查询和复杂查询,所以数据仓库有利于实现复杂的统计需求,提高数据统计的效率。
集成价值
数据仓库是所有数据的集合,包括日志信息、数据库数据、文本数据、外部数据等都集成在数据仓库中,对于应用来说,实现各种不同数据的关联并使多维分析更加方便,为从多角度多层次地数据分析和决策制定提供的可能。
历史数据
记录历史是数据仓库的特性之一,数据仓库能够还原历史时间点上的产品状态、用户状态、用户行为等,以便于能更好的回溯历史,分析历史,跟踪用户的历史行为,更好地比较历史和总结历史,同时根据历史预测未来。
数据仓库的基本架构
数据仓库的目的是构建面向分析的集成化数据环 境,为企业提供决策支持(Decision Support)。其实数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫 “仓库”,而不叫“工厂”的原因。因此数据仓库的基本架构主要包含的是数据流入流出的过程,可以分为三层——源数据、数据仓库、数据应用:
从图中可以看出数据仓库的数据来源于不同的源数据,并提供多样的数据应用,数据自上而下流入数据仓库后向上层开放应用,而数据仓库只是中间集成化数据管理的一个平台。
数据仓库的数据来源
数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽 取Extra, 转化Transfer, 装载Load)的过程,ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大 部分精力就是保持ETL的正常和稳定。
数据仓库的数据存储
数据仓库并不需要储存所有的原始数据,同时数据仓库需要储存部分细节数据。简单地解释下:
a. 为什么不需要所有原始数据?数据仓库面向分析处理,但是某些源数据对于分析而言没有价值或者其可能产生的价值远低于储存这些数据所需要的数据仓库的实现和 性能上的成本。比如我们知道用户的省份、城市足够,至于用户究竟住哪里可能只是物流商关心的事,或者用户在博客的评论内容可能只是文本挖掘会有需要,但将 这些冗长的评论文本存在数据仓库就得不偿失;
b.为什么要存细节数据?细节数据是必需的,数据仓库的分析需求会时刻变化,而有了细节数据就可以做到以不变应万变。如果我们只存储根据某些需求搭建起来的数据模型,那么显然对于频繁变动的需求会手足无措;
数据仓库基于维护细节数据的基础上在对数据进行处理,使其真正地能够应用于分析。主要包括三个方面:
1.数据的聚合
这 里的聚合数据指的是基于特定需求的简单聚合(基于多维数据的聚合体现在多维数据模型中),简单聚合可以是网站的总Pageviews、Visits、 Unique Visitors等汇总数据,也可以是Avg. time on page、Avg. time on site等平均数据,这些数据可以直接地展示于报表上。
2.多维数据模型
多维数据模型提供了多角度多层次的分析应用,比如基于时间维、地域维等构建的销售星形模型、雪花模型,可以实现在各时间维度和地域维度的交叉查询,以及基于时间维和地域维的细分。所以数据仓库面向特定群体的数据集市都是基于多维数据模型进行构建的。
3.业务模型
这里的业务模型指的是基于某些数据分析和决策支持而建立起来的数据模型,比如我之前介绍过的用户评价模型、关联推荐模型、RFM分析模型等,或者是决策支持的线性规划模型、库存模型等;同时,数据挖掘中前期数据的处理也可以在这里完成。
数据仓库的数据应用
报表展示
报表几乎是每个数据仓库的必不可少的一类数据应用,将聚合数据和多维分析数据展示到报表,提供了最为简单和直观的数据。
即时查询
理论上数据仓库的所有数据(包括细节数据、聚合数据、多维数据和分析数据)都应该开放即时查询,即时查询提供了足够灵活的数据获取方式,用户可以根据自己的需要查询获取数据。
数据分析
数据分析大部分基于构建的业务模型展开,当然也可以使用聚合的数据进行趋势分析、比较分析、相关分析等,而多维数据模型提供了多维分析的数据基础;同时从细节数据中获取一些样本数据进行特定的分析也是较为常见的一种途径。
数据挖掘
数据挖掘用一些高级的算法可以让数据展现出各种令人惊讶的结果。数据挖掘可以基于数据仓库中已经构建起来的业务模型展开,但大多数时候数据挖掘会直接从细节数据上入手,而数据仓库为挖掘工具诸如SAS、SPSS等提供数据接口。
第1天到第n天的现象
建立数据仓库不是一蹴而就的。相反,数据仓库只能一次一步地进行设计和载入数据,即它是进化性的,而非革命性的。数据仓库的建立要采用有序地反复和一次一步的方式。下图说明一个建立数据仓库的典型过程。
第1天,通晓本质上进行操作型处理的几个系统。
第2天,对数据仓库中第一个主题领域的最初几个表载入数据,此时就会产生一定的好奇心,用户开始发现数据仓库和分析处理。
第3天,更多的数据载入数据仓库,并且随着数据量增大,将吸引更多的用户。一旦用户发现有较容易载入的集成数据源,并有在时间维上观察数据的历史基础,这就不仅仅是好奇心了。大约此时,认真的DSS分析员渐渐地被吸引到数据仓库中。
第 4天,随着更多的数据载入数据仓库,一批存储在操作型环境的数据被适当地放入数据仓库中。现在,我们就“发现”数据仓库是可用来进行分析处理的信息源。各 种各样的DSS应用出现了。的确,伴随着现在存入数据仓库的大规模数据,此时开始出现如此多的用户和如此多的处理请求,以致于一些用户进入数据仓库的要求 和分析工作被推迟。进入数据仓库的竞争成为使用数据仓库的障碍。
第5天,部门数据库(数据集市,或OLAP )开始兴起,各部门发现通过把数据从数据仓库输入它们自己的部门处理环境,会使它们的处理既便宜又容易。到达部门级的数据吸引着一些D S S分析员。
第6天,部门系统出现繁忙,得到部门数据比获得数据仓库的数据更便宜、更快、更容易。很快最终用户就放弃数据仓库的细节,去进行部门处理。
第n天,这种体系结构得到充分发展。生产系统的原始集合中只剩下操作型处理。数据仓库具有丰富的数据,并有一些数据仓库的直接用户和许多部门数据库。因为在部门级上获得处理所需要的数据既容易又便宜,所以大部分DSS分析处理都在部门级进行。
当然,从第1天到第n天的进化需要很长的时间,通常需要几年。并且在从第1天到第n天的处理过程中,DSS环境在不断地提高和职能化。
数据周期
数据仓库设计中的一个引人注目的问题是数据周期。所谓数据周期是指从操作型环境数据发生改变起,到这个变化反映到数据仓库中所用的时间。考虑下图中所示的数据。图中给出了关于Judy Jones的当前信息,数据仓库包含有Judy的历史信息。
现在假设发现Judy已经改变了她的地址。下图表明这个变化一旦被发现,就马上被反映到操作型环境中
一旦数据反映到操作型环境中,这个变化就必须被转入数据仓库中。下图表示数据仓库对最当前记录的终结日期进行了更正。并且插入了一条新的记录,这条记录反映了对有关Judy Jones的记录所做的修改。
问题是对数据仓库数据的这种调整,应该多长时间进行一次呢?原则上从操作型环境知道数据的改变到这个变化反映到数据仓库中至少应该经历2 4小时。没有必要急于把这个变化转入信息仓库中去,有几个需要把“时间间隔”放到数据中的原因:
一方面,如果操作型环境与数据仓库相互之间结合得越紧密,那么所需的费用就越昂贵,技术也越复杂。2 4小时的时间间隔以现有技术来说将很容易被实现。
另一方面,更有说服力的一个原因是,时间间隔给环境附加了一个特殊的限制。间隔2 4小时,使得在数据仓库中不必做操作型处理;在操作型环境中不必做数据仓库处理。
最后,时间间隔的另一个好处是在转入数据仓库之前,数据能达到稳定。
元数据
数据仓库环境中一个重要方面是元数据。元数据是关于数据的数据。只要有程序和数据,元数据就是信息处理环境的一部分。但是在数据仓库中,元数据扮演一个新的重要角色。也正因为有了元数据,可以最有效地利用数据仓库。元数据使得最终用户/ DSS分析员能够探索各种可能性。
元数据在数据仓库的上层,并且记录数据仓库中对象的位置。典型地,元数据记录:
程序员所知的数据结构。
DSS分析员所知的数据结构。
数据仓库的源数据。
数据加入数据仓库时的转换。
数据模型。
数据模型和数据仓库的关系。
抽取数据的历史记录。
成本合理性
数据仓库的一个有趣的问题是:数据仓库的成本合理性通常不是在先验的投资回报率(ROI)基础上来进行判断的。要做这样的分析,必须在创建数据仓库之前就知道数据仓库带来的收益。
通 常情况下,在创建数据仓库时,实际收益是不知道的甚至是无法预测的,因为数据仓库的使用方式完全不同于其他信息系统所构造的数据和系统。数据仓库的使用是 用一种与其他信息处理不同的模式进行的,有点像“告诉我,你想要的是什么,然后我才能告诉你你真正想要的是什么”这种模式。直到数据仓库的首次循环设计过 程完成并可以利用以前,DSS分析员不能真正说出数据仓库的可能性和潜力有多大。一旦DSS分析员插手仓库,他或她就能开始揭示D S S处理的潜力。
因 此,经典的ROI技术不能应用到数据仓库环境中。幸运的是,数据仓库是渐进式地建立的。第一次循环设计过程能很快完成,并且只需相对较少的费用。一旦数据 仓库的第一部分已经建立并载入数据,分析员就能开始研究可能性。只有在这个时候,分析员才能着手证明仓库开发费用的合理性。
根据经验,数据仓库第一次循环的设计规模要适中,小到足以建成仓库,大到仓库是有意义的。所以,数据仓库最好一次构造一个小规模的循环设计,并且在仓库开发人员与DSS分析员之间适当而且快速地建立直接反馈回路。
此外,这些理由也说明,为什么说若最初设计的数据仓库50%是精确的,那么设计就是成功的。根据仓库开发人员与DSS分析员之间的反馈回路将不断地修改现有的仓库数据,并向仓库中追加其他新数据。
参考至:《建立数据仓库》W.H.Inmon著
http://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E5%80%89%E5%84%B2
http://baike.baidu.com/view/1341575.htm
http://webdataanalysis.net/web-data-warehouse/value-of-data-warehouse/
http://webdataanalysis.net/web-data-warehouse/data-warehouse-frame/
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:[email protected]