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