Analysis Services基础知识
——深入SQL Server 2008
这一节中,我们将介绍Analysis Services的体系结构,这个体系结构在SQLServer2005中建立,并在SQL Server 2008中得以延续。我们还将研究Analysis Services的一些基础特性。
体系结构
图20-1给出了Analysis Services体系结构的一个高层视图。主要组件是UDM(Unified Dimensional Model,统一维度模型),这是一个表示关系型和多维数据存储库的内聚维度模型。UDM提供了从客户程序(如Excel或SQLServer Reporting Services)到各种异构数据源的一个桥(标准表示)。不必使用各个数据源的本机语言(如特定的SQL语言)来访问数据源,UDM允许客户程序向UDM发出命令。
很多Analysis Services功能都建立在UDM之上。这包括层次结构、分类、时间表示、语言转换和透视。甚至一些高级功能(如主动缓存和分析)也成为UDM的内置部分,相应地也是Analysis Services的功能。
随着XML和Web服务变得越来越重要,Analysis Services以一种全面的方式支持这些当前的技术主流。AnalysisServices服务器的行为方式类似于一个Web服务,毫无疑问,管理这个服务器要采用基于XML的语言。所有与Analysis Services服务器的客户端通信都通过基于标准的XML/A协议完成。
微软仍在继续支持各种技术,目的是与XML/A提供的功能(ADOMD、ADOMDB.NET、OLE DB for OLAP和Win32)实现向后兼容。XML/A实际上是ASSL(Analysis ServicesScripting Language,Analysis Services脚本语言)的一个子集,XML/A发送操作命令,如Create、Alter和Process(分别创建一个多维数据集、修改一个多维数据集,以及处理一个多维数据集)。ASSL也是用来指定Analysis Services中对象的语言。XML/A处理命令,ASSL的其余部分是面向Analysis Services对象的一个DDL。
BIDS作为SQL Server BI的开发环境,使用了Visual Studio的开发风格(解决方案、项目和源文件)。与一个BIDS Analysis Services项目相关的源文件包含与Analysis Services对象相关的元数据。可以将这些文件提交到标准源代码控件(如Visual SourceSafe或Visual Studio TeamFoundation Server)。元数据语言是XML,存储在文件中。SQL Server Management Studio和BIDS使用XML/A与Analysis Services通信。
微软在SQL Server 2005的Analysis Services中引入了主动缓存,使得低延时应用有最小的管理开销。主动缓存的主要目的是对数据的过时性进行管理。例如,可以将主动缓存配置为在底层数据改变时进行更新。如果缓存正在更新过程中,Analysis Services会足够聪明,指示查询不要从缓存取结果,而应对底层数据源运行查询。主动缓存最适合用在当底层数据改变时发出通知的关系数据库中。
SQL Server 2008中的Analysis Services不会将整个维度都缓存在内存中。类似于操作系统在内存中保留某些页而将某些页面切换到磁盘上,Analysis Services也使用了物理内存和磁盘空间。这种方法的好处是现在Analysis Services可以支持无限的维度大小。例如,SQLServer 2000的AnalysisServices要根据可用的物理RAM限制维度大小。现在Analysis Services可以利用缓存(将结果部分存储在磁盘上),因此不受RAM的限制。
开发环境
BIDS是Analysis Services开发的主要环境。这个应用实际上是Visual Studio 2008的一个版本,随SQL Server2008发布而没有额外费用。
在开发人员将Analysis Services项目部署到一个服务器上之前,BIDS支持离线开发。这种离线开发是可行的,因为BIDS会使用所访问的数据源的模式快照。它创建的AnalysisServices对象(多维数据集、维度、事实表,等等)只是这些对象的本地副本。开发人员必须将它们部署到一个特定的Analysis Services服务器。这样做真正的好处是,即使AnalysisServices未在本地运行,而且即使开发人员没有连接网络,也可以进行开发。
在离线开发之上,BIDS为计算的创建提供了管理对话框和基于向导的支持。这些用户界面改进可以自动完成计算的管理,包括时间管理和解释、账户智能(account intelligence)、财务聚合(financialaggregation)、对多种货币的支持,以及半累加(semi-additive)度量值。如果不使用这些对话框和基于向导的支持,另一种做法就是手动编写这些计算。
注意 要理解术语半累加度量值,需要对Analysis Services对象有所了解。计算会在由维度组成的多维数据集上运行。完全累加度量值是对一个多维数据集的所有维度进行计算。半累加度量值则是对一个多维数据集的一部分而不是全部维度进行计算。
BIDS的另一个好处是对多种配置的支持。这样就可以对Analysis Services的多个实例部署项目。另外还支持本地化对象和转换,所以Analysis Services支持采用多种语言部署。
Analysis Services对象和概念
Analysis Services包括很多我们感兴趣的特性。在这里,我们将回顾其中最重要的一些对象和概念,这些对象和概念对于有效的BI实现尤其有用。我们将在下一节介绍更多特定于OLAP应用的概念。
1.数据源视图
DSV(Data source views,数据源视图)在数据源之上形成了一个虚拟层,包含与数据源相关的对象的一个子集(只是相关元素)。例如,一个DSV可能包含与工资处理有关的表和视图的一个子集。利用这种可视化,开发人员可以重命名对象,还可以创建计算列和命名查询。命名查询支持的另一个好处是,开发人员可以访问基础视图而无需要求用户对数据源有CREATEVIEW权限。
2.多维表达式
前面提到过,MDX是Analysis Services支持的语言,来实现计算和安全性规则。开发人员使用MDX查询AnalysisServices,并建立计算和KPI。
3.KIP框架和透视
KPI在SQL Server 2005中引入,这是一些服务器端对象,可以图形化表示一个值、该值的一个期望目标、指标的状态(好、坏等),以及度量值的走向。
例如,一个证券所可以使用大拇指朝上(thumb-is-up)或大拇指朝下(thumb-is-down)的图片来指示是否买入或卖出某只股票。确定这一点的底层算法可能相当复杂(涉及值、目标、状态和走向),不过KPI(公司度量值)可以很简单:买入(大拇指朝上的图片)或是卖出(大拇指朝下的图片)。
走向是一个方向性行为,可以与一个图片关联,如温度计、燃料表或者一个向上或向下的箭头。例如,一辆车可能在比赛中领先(KPI的状态),但是另一辆车可能很快追上(走向)。开发人员要使用MDX语言定义一个KPI的值、目标、状态和走向。
还有一个功能可以支持用户特定的信息上下文,这就是透视。透视(perspective)是特性、用户定义的层次结构、操作和度量组的一个逻辑集合,经过优化可以为给定的一类用户提供底层数据的一种相当精美的定制视图。可以认为AnalysisServices中的透视就相当于关系型引擎中的视图。
4.CLR集成
有些情况下,Analysis Services开发人员可能仍需要用到采用某种高级语言完成的计算,如CLR(common language runtime,通用语言运行时)语言C#和VB.NET。在SQL Server 2008中,可以使用这种CLR语言创建SQL Server对象(如用户定义的函数等)。这个CLR语言支持不仅包括用户定义的函数,还包括存储过程和触发器。
可以使用Visual Studio 2008为SQL Server开发这种CLR插件。同一个Visual Studio解决方案完全有可能既包含一个AnalysisServices项目,同时包含一个C#或VB.NET项目来提供Analysis Services项目要用到的用户定义的函数(相当于一个应用和一个开发环境)。
5.AMO
从管理的角度看,AMO(Analysis Management Objects,分析管理对象)为创建和维护AnalysisServices对象公开了一个API。AMO可以处理管理任务,包括安全性和处理,甚至包括备份和恢复。