介绍SSAS的存储,涉及:
- 理解分区
- 度量组分区的变更与创建
- 分区的存储模式与区别:MOLAP、ROLAP、HOLAP
- 主动缓存的作用以及低延迟分区的配置 * 网上看到有翻译成“预先缓存”的
- 理解聚合
- 部署SSAS对象;自动调度处理SSAS对象使数据最新
提及数据延迟的问题,再回到ETL工具SSIS,补充一个实际应用话题:
- 在SSIS中如何捕获上游变更数据(Change Data Capture,简称:CDC)
书名:MCTS Self-Paced TrainingKit(Exam 70-448): Microsoft SQL Server 2008 – Business Intelligence Development and Maintenance
第7章管理SSAS存储、处理(Processing)与部署
在SSAS或OLAP技术中,如何尽可能使用最小存储空间,使大数量数据查询性能最优化,是需要考虑的问题之一。此外,在Cube的生命周期阶段,两项管理任务也需掌握,即部署和处理SSAS对象。
课程1:度量组分区(partitions)和聚合(Aggregations)的定义
1 分区
SSAS存储度量组数据的物理单元称为分区(partition)。一个分区定义装载入一个度量组中事实表数据的切片。
2 创建新分区的理由
默认情况下,一个度量组,一个分区,存储源事实表中所有数据。一般,创建额外的分区有两大理由:
1)提高性能,假设数据未被缓存或以分组形式存储,如果一个度量组只有一个分区,服务器必须扫描整个(物理)分区,找出符合查询的数据。例如,假设事实表有4年销售数据,如果按年设置分区,查询第4年销售额时,服务器只需扫描第4年销售数据的(物理)分区,无需要扫描所有数据(4年)再进行计算,且分区可被并行扫描。
2)优化管理,分区可以有不同存储模式和组合方式,方便独立管理。动手试验中的练习3可以说明这一点。
3 分区的几点考虑
1)策略之一,按时间分区(按年、季度、月)。
2)一般,分区不建议少于4000行或者超出2千万行数据。
4 创建度量组分区
BIDS和SSMS都提供向导工具设置分区。
1)更改默认的分区切片
2)添加一个新的分区
3)选择分区的存储模式
5 分区的存储模式(Partition Storage Mode)
1) 一个cube的逻辑存储模式主要有2层元,数据(metadata)和数据,还可以有第3层,聚合(aggregations)。这里指的元数据,使Cube以逻辑化的实体呈现给最终用户,元数据一直存储在SSAS服务器上。但作为管理人员,可以控制cube数据的存储位置和组合。
2)存储模式
SSAS支持三类存储模式,
– MOLAP(multidimensiional OLAP),多维在线分析处理
– ROLAP(relational OLAP),关系型
– HOLAP(hybird OLAP),混合型
不同存储模式的比较
模式 | 查询时间 | 延迟 | 处理时间 | 存储大小 |
---|---|---|---|---|
MOLAP | 快 | 高 | 快 | 中等 |
ROLAP | 慢 | 低 | 慢 | 大 |
HOLAP | 中等 | 中等 | 快 | 小 |
3) MOLAP
MOLAP是默认的存储方式,数据和组合都是存储在以文件为基础的多维结构中,由SSAS服务器创建和管理,查询和处理性能比较好。在MOLAP模式下,数据是重复的,既存在数据源中,也存在Cube中,当cube处理时,数据由服务器从数据源进入Cube中。MOLAP延迟性较高是因为只有当(物理)分区处理完后,新数据才会存在。但是,管理人员可以使用主动缓存(proactive cache)尽可能实现实时(real-time)的数据刷新。
4) ROLAP
在ROLAP模式下,cube的数据和组合仍在关系型数据库中,若有聚合,SSAS服务器必须创建额外的关系型表存储cube聚合,查询、处理性能较低,但实时性较高。
5) HOLAP
在HOLAP模式下,cube数据仍关系型存储,聚合存储在SSAS服务器上。在实际中,HOLAP只适用大型历史分区且查询不频繁。
6)存储模式的配置
6 主动缓冲(proactive caching)
1)在MOLAP和HOLAP模式下,SSAS缓冲数据(仅MOLAP)和组合(MOLAP和HOLAP)。但是,一个Cube处理完得到一个数据快照(snapshot),这个数据可能是过时的除非再次处理这个Cube。多数OLAP数据延迟的可接受程度取决于业务需求,可能要求最新甚至实时,主动缓冲就是用来解决这个问题。
2)主动缓冲的工作原理:启动主动缓冲后,服务器可以监听到数据变更的通知,并动态更新维度或度量。
3)主动缓冲有三个监听数据变更通知事件的类型(假设是MOLAP模式的Cube)
– SQL Server
– 客户端发起
– Scheduled Polling
4)优化主动缓冲
– silence interval
– latency
5)启动主动缓冲
SSAS预定义了几种分区存储配置(含主动缓冲的配置)
– real-time ROLAP/HOLAP
– low/medium-latency MOLAP
– automatic/scheduled MOLAP
– MOLAP
7 聚合
1)一个聚合往往包含一个度量组中所有按各种属性组合的汇总度量值,预先定义计算。设计、构建有用的聚合可以提高查询响应速度。
2)但是,过多的聚合会占用大量的存储空间,并且当Cube处理时聚合才会被创建,从而增加Cube的处理时间。
3)BIDS和SSMS均提供“聚合设计向导”工具设计合理的聚合。
8 动手试验:定义度量组的分区和存储
练习1:创建度量组分区
AdventureWorksDW2008R2样本数据库存储了4年数据,按年(物理)分区Internet Sales度量组。
1)双击之前创建好的Adventure Works cube,进入分区(partitions)页面。
2)展开“Internet Sales”度量组,默认情况下,只有一个分区,绑定整个FactInternetSales事实表,表绑定(Table Binding)类型。
3)将默认分区重命名为“Internet Sales 2005”,绑定类型更改为“Query Binding”,查询语句:
SELECT *
FROM [dbo].[FactInternetSales]
WHERE OrderDateKey <= 20051231
4)点击“new partition”,同理,添加新分区“Internet Sales 2006”,Query Binding,查询语句:
SELECT *
FROM [dbo].[FactInternetSales]
WHERE OrderDateKey >= 20060101 and OrderDateKey <= 20061231
5)同理,添加新分区“Internet Sales 2007”和“Internet Sales 2008”。
6)部署,数据并没有分区而发生变化,只是物理存储结构变了。
练习2:选择分区存储模式
使用“SQL Server Profiler”分析器工具,理解不同存储模式对查询的影响。
1)打开“SQL Server Profiler”分析器工具,新建一个跟踪,选择数据库引擎,连接本地数据库,点击运行按钮开始监测关系型数据库的各项活动。
2)在BIDS中,打开Adventure Works Cube,进入“浏览”页面,拖拽几个维度或度量创建一个Pivot报表。在Profiler分析器中,没有显示select语句发送到AdventureWorksDW2008R2数据库,因为MOLAP模式是多维结构服务器存储。
3)假设将2005年作为历史数据,在BIDS中,将“Internet Sales 2005”分区更改为HOLAP模式。部署。
4)在“浏览”页面,将“Date.Calendar”层次结构拖拽至Pivot的列部分,“Internet Sales Amount”度量托拽至Pivot的数据部分。在Profiler分析器中,服务器发送并返回报表组合结果(2005年的销售统计)的Select语句被监测、显示了。从中可以发现未设聚合的HOLAP存储模式,指向一个HOLAP分区的所有查询将被发送至关系型数据库。
5)将“Internet Sales 2005”分区重新更改为MOLAP模式。部署。
练习3:配置主动缓存
使用SSAS主动缓存的特性实现一个低延迟的分区,假设Adventure Works cube同步底层数据源中2008年销售数据的变化。
1)选中之前创建好的“Internet Sales 2008”分区,点击“Storage Settings”,选择“Automatic MOLAP”模式。
2)点击“选项”,启动主动缓冲,“通知”页面,选择“SQL Server”,点选“Specify tracking tables”,选择“dbo.FactInternetSales”。部署。
3)在“浏览”页面,设计按年统计销售额的报表。
4)在SSMS中,手动更新“dbo.FactInternetSales”表中2008年最后一条记录的销售额 1000,返回Cube 3),会发现2008年的销售额发生变化,增加了1000。
练习4:根据向导设计聚合(略)
课程2:部署SSAS对象
动手试验:
练习1:使用向导部署(主要步骤)
1)在BIDS中,编译“TK 70-448 SSAS Project”项目,编译好的文件存储在(TK 70-448 SSAS Project1bin)目录下。
2)开始菜单,选择SQL2k8 Anaysis Services中的“Deployment Wizard”,根据向导,一步一步完成部署过程。
课程3:处理(Processing)SSAS对象
在课程1中,对采用MOLAP存储模式的cube而言,如果不启用配置主动缓冲(proctive caching)特性,必须处理(Process)SSAS对象使数据最新。当一个对象处理时,SSAS服务器向数据源发送“select”语句,并将结果装载至这个对象中。
练习1:增量处理Dimensions维度。
1)在SSMS中,打开AdventureWorksDW2008R2数据库中的DimSalesTerritory表,更改“SalesTerritoryGroup”列,将France更改为“Pacific”。
2)在SSMS中,右击“Adventure Works cube”,单击“浏览”,创建一个按“SalesTerriotryGroup”汇总的销售表,发现该维度成员仍旧是France,未被更新。
3)右击“Sales Territory”维度,单击“处理/Process”(Pocess Update默认配置)。
4)返回2),重新连接,“France”成员被更新为“Pacific”成员。
练习2:使用SQL Server Agent计划处理一个SSAS对象。
1)在SSMS中,连接到本地SSAS上,右击“TK 70-448 SSAS Project”数据库,单击“处理”。在弹出的对话框中,展开脚本/Script下拉框,选择“script action to clipboard”,目的是生成处理该对象的脚本。
2)连接到本地SQL Server数据库引擎,展开“SQL Server Agent”目录,新建一个名为“Process Database”的Job,添加一个名为“Process database”的步骤。选择“SQL Server Analysis Services Command”类型,粘贴1)生成的脚本,确定。
3)启动该Job,测试通过后,可配置该Job的自动执行计划。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/223038.html原文链接:https://javaforall.cn