日期:2013-05-22  浏览次数:20491 次

Microsoft 数据仓库架构

摘要:本文简单引见了使用 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 工具用于导入