Microsoft 数据仓库架构
摘要:本文简单介绍了使用 Microsoft 数据仓库架构的数据仓库,讨论了数据仓库能够实现的功能,使用数据仓库的恰当时机,以及如何将数据仓库与系统体系结构合成一体。
目录
简介
1998 年发布的 7.0 版 Microsoft® SQL Server™ 中已经包含数据仓库软件。如果您对数据仓库比较陌生,您可能会问:“它能够干什么?什么时候使用数据仓库比较合适?怎样才能将数据仓库与系统体系结构合为一体?”本文将简要介绍使用 Microsoft 数据仓库架构的数据仓库。
数据仓库
在软件行业相对短暂的历史中,数据库已经成为收集和分布信息的系统的基础。这些数据库深层隐藏的是统计学或测量方法,战略家们可以对其进行研究,以提高系统的整体效率。数据采集是这类信息的重要部分,目的在于根据数据库内容进行正确决策。直到最近,这种努力还需要昂贵而笨重的数据采集软件包,或能够将信息请求精确翻译成可使用的、更有效的查询的数据库专家。除特大型的机构以外,对其他所有人来说,这两种方案的成本都极为昂贵。
就数据采集的目的而言,能够有效用于产品分类、库存控制和订单条目系统的普通关系数据库可能并不是最佳的设计。跨表和跨数据库(有时甚至是跨服务器)汇总输出可能会非常复杂,而这种复杂是可以避免的。需要进行数据采集时,创建一个可供数据分析查询用的信息中心储备库将更有意义。这就是数据仓库的含义。来自系统不同部分的信息被集成到数据仓库中,以便于访问。
作为数据仓库模型的立方体
用立方体作为数据仓库储备库的名称虽然不完美,但比较令人满意。如何区分数据仓库立方体和几何立方体呢?这两种立方体之间存在几个重要的不同之处。数据仓库立方体由任意数量的维度定义(并不限于三维,有时数据仓库立方体可能少于三维)。描述数据仓库立方体的维度与描述几何立方体的长、宽和高一样。如果需要,可以将维度组合成任意数量的级别。
两维间的关系可以用网格定型。维度类似于网格坐标轴上的标记。单元格才是内容。内容对应于立方体每个维度的交叉结果。单元格中的数据是一个计量单位。计量单位是判断立方体的全部依据。如果立方体是关于售出项目的数目,则计量单位就是已出售项目数量的计数。要重复网格示例,计量单位便是您在网格单元格中找到的数目。
图 1:上图显示的是两维立方体的组织结构。在该示例中,“产品”和“地区”是维度;“椰菜”、“肥皂”、“俄勒冈”、“华盛顿”、“西雅图”和“斯波坎”是各个维度的级别。包含不同图表的单元格就是内容。内容单元格中的单个数据就是计量值。在该示例中,立方体中共使用了三种计量单位。
维度和级别
对于为杂货店设计的数据仓库立方体,其维度可能包括产品、优惠、时间(营业天数)和地区等内容。可能还包括雇员维度和客户维度(某些杂货店可能有会员帐户)。
级别用于将维度按需要组织为更小的单位。根据级别在立方体中的配置,它们还可能包含其他级别。例如,假设有一个区域维。也许这个杂货店在三个州营业,并且使用州界作为分界线。假设区域维包含三个级别:加利福尼亚、俄勒冈和华盛顿。如果该店在华盛顿州还包括其他子区域(例如西雅图、奥林匹亚、亚基马和斯波坎),即使加利福尼亚和俄勒冈区域没有这样的情况,这些级别仍可以作为子级别添加到华盛顿区域。级别只是组织维度内容的一种便利方法。
内容和计量单位
内容是由各个维度组合而成的。定位内容类似于使用坐标系。就象数学立方体中的原点可以表示为 (x=0,y=0,z=0),内容将由特定的维度组合(例如 (Product=broccoli, Region=Seattle, Time=Wednesday))表示,生成一个有关星期三在西雅图销售椰菜的内容。根据立方体的使用方法,内容可能显示一个类似于“售出 580 单位物品”或“销售额为 $860.00”的计量单位。计量单位的含义取决于立方体的定义方式。在本例中,可能有多种椰菜或在西雅图地区有多个商店。该值将表示定义组的汇总。立方体内的计量单位可能是数字。对于一个杂货店,计量单位可能会是产品价格、净销售额、销售数量、商品成本等。
汇总
计数和总计的数学运算是数据仓库之所以有用的重要原因之一,属于汇总功能。维度组织完毕并已对立方体进行处理后,将开始计算汇总。通常,在立方体初始填充后或对立方体的内容进行更改后,将立刻进行汇总。
使用数据仓库进行决策
假设一个杂货店的情形。假定某种促销已经进行了好几天,店主需要决定是否要再次进行促销。店主可能会产生如下疑问:“促销期间卖出的产品比促销前卖出的产品多吗?”
在使用普通结构的事务数据库中,杂货店库存系统可以记录价格、产品、销售和促销等情况。库存系统在插入和更新记录方面进行了优化,并且在简单的程式化选择(如检索项目成本)方面可能也进行了优化。这种情况是不太可能的:系统的组织方式使得所生成的报告可以按天或按产品详细描述某种销售的有效性。事实上,为事务有效性而设计的系统和为查询有效性而设计的系统间总是存在矛盾。这种情况下,就应该使用数据仓库。数据仓库是一个独立的存储库,它使用已进行优化的结构中现有资源的相关数据。
在此例中,使用数据仓库将很容易回答店主的问题。通过使用产品、促销和时间立方体维度,计量项目销售量的内容记录总和便可以生成所需的结果。
与此技术相比,其他系统中的信息甚至可能不在同一数据库中。库存数据源可能和客户数据源或雇员数据源不一样。即使该系统位于同一数据库中,建立一个查询系统(该系统以一种可以生成正确答案的方式合并和汇总结果)也是非常繁琐的。事实上,合并数据源和汇总结果正是数据仓库软件最擅长的。
FoodMart 示例立方体包含在 Microsoft SQL Server Analysis Services 软件,即 Microsoft 的数据仓库软件中。对于了解使用数据仓库时可以使用什么样的信息,这是一个非常好的资源。FoodMart 示例使用杂货店作为模型。
查看立方体片段和编程接口
虽然将数据仓库构建成多维可能是简单的设计选择,并且对于处理器来说,执行跨越多个维度生成结果的查询也不是特别的复杂,但是多维输出的结构显示起来却非常困难。图表、图形和表格通常都是使用两维显示的。虽然有一些好的三维图表工具,但图表会变得难以看懂。查看多维输出的常用技术是一次查看立方体的一个两维输出“片段”。这也是 Microsoft SQL Server Analysis Tool 显示输出的方式。
使用 DSO
幸运的是,输出并不局限于两维。Microsoft SQL Server Analysis Services 为多维数据仓库输出提供了编程接口:DSO,决策支持对象 (Decision Support Object)。DSO 能够用于编程访问多个维度。
有关包含对象模型和程序员参考的 DSO 的详细信息,请阅读 MSDN Online 上的“决策支持对象 (Decision Support Object)”。该链接位于 http://msdn.microsoft.com/library/psdk/sql/prabout_84a4.htm(英文)。
使用 MDX
MDX(多维扩展)是为查询多维对象和数据而设计的语法。对这样的系统来说,使用 MDX 要比使用 SQL(为完全不同的对象集而设计)更有效也更有意义。MDX 查询的语法与 SQL 查询的语法类似。请注意观察下面的 MDX 查询,它将选用前面示例中的销售数字(星期三在西雅图销售的椰菜):
SELECT
[Measures].[Sales] ON COLUMNS
[Time].[Wednesday] ON ROWS
FROM MySalesCube
WHERE [Region].[Washington].[Seattle]
AND [Product].[Vegetable].[Broccholi]
本查询的输出为一个标记有“销售额”的列,标记有“星期三”的行和交叉处包含销售数字“$860.00”的网格单元格。
SQL Server Analysis Server Manager 包含一个接收 MDX 查询的接口。此外,MDX 查询也可以被集成到使用 DSO 的程序中。有关 MDX(包括简单 MDX 查询的基本结构和 SQL 与 MDX 之间的主要区别)的详细信息,请参阅 MSDN Online 上的“MDX”。该链接位于 http://msdn.microsoft.com/library/psdk/sql/agmdxbasics_04qg.htm(英文)。
Microsoft 数据仓库架构
Microsoft 数据仓库架构是一个易于集成到当前系统的开放式体系结构。Microsoft SQL Server DTS 工具用于导入、导出以及修复或转换数据(如果需要)。该架构包含一个用于自定义数据仓库实现的、以对象为中心的编程接口。还有一个用户接口,即 Microsoft SQL Server Analysis Services Manager,可用于配置数据仓库并填写或更新立方体中的内容。它可用于安排任务、监视性能以及对数据仓库执行查询。
您可以从 MSDN Online 了解有关如何使用 Microsoft SQL Server Analysis Services Manager 创建立方体的详细信息,还可以了解设计和配置数据仓库时要注意的原则。请查看位于 http://msdn.microsoft.com/library/psdk/sql/aghtintro_2vov.htm(英文)的“使用方法”一文。
数据仓库的其他应用
对于决策支持,数据仓库是一个了不起的工具,但该软件还具有其他实际用途。
数据归档便是其中一种用法。某些系统的存储能力可能有限。因此需要经常从这些系统中删除旧数据,以便容纳新数据。如果需要归档信息以便保存长期的历史报表,请考虑将部分旧数据存入数据仓库。
数据仓库将报告数据从运行系统中隔离出来。通过将查询工作移动到更有效率的系统,这种隔离能够提高运行系统的性能。可以提高安全性。敏感信息将保存在不会暴露给查询的运行数据库中。由数据仓库提供的提取级别简化了对决策支持应用程序生成的统计表的访问。
实现数据仓库易犯的错误
数据仓库可能在几个方面使商业进程明显复杂化。
它们倚赖于其他系统。如果数据仓库所倚赖的数据源有所更改(例如,该数据源不再可用或已被新系统代替),那么也需要对向数据仓库传送数据的进程进行修改。设计一个向数据仓库传送数据的进程是创建数据仓库过程中最费时间的任务。
有用数据的可用性非常关键。有时数据源内容对于决策支持没有什么用处。如果数据源是临时性的,或者带有未定义结构,或者内容变化得太快,这些都将降低数据仓库所需的稳定性。创建数据仓库并不能解决有用数据收集过程中的问题。
总结
Microsoft 数据仓库架构提供了构造、填充、查看和访问数据仓库的工具。数据仓库软件的基本单位是立方体,它是来自现有数据源的集成信息储备库。