第一篇 数据仓库与OLAP 第一章 数据仓库基本概念
第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 1.5 数据仓库的数据组织 1.6 本章小结
1.1 从数据库到数据仓库 传统数据库以及OLTP(On-Line Transaction Processing 联机事务处理)在日常的管理事务处理中获得了巨大的成功,但是对管理人员的决策分析要求却无法满足。因为,管理人员常常希望能够通过对组织中的大量数据进行分析,了解业务的发展趋势。而传统数据库只保留了当前的业务处理信息,缺乏决策分析所需要的大量的历史信息。为满足管理人员的决策分析需要,就需要在数据库的基础上产生适应决策分析的数据环境——数据仓库(Data Warehose)。
1.1.1 蜘蛛网问题(1) 在市场经济的激烈竞争中,信息对于企业的生存和发展起着至关重要的作用。企业对信息的需求是多方面的,为了避免企业中各部门或各用户间的冲突和简化用户的数据视图,一种称作“抽取程序”的方法被广泛地应用。 比如,市场部人员通常只关心企业的销售、市场策划方面的信息,而不注重企业的研发、生产等其他环节。因此,将销售、市场策划方面的信息抽取出来单独建立部门级的数据库很有必要,这样可以提高数据的访问效率。
1.1.1 蜘蛛网问题(2) 在部门级数据的基础上可能还要被继续执行抽取程序,以建立个人级的数据库。比如,专门负责制作公司财务报表的数据人员,常常需要从财务部门的数据库系统中抽取数据。又如,部门经理可能经常抽取常用的数据到本地,有针对性的建立个人级数据库就显得尤为重要。 随着数据的逐层抽取,很可能最终导致系统内的数据间形成了错综复杂的网状结构,如图1.1所示,人们形象地称为“蜘蛛网”。一个大型的公司每天进行上万次的数据抽取很普遍。这种演变不是人为制造的,而是自然演变的结果。企业的规模越大,“蜘蛛网”问题就越严重。
1.1.1 蜘蛛网问题(3) 网上的任意两个节点的数据可能归根结底是从一个原始库中抽取出来的,但其数据没有统一的时间基准,因而错综复杂的抽取与访问将产生很多问题,主要有以下几个方面。
1.1.1 蜘蛛网问题(4) 1. 数据分析的结果缺乏可靠性 图1.2中展示了某企业的市场部和计划部对项目I是否具有市场前景的分析过程和结果。市场部认为“项目I的市场前景很好”,而计划部却得到截然相反的结果----“项目I没有市场前景”。作为企业的最终决策者,将如何根据这样的结论进行决策呢? 为什么分析同一个企业数据库中的数据,却得到截然相反的结论呢? 首先,两部门可能抽取数据的内容不同。比如,市场部抽取的是项目I在大客户中的应用情况,而计划部抽取的是项目I在普通客户中的应用情况。
1.1.1 蜘蛛网问题(5) 其次,可能两部门抽取数据的时间不同。如市场部在星期日晚上提取分析所需的数据,而计划部在星期三下午就抽取了数据。有任何理由相信对某一天抽取的数据样本进行分析与对另一天抽取的数据样本进行的分析可能相同吗?当然不能!企业内的数据总是在变的。 再次,引用外部信息的不同。分析项目的发展趋势常常需要引入企业外部的信息,比如报刊信息、国家的政策等。市场部门引用的外部信息来源可能与计划部门不同,而外部信息自然是仁者见仁,智者见智,这也可能是导致最终分析结果不同的原因。 最后,分析程序的差异。市场部门使用的分析程序可能与计划部门不同,分析的内容和指标也可能不同。
1.1.1 蜘蛛网问题(6)
1.1.1 蜘蛛网问题(7) 2. 数据处理的效率很低 数据分析的结果缺乏可靠性并不是蜘蛛网问题中唯一的主要 问题。在一个大型企业中,不同级别的数据库可能使用不同类型的 数据库系统,对于拥有巨型数据量的企业级数据库可能使用IBM DB2,而对于部门级和个人级的中小型数据库可能使用SQL Server。 各种数据库的开发工具和开发环境不同,当需要在整个企业范围内 查询数据时,数据处理的低效率将是不容忽视的。 如果一个大型企业的决策领导需要一份关于公司整体运营情 况的报表,通常需要动用大量的人力和物力才能达到。首先,定位 报表需要的数据,即确定报表涉及的内容分布在哪个数据库的哪个 位置,然后调动各个部门的程序员/分析员对应用进行分析、设计 和编码。
1.1.1 蜘蛛网问题(8) 由于数据分散在各个数据库中,因此需要编写的程序很多。由于企业中使用的数据库类型很多,因此可能需要使用多种技术来实现。可见,面对企业中存在的蜘蛛网现象,为产生一份关于公司整体运营情况的报表,将动用大量的人力、物力和时间才能完成。 如果低效率的过程是一次性的,那么为生成报表花费大量的资源也是可取的。换句话说,如果生成第一份企业报表需要大量资源,生成所有后继报表可以建立在第一份企业报表基础之上,那么不妨为生成第一份报表付出一些代价。但是事实并非如此。 除非事先知道未来的企业报表需求,并且除非这些需求影响到第一张报表的建造,每个新的企业报表总是要花费同前面差不多的代价。 因此,数据处理的低效率是蜘蛛网问题所面临的又一个问题。
1.1.1 蜘蛛网问题(9) 3. 难以将数据转化成信息 除了数据处理效率和数据可信度的问题之外,“蜘蛛网” 式的结构还难以将数据转化成信息。比如,某电信公司要想分 析某个大客户今年的情况和过去3年有什么不同?大客户的情况 可能包括呼叫行为、话费情况、交费情况、咨询问题等。因此 要想比较完整地回答这个问题,实际上需要将客户多方面的数 据综合成信息。但“蜘蛛网”式的结构中数据缺乏集成性,因 此,对综合信息需求的支持确实是不充分的。 另外,每个数据库由于其数据量和业务处理的需求不同,对 历史数据的存储时间也不同,因此在蜘蛛网环境中的系统难以 提供完整的历史数据。如,记录客户呼叫行为的数据库通常只 保留最近3个月的呼叫话单,财务数据库可能保留客户今年的交 费情况,客户咨询数据库可能只保留客户2年内的咨询信息,于 是,从这些数据中提取出完整的信息是不可能的。
1.1.2 事务处理和分析处理数据环境的分离(1) 数据库系统作为数据管理手段,主要用于事务处理。在这些数 据库中已经保存了大量的日常业务数据。传统的DSS(Decision Support System,决策支持系统)一般是直接建立在这种事务处理环 境上的。数据库技术一直力图使自己能胜任从事务处理、批处理到 分析处理的各种类型的信息处理任务。尽管数据库在事务处理方面 的应用获得了巨大的成功,但它对分析处理的支持一直不能令人满 意,这也正是产生“蜘蛛网”问题的原因之所在。因此,要解决 “蜘蛛网”问题,必须将用于事务处理的数据环境和用于分析处理 的数据环境分离开。 这样,数据处理被分为事务型处理和分析型处理两大类。事务型 处理以传统的数据库为中心进行企业的日常业务处理。比如电信部 门的计费数据库用于记录客户的通信消费情况,银行的数据库用于 记录客户的帐号、密码、存入和支出等一系列业务行为。
1.1.2 事务处理和分析处理数据环境的分离(2) 分析型处理以数据仓库为中心分析数据背后的关联和规律, 为企业的决策提供可靠有效的依据。比如,通过对超市近期数 据进行分析可以发现近期畅销的产品,从而为公司的采购部门 提供指导信息。 事务处理的使用人员通常是企业的具体操作人员,处理的 数据通常是企业业务的细节信息,其目标是实现企业的业务运 营;而分析处理的使用人员通常是企业的中高层的管理者,或 者是从事数据分析的工程师。决策分析数据环境包含的信息往 往是企业的宏观信息而非具体的细节,其目的是为企业的决策 者提供信息支持,并最终指导企业的商务活动。事务处理和信 息分析数据环境的划分如图1.3所示。 事务处理和信息分析数据环境的分离,划清了数据处理的 分析型环境与事务型环境之间的界限,从而由原来以单一数据 库为中心的数据环境发展为以数据库为中心的事务处理系统和 以数据仓库为基础的分析处理系统。企业的生产环境,也由以 数据库为中心的环境发展为以数据库和数据仓库为中心的环境。
1.1.2 事务处理和分析处理数据环境的分离(3)
1.1.2 事务处理和分析处理数据环境的分离(4) 综上所述,在事务处理环境中直接构建分析处理应用是 不合适的,要提高分析和决策的效率和有效性,分析型处理及 其数据必须与操作型处理及其数据相分离。必须把分析型数据 从事务处理环境中提取出来,按照DSS处理的需要进行重新组 织,建立单独的分析处理环境,数据仓库正是为了构建这种新 的分析处理环境而出现的一种数据存储和组织技术。 目前,数据仓库技术正成为企业信息集成和辅助决策应用 的关键技术之一。当然,数据仓库的主要驱动力并不是过去的 缺点和问题,而是市场商业经营行为的改变,市场竞争要求捕 获和分析事务级的业务数据。
第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 1.5 数据仓库的数据组织 1.6 本章小结
1.2 什么是数据仓库 20世纪80年代中期,“数据仓库”这个名词首次出现在号 称“数据仓库之父”W.H.Inmon的《Building Data Warehouse》 一书中,在该书中,W.H.Inmon把数据仓库定义为“一个面向 主题的、集成的、稳定的、随时间变化的数据的集合,以用于 支持管理决策过程。”(“A data warehouse is a subject-oriented, integrated, non-volatile, time-variant collection of data in support of management decisions.”) 对于什么是数据仓库,还有许多不同的定义,如: “数据仓库是融合方法、技术和工具以在完整的平台上将 数据提交给终端用户的一种手段”。 “数据仓库是对分布在企业内部各处的业务数据的整合、加 工和分析的过程”。 “数据仓库是一种具有集成性、稳定性和提供决策支持的处 理”。 “为查询和分析(不是事务处理)而设计的关系数据库” 在众多的数据仓库定义中,公认的仍然是W.H.Inmon的定义, 该定义指出了数据仓库面向主题、集成、稳定、随时间变化这4 个最重要的特征。
1.2.1 面向主题(1) 与传统数据库面向应用进行数据组织的特点相对应,数据 仓库中的数据是面向主题进行组织的。什么是主题呢?首先, 从信息管理的角度看,主题就是在一个较高的管理层次上对信 息系统的数据按照某一具体的管理对象进行综合、归类所形成 的分析对象。从数据组织的角度看,主题是一些数据集合,这 些数据集合对分析对象作了比较完整的、一致的描述,这种描 述不仅涉及到数据自身,而且涉及到数据之间的关系。 面向主题的数据组织方式,就是在较高层次上对分析对象 的数据的一个完整、一致的描述,能完整、统一地刻画各个分 析对象所涉及的企业的各项数据,以及数据之间的联系。所谓 较高层次是相对面向应用的数据组织方式而言的,是指按照主 题进行数据组织的方式具有更高的数据抽象级别
1.2.1 面向主题(2)
1.2.1 面向主题(3) 例如在图1.4所示中,我们示例了一个电信企业的情况。 该企业基于传统数据库已经建立有计费数据库、财务数据库、 客户服务数据库等。其中,计费数据库记录了客户的消费情况, 财务数据库记录了客户的缴费情况,客户服务数据库记录了客 户的咨询和投诉情况,这些数据库里都有与客户主题相关的数 据。 如果直接基于传统数据库系统进行“客户”和“收益”信 息的分析,则需要访问多个数据库才能获得客户或收益各个侧 面的信息(收益主题需从计费数据库和财务数据库中了解公司 各项业务的收入情况;客户主题则要从计费数据库、财务数据 库、客户服务数据库中获得客户消费、交费、咨询等全方位的 信息。),这样将极大的影响系统处理的时间和效率,并且数 据之间的不一致性和不同步等问题将影响决策的可靠性。而以 “客户”和“收益”主题组织的数据仓库,将某个主题的全部 相关数据集中于一个地方,这样决策者可以非常方便地在数据 仓库中的一个位置检索包含某个主题的所有数据。
1.2.1 面向主题(4) 如图1.5所示显示了某电信企业的“客户主题”的数据存 储,属于“客户”主题域的数据集合使用相同的公共键码“客 户标识”来连接。从图1.5中可看到,数据在数据仓库中还是以 数据表的形式进行存储,但是,数据的组织方式和建模方法已 经同数据库系统有了较大的改变。
数据仓库中存储的数据一般从企业原来已建立的数据库 系统中提取出来,但并不是原有数据的简单拷贝,而是经过了 抽取、筛选、清理、综合等工作。这是因为: 1) 原有数据库系统记录的是每一项业务处理的流水帐,这 些数据不适合于分析处理。在进入数据仓库之前必须经过综合、 计算,同时抛弃一些分析处理不需要的数据项,必要时还要增 加一些可能涉及的外部数据。 2) 数据仓库每一个主题所对应的源数据在源分散数据库中 有许多重复或不一致之处,必须将这些数据转换成全局统一的 定义,消除不一致和错误之处,以保证数据的质量;显然,对 不准确,甚至不正确的数据分析得出的结果将不能用于指导企 业做出科学的决策。 3) 源数据加载到数据仓库后,还要根据决策分析的需要对 这些数据进行概括、聚集处理。 事实上,决策支持系统需要集成的数据。全面而正确的数据 是有效地分析和决策的首要前提,相关数据收集得越完整,得 到的结果就越可靠。因此,对源数据的集成是数据仓库建设中 最关键,也是最复杂的一步。 1.2.2 集成
业务系统一般只需要当前数据,在数据库中一般也只存储 短期数据,因此在数据库系统中数据是不稳定的,它记录的是系 统中数据变化的瞬态。 1.2.3 稳定性(1) 业务系统一般只需要当前数据,在数据库中一般也只存储 短期数据,因此在数据库系统中数据是不稳定的,它记录的是系 统中数据变化的瞬态。 但对于决策分析而言,历史数据是相当重要的,许多分析方 法必须以大量的历史数据为依托。没有大量历史数据的支持是难 以进行企业的决策分析的,因此数据仓库中的数据大多表示过去 某一时刻的数据,主要用于查询、分析,不像业务系统中的数据 库那样,要经常进行修改、添加,除非数据仓库中的数据是错误 的。 图1.6中形象地说明了数据仓库中数据的稳定性,可以看到数 据仓库在数据存储方面是分批进行的,定期执行提取过程为数据 仓库增加数据,这些数据一旦加入,一般不再从系统中删除。
1.2.3 稳定性(2)
1.2.4 随时间而变化 数据仓库中数据是批量载入的,是稳定的,这使得数据 仓库中的数据总是拥有时间维度。从这个角度,数据仓库实际 是记录了系统的各个瞬态,并通过将各个瞬态连接起来形成动 画,从而在数据分析的时候再现系统运动的全过程。数据批量 载入(提取)的周期实际上决定了动画间隔的时间,数据提取 的周期短,则动画的速度快,图1.7示意了这种特点。
第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 1.5 数据仓库的数据组织 1.6 本章小结
1.3 数据仓库与传统数据库的比较 1.3.1 两个系统的主要区别(1) 1.3 数据仓库与传统数据库的比较 1.3.1 两个系统的主要区别(1) 传统数据库系统的主要任务是执行联机事务和查询处理。这 种系统称为联机事务处理(OLTP)系统。它们涵盖了一个组织 的大部分日常操作,如购买、库存、制造、银行、工资、注册、 记帐等。另一方面,数据仓库系统在数据分析和决策支持方面提 供服务。这种系统称为联机分析处理(OLAP)系统。 两个系统的主要区别概括如下: 数据内容:数据库系统管理当前数据。通常,这种数据太琐 碎,难以用于决策。数据仓库系统管理大量历史的、存档的、归 纳的、计算的数据,提供汇总和聚集机制,并在不同的粒度级别 上存储和管理信息。这种特点使得系统容易用于“见多识广”的 决策。
1.3.1 两个系统的主要区别(2) 数据目标:数据库系统是面向业务操作,用于办事员、客 户和信息技术专业人员的事务和查询处理。数据仓库是面向主 题的,用于知识工人(包括经理、主管和分析人员)的决策分 析。 数据特性:数据库系统存储的是当前数据,数据是动态变 化的,按字段进行更新操作。数据仓库中数据是批量载入的、 静态的,系统定期执行提取过程为数据仓库增加数据,这些数 据一旦加入,一般不再从系统中删除。 数据结构:数据库系统采用面向应用的数据库设计,以高 度结构化和复杂的形式组织数据,以适应复杂的事务操作计算 的需求。数据仓库通常采用面向主题的星型或雪花数据组织模 式(在4.3.2节讨论),以适应分析决策,数据结构简单。
两个系统的其他区别包括使用频率、数据访问量、对响应 时间的要求等。这些都概括在表1.1中。 1.3.1 两个系统的主要区别(3) 两个系统的其他区别包括使用频率、数据访问量、对响应 时间的要求等。这些都概括在表1.1中。
OLTP系统是为了快速回答简单查询,而不是为了存储分析 趋势的历史数据而创建的。一般的,OLTP提供了大量的原始数 据,这些数据不易被分析。 1.3.2 两个系统的查询支持不同 OLTP系统是为了快速回答简单查询,而不是为了存储分析 趋势的历史数据而创建的。一般的,OLTP提供了大量的原始数 据,这些数据不易被分析。 数据仓库需要回答更复杂的查询,而不仅仅是一些像“英国 主要城市的商品平均销售价格是多少”之类的简单聚集数据查 询。数据仓库需要回答的查询类型可以是简单的查询,也可以 是高度复杂的,且还与终端用户使用的查询工具相关。 以下是某数据仓库支持的一些查询示例: 2008年第三季度,整个英格兰的总收入是多少? 2007年英国每一类房产销售的总收入是多少? 2008年租借房产业务中每个城市哪个地域最受欢迎?与过去 的两年相比有何不同? 每个分支机构本月的房产销售月收入是多少,并与刚过去的 12个月相比较。 如果对于10万英镑以上的房产,法定价格上升3.5%而政府税 收下降1.5%,对英国不同区域的销售会产生什么影响? 在英国主要城市中,哪种类型的房产销售价格高于平均房产销 售价格?这与人口统计数据有何联系?
1.3.3 两个系统数据组织模式示例比较(1)
1.3.3 两个系统数据组织模式示例比较(2)
1.3.3 两个系统数据组织模式示例比较(3) 从上述实例,不难看出: 1.3.3 两个系统数据组织模式示例比较(3) 从上述实例,不难看出: 1)在从面向应用到面向主题的转变过程中,丢弃了原来有的但 不必要的、不适于分析的信息; 2)在原有的数据库模式中,有关商品的信息分散在各个子系统 之中;面向主题的数据组织方式所强调的就是要形成关于主 题一致的信息集合; 3)不同主题之间有重叠内容。
第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 1.5 数据仓库的数据组织 1.6 本章小结
1.4 数据仓库的系统结构 1.4.1 三层数据仓库结构(1) 数据仓库的系统结构可以用图1.8来表示。 由于数据库和数据仓库应用的出发点不同, 数据仓库将独立于业务数据库系统,但是数 据仓库又同业务数据库系统息息相关。
1.4.1 三层数据仓库结构(2)
原则上,数据仓库的系统结构被划分为三层:数据仓库 服务器、OLAP服务器和前端工具。 1.4.1 三层数据仓库结构(3) 原则上,数据仓库的系统结构被划分为三层:数据仓库 服务器、OLAP服务器和前端工具。 1) 底层是数据仓库服务器,它几乎总是一个关系数据库系 统。数据仓库系统使用后端工具和实用程序从操作数据库和外 部信息源加载和刷新它的数据,这些机制统称ETL (Extract/Transformation/Load)工具,它们具有数据抽取、数 据清洗、数据转换、数据加载和数据刷新等功能。此外,这一 层还包含一个元数据存储,它是关于数据仓库和数据仓库中数 据的信息,关于元数据的进一步描述在1.4.2小节。 2) 中间层是OLAP服务器,其典型的实现有:(ⅰ)关系 OLAP(ROLAP)模型,即扩展的关系DBMS,它将多维数据 上的操作映射为标准的关系操作;(ⅱ)多维OLAP(MOALP) 模型,一种特殊的服务器,它直接实现多维数据操作。OLAP 服务器将在4.4小节讨论。 3) 顶层是客户,它包括查询和报告工具、分析工具和/或 数据挖掘工具(例如关联分析、分类分析、预测等)。
1.4.2 数据仓库中的关键名词(1) 下面详细讨论数据仓库中的一些关键名词。 1.4.2 数据仓库中的关键名词(1) 下面详细讨论数据仓库中的一些关键名词。 1. ETL(Extract/Transformation/Load)—数据抽取、转换、加 载工具 ETL工具就是进行数据的抽取、转换和加载。具体来讲, ETL工具包括:数据提取(data extract)、数据转换(data transform)、数据清洗(data cleaning)和数据加载(data loading)。 (1) 数据提取(Data Extract) 从数据仓库的角度来看,并不是业务数据库中的所有数据都 是决策支持所必需的。通常,数据仓库按照分析的主题来组织数 据,我们只需提取出系统分析必需的那一部分数据。例如,某超 市确定以分析客户的购买行为为主题建立数据仓库,则我们只需 将与客户购买行为相关的数据提取出来,而超市服务员工的数据 就没有必要放进数据仓库。 现有的数据仓库产品几乎都提供各种关系型数据接口,提供 提取引擎,从关系型数据中提取数据。
(2) 数据转换(Data Transform) 1.4.2 数据仓库中的关键名词(2) (2) 数据转换(Data Transform) 由于业务系统可能使用不同的数据库厂商的产品,比如IBM DB2、Oracle、Informix、Sybase、 NCR Teradata、 SQL Server等, 各种数据库产品提供的数据类型可能不同,因此,需要将不同格 式的数据转换成统一的数据格式。如时间格式“年/月/日”, “月/日/年”、“日-月-年”的不一致问题等。 (3) 数据清洗(Data Clean) 由于企业常常为不同的应用对象建立不同的业务数据库,比 如一个电信运营公司拥有计费数据库、财务数据库、客服数据库、 客户投诉数据库等业务系统,这些业务系统中可能包含重复的信 息,比如客服数据库中的部分客户基本信息也在客户投诉数据库 中存在,由于不同的数据库可能使用不同数据库公司的产品,不 同的业务系统可能由不同的软件开发商提供,这使得各个业务数 据库中的数据可能存在不一致现象。再者,由于数据被冗余地存 放在不同的数据库中,如果不同数据库间的数据刷新不是实时的, 则可能出现数据不同步的情况。
1.4.2 数据仓库中的关键名词(3) 对于决策支持系统来说,最重要的是决策的准确性,因此确 保数据仓库中数据的准确性是极其重要的。从多个业务系统中获 取数据时,必须对数据进行必要的清洗,从而得到准确的数据。 所谓“清洗”就是将错误的、不一致的数据在进入数据仓库 之前予以更正或删除,以免影响决策支持系统决策的正确性。 (4) 数据加载(Data Load) 数据加载部件负责将数据按照物理数据模型定义的表结构装 入数据仓库,包括清空数据域、填充空格、有效性检查等步骤。 现在ETL工具的功能越来越强。它具有支持数据的“净化提 炼”功能、数据加工功能和自动运行功能(包括处理过程的监控、 调度和外部批处理作业的启动等),支持多种数据源,能自动实 现数据抽取。所谓数据的“净化提炼”就是对从多个不同业务数 据库所抽取的数据,进行数据项名称的统一、位数的统一、编码 的统一和形式的统一,消除重复数据。
2. 元数据(MetaData) 1.4.2 数据仓库中的关键名词(4) 1.4.2 数据仓库中的关键名词(4) 2. 元数据(MetaData) “什么是元数据?”元数据是描述数据的数据。在数据仓库 中,元数据是定义数据仓库对象的数据。元数据包括相应数据仓 库的数据名和定义、数据提取操作时被提取数据的时间和地点以 及数据清理或数据集成过程添加的字段等。它提供了有关数据的 环境,用于构造、维持、管理、和使用数据仓库,在数据仓库中 尤为重要。 元数据通常包括: 数据仓库结构的描述信息,包括仓库模式、视图、维、层次 结构和导出数据的定义,以及数据集市的位置和内容。 操作元数据,包括数据血统信息(来自何处以及如何转换 的),数据流通信息(主动的、档案的或净化的)以及监视信息 (仓库使用统计、错误报告、审计跟踪)。 汇总用的算法,包括度量与维定义算法,数据粒度、分割、 主题域、聚集、汇总、预定义查询与报告的算法。
1.4.2 数据仓库中的关键名词(5) 由操作环境到数据仓库的映射信息,包括源数据库和它们 的内容,ETL程序描述,数据分割、提取、清理和转换的规则 和缺省,数据刷新和裁减的规则以及数据安全信息(用户授权 和存取控制)。 关于系统性能的数据信息,除刷新、更新和复制周期的定时 和调度的规则外,还包括改善数据存取和检索性能的索引和配 置。 商务元数据,包括商务术语和定义,数据拥有者信息和收 费策略。 数据仓库包括不同级别的综合,元数据是其中一种类型。 其它类型包括当前的细节数据(几乎总是在磁盘上),老的细 节数据(通常在三级存储器上),稍加综合的数据,以及高度 综合的数据(可以存入仓库也可以不存入)。
1.4.2 数据仓库中的关键名词(6) 与数据仓库中的其它数据相比,元数据扮演很不相同的角 色,并且由于种种原因,也是重要的角色。例如元数据用作目 录,帮助决策支持系统分析者对数据仓库的内容定位;当数据 由操作环境到数据仓库环境转换时,作为数据映射指南;对于 用在当前细节数据与稍加综合的数据之间以及稍加综合的数据 与高度综合的数据之间的汇总算法,也作为指南。 元数据应当持久存放和管理(即存放在磁盘上)。通常, 数据仓库将建立专用的元数据库来存放和管理元数据。 3. 数据集市(Data Market) 数据仓库中存放的是整个企业的信息,并且数据是按照不 同主题来组织的。比如市场发展规律的分析主题主要由市场部 门的人员使用,我们可以在逻辑上或者物理上将这部分数据分 离出来,当市场部门人员需要信息时,不需要到数据仓库的巨 量数据中检索,而只需在相应的部门数据上进行分析,因此从 效率和处理速度的角度出发,这种划分是合算的。
1.4.2 数据仓库中的关键名词(7) 我们把这种面向企业中的某个部门(主题)而在逻辑上或 物理上划分出来的数据仓库中的数据子集称为数据集市。换句 话说,数据集市包含了用于特殊目的数据仓库的部分数据。 数据仓库面向整个企业,而数据集市则是面向企业中的某 个部门。典型示例是销售部门、库存和发货部门、财务部门和 高级管理部门等的数据集市。数据仓库中存放了企业的整体信 息,而数据集市只存放了某个主题需要的信息,其目的是减少 数据处理量,使信息的利用更快捷、灵活。 通常,数据集市可以在低价格的部门服务器上实现。实现 数据集市的周期一般是数以周计,而不是数以月计或数以年计。 然而,如果它们的规划不是企业范围的,从长远讲,可能涉及 很复杂的集成。 根据数据的来源不同,数据集市分为独立的和依赖的两类。 在独立的数据集市中,数据来自一个或多个操作的系统或外部 信息提供者,或者来自一个特定的部门或地域局部产生的数据。 依赖的数据集市中的数据直接来自企业数据仓库。
1.4.2 数据仓库中的关键名词(8) 4. OLAP 数据仓库是管理决策分析的基础,要有效地利用数据仓库的信 息资源,必须要有强大的工具对数据仓库的信息进行分析决策。 OLAP(On-line Analytical Processing,在线分析处理或联机分析处 理)就是一个应用广泛的数据仓库使用技术。它可以根据分析人员 的要求,迅速灵活地对大量的数据进行复杂的查询处理,并以直观 的容易理解的形式将查询结果提供给各种决策人员,使他们能够迅 速准确地掌握企业的运营情况,了解市场的需求。这就是说,OLAP 是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、 一致、交互地查询,从而获得对数据的更深入了解的一类软件技术。 OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报 表需求,它的技术核心是“维”这个概念。 维(dimension)是人们观察数据的特定角度。例如,一个企业 在考虑产品的销售情况时,通常从时间、地区和产品的不同角度来 深入观察产品的销售情况。这里的时间、地区和产品就是维。而这 些维的不同组合和所考察的度量指标构成的多维数组则是OLAP分析 的基础,可形式化表示为(维1,维2,……,维n,度量指标),如 (地区、时间、产品、销售额)。
1.4.2 数据仓库中的关键名词(9) “维”一般包含着层次关系,这种层次关系有时会相当复杂。 通过把一个实体的多项重要的属性定义为多个维,使用户能从 不同维对数据进行分析比较。因此OLAP也可以说是多维数据 分析工具的集合。 多维分析是指对以多维形式组织起来的数据采取切片 (Slice)、切块(Dice)、钻取(Drill-down和Roll-up)、旋转 (Pivot)等各种分析动作,以求剖析数据,使用户能从多个角 度、多侧面地观察数据库中的数据,从而深入理解包含在数据 中的信息。 切片和切块是在一部分维上选定值后,关心度量数据在剩 余维上的分布。如果剩余的维只有两个,则是切片;如果有三 个,则是切块。
1.4.2 数据仓库中的关键名词(10) 钻取是改变维的层次,变换分析的粒度。它包括向上探 取(roll up)和向下钻取(drill down)。roll up是在某一维上将 低层次的细节数据概括到高层次的汇总数据,或者减少维数; 而drill down则相反,它从汇总数据深入到细节数据进行观察或 增加新维。 旋转是变换维的方向,即在表格中重新安排维的放置(例 如行列互换)。 根据数据的组织方式的不同,目前常见的OLAP主要有基于 多维数据库的MOLAP及基于关系数据库的ROLAP两种。 MOLAP是以多维的方式组织和存储数据,ROLAP则利用现有 的关系数据库技术来模拟多维数据。在数据仓库应用中, OLAP应用一般是数据仓库应用的前端工具,同时OLAP工具还 可以同数据挖掘工具、统计分析工具配合使用,增强决策分析 功能
第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 1.5 数据仓库的数据组织 1.6 本章小结
1.5.1 数据仓库的数据组织结构(1) 在数据仓库中,数据一般分成4个级别:高 度综合级、轻度综合级、当前细节级和早期细 节级。
1.5.1 数据仓库的数据组织结构(2) 一个典型的数据仓库的数据组织如图1.9所示
1.5.1 数据仓库的数据组织结构(3) 源数据(早期细节级数据)经过综合后,首先进入当前细节 级,然后根据应用的需求,通过预运算将数据聚合成轻度综合和 高度综合级。由此可见,数据仓库中存储着不同综合级别的数据, 一般称之为“数据粒度”。粒度越大,表示细节程度越低,综合 程度越高。比如,在电信公司中的电话呼叫数据中记录了每个用 户的每次呼叫。进行OLAP分析时,常常需要不同层次的数据粒度, 因此可以通过预运算将数据综合成每个用户每“天”的通话次数, 还可以进一步聚合成每个用户每“月”的通话次数(图1.9中右列 所示)。 在数据仓库中,轻度和高度综合级别的数据一般是由细节数据 聚合而来,但需要说明的是轻度和高度是相对的概念,而没有绝 对的界限,并且在数据仓库中数据的综合程度常常有很多的级别。
1.5.1 数据仓库的数据组织结构(4) 随着时间的推移,系统中的一些细节数据已经“老化” 了,很少会被用户使用,此时为了节省系统的存储空间,可以 将这些老化的细节数据导出到备份设备上。实际应用中,综合 数据也可能被导出系统。比如企业的管理者认为企业的决策只 同企业近15年来的运营数据有关,则15年之前的综合数据也可 以导出。对于高度综合的数据,由于其数据量已经很少,所以 一般可以不考虑它们的导出问题。 在数据仓库中,处理提取和综合后的数据还包含非常重要 的元数据,它描述的是提取和综合后的数据的组织方式,属于 数据的一种综合类型,我们在数据仓库的体系结构(1.4节)中 已经介绍了元数据。
1.5.2 数据粒度与数据分割(1) 1. 数据粒度 数据粒度是数据仓库中极其重要的概念。粒度可以分为两 种形式,一种是对数据仓库中的数据的综合程度高低的一个度 量,它既影响数据仓库中数据量的多少,也影响数据仓库中数 据的用途。在数据仓库中,多重的数据粒度是必不可少。由于 数据仓库最主要的目的是反映企业整体信息和DSS分析,因而 决大多数查询都是基于一定程度的综合数据之上,只有极少数 查询涉及到细节。所以,应该将大粒度数据存储于快速设备 (如磁盘)上,而将细节数据定期导出到低速设备(如磁带) 上。 粒度的第二种形式是指抽样率,即以一定的抽样率对数据 仓库中的数据进行抽样后得到一个样本数据库。这种样本数据 库中的粒度不是根据综合程度的不同来划分的,而是由抽样率 的高低来划分,抽样粒度不同的样本数据库可以具有相同的数 据综合程度。 在数据仓库环境中粒度之所以是一个极其重要的概念,是 因为它深深地影响存放在数据仓库中的数据量的大小,同时影 响数据仓库所能回答的查询类型,在数据仓库中数据量大小与 查询的详细程度之间要做出权衡。
1.5.2 数据粒度与数据分割(2) 2. 数据分割 数据分割是数据仓库中又一重要概念。所谓数据分割是指 将数据分散到各自的物理单元中以便能够独立处理,提高数据 处理的效率。数据分割没有固定的标准,分割的方法和粒度应 当根据实际情况来确定。分割方法常常可以选择时间、地点、 业务领域来划分,也可以是其组合。按照时间进行分割符合数 据仓库数据随时间变化的特点,并且分割后数据分布比较均匀, 所以是最常用的分割方法。 不过需注意的是:在数据仓库中,围绕分割问题的关键并 不是该不该对数据进行分割,而是如何分割。这也是为什么有 人说,如果粒度和分割都做得很好的话,几乎数据仓库设计和 实现的所有其他问题都容易解决。但是,假如粒度处理不当, 并且分割也没有认真地设计与实现,将严重影响其他方面的设 计效果。
1.5.2 数据粒度与数据分割(3) 分割的一个简单例子: 如表1.2所示,分割是按照时间和业务领域的组合来划分的。
在数据仓库发展过程中,出现了多种不同的数据组织形式: 1.5.3 数据仓库的数据组织形式(1) 在数据仓库发展过程中,出现了多种不同的数据组织形式: 1. 简单堆积文件 简单堆积文件就是将每天由业务数据库提取并处理后的数据 逐天存储起来,如图1.10所示。还有一种形式被称为简单直接文 件,它同简单堆积文件非常类似,只是按照一定的时间间隔对 业务数据库进行快照并存储,但是时间间隔不一定是每天。
1.5.3 数据仓库的数据组织形式(2) 2. 定期综合文件 在定期综合文件这种方式中,数据存储单位被分成日、周、 月、季、年等多个级别。首先数据被逐一添加到每天的数据集 合中,当一个星期过去了,每天数据被综合成周数据,依此类 推,周数据被综合成月数据……。 定期综合文件的组织方式使得数据量比简单堆积文件方式大 大减少,但是由于数据被进行了综合,使得数据的细节在综合 中丢失。因此,定期综合文件的形式是牺牲数据的细节信息换 取数据量级的减少。 3. 连续文件 定期综合文件其数据量级小时丢失了数据细节,简单堆积 文件保留细节但数据量级又很大,是否可以综合两者的优点呢? 答案是肯定的。
1.5.3 数据仓库的数据组织形式(3) 在简单堆积文件中,每天的数据表中有许多雷同的信息, 如图1.11所示的某商场2007年1月和2007年2月的两张采购表, 其中“钢笔”和“水杯”在两个表都出现了。“上海”产的 “钢笔”既在2007/1购买,又在2007/2购买。如果能够用一条记 录将两条记录所包含的信息记录下来,则既能保留细节信息,又 能大大减少数据量。
1.5.3 数据仓库的数据组织形式(4) 图1.12中显示了对两张表使用连续文件的形式进行存储的 结果。对于两张表中相同的项“钢笔”,只需在时间列上说明 购买时间是“2007/1~2007/2”,对于两表不同的表项分别记录 。
1.5.3 数据仓库的数据组织形式(5) 随着时间的推移,如果又有新的数据表加入,则可以使用 连续文件和新的数据表进行类似的处理,以达到“两全其美” 的目的。但是,应当指出:连续文件增加的“时间”列也会为 查询带来一定的不便。一个系统某些性能的提高,总是以牺牲 其他性能为代价的。
1.5.4 数据仓库的数据追加和清理(1) 1.数据追加 数据的组织结构和数据的组织形式解决的是数据仓库数据 的存储问题。而数据追加解决的是数据仓库初始数据加载后, 如何再向数据仓库输入数据的问题。 如果业务数据库中的数据没有发生变化,则不需要对数据 仓库进行追加,因此,数据追加实际上只增加在上次数据输入 后业务数据库中变化了的数据。要完成数据追加的工作,最关 键的是“捕获”数据变化,并将数据的变化记录下来。
1.5.4 数据仓库的数据追加和清理(2) (1)时标法 “时标法”的思想是为数据记录增加一个时间标记字段。 当数据在上次数据导入完成后发生了变化,则修改这条记录的 时间标记。 但是,在业务数据库系统中,通常没有专门的时间标记字 段。数据库应用的设计者主要是从实现事务处理的功能角度来 考虑问题,因此,数据库应用的设计者通常不会增加时间标记 字段,因为该列对于事务处理系统来说是不必要的。由于这些 原因,时标法虽然简单,但很难得到实际应用。
1.5.4 数据仓库的数据追加和清理(3) (2)前后快照比较法 其思想很简单:将上次执行完数据追加任务的当前业务数 据库快照记录下来,同要执行新的数据追加任务前的原先业务 数据库快照进行比较,比较这两次快照的不同,来生成追加的 内容。 这种方法简单,但是数据库的数量级很大时,进行这样全 数据库的比较将会耗费大量的系统资源和时间,所以这种方法 并不实用。 (3)DELTA文件法 “DELTA文件法”是一种从应用程序来感知数据变化的方 法。其基本思想是;数据的变化是由业务数据库应用程序引发 的,因此业务数据库应用程序应当知道它修改了哪些数据,应 用程序可以将它执行成功的修改操作记录下来,形成DELTA文 件作为追加的内容。 业务数据库应用程序主要是为了完成事务处理而设计的, 要使所有的应用程序都支持DELTA文件的功能在实际的工程应 用中很难,因此,这种方法也没有得到实用化。
(4)日志文件法 1.5.4 数据仓库的数据追加和清理(4) 1.5.4 数据仓库的数据追加和清理(4) (4)日志文件法 DELTA文件法从能够感知业务数据变化的应用程序来生成 追加文件,这种想法是很巧妙,但是它没有考虑到应用程序常 常是由不同的软件开发商开发的,因此很难对其进行统一的规 范。 我们知道,各个应用程序都是通过同数据库服务器进程通 信来实现其数据访问功能,最终数据的访问和处理工作是由数 据库服务器来承担,因此数据库服务器能够感知数据的变化。 如果数据库开启了系统日志,数据库服务器将会把它所执行的 所有操作详细地记录下来。我们可以通过分析数据库系统日志 来获取数据变化的情况,得到追加内容。 虽然日志文件法需要对日志本身进行比较复杂的分析,但 是由于它能够极大程度地减少工作量,所以得到了广泛的应用。
1.5.4 数据仓库的数据追加和清理(5) 2.数据清理 数据仓库的数据清理与传统数据库系统中数据清理的含义 有区别。在传统数据库系统中,数据清理意味着将数据删除。 数据仓库系统中数据清理并不是简单地删除,而是从细化级别 的数据逐渐上升为高度综合级的数据,直到数据已经不再具备 任何意义时被清除的过程。事实上,数据仓库中的数据清理包 括: 1)数据从操作型环境进入分析型环境; 2)数据从细节数据逐渐转换为综合数据; 3)数据从高速磁盘中转移到低速存储介质上; 4)数据失去实际意义,最终被清除。 这个过程实际上也是数据在数据仓库中的生命周期。
第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 第一章 目录 1.1 从数据库到数据仓库 1.2 什么是数据仓库 1.3 数据仓库与传统数据库的比较 1.4 数据仓库的系统结构 1.5 数据仓库的数据组织 1.6 本章小结
1.6 本章小结 本章以“蜘蛛网”问题为导引,介绍了从数据库到数据仓 库的演变过程。在给出数据仓库的定义后,详细阐述数据仓库 面向主题、数据集成、数据稳定、数据随时间变化的基本特征。 讨论传统数据库与数据仓库的区别。介绍数据仓库的体系结构 及数据仓库中ETL、元数据、OLAP等一系列重要的概念。最后 介绍了数据仓库的数据组织,以及数据粒度、数据分割、数据 追加等概念。
End of Chapter 1