分区的存储模式会影响分区及其父度量值组和多维数据集的查询和处理性能、存储要求和存储位置。 存储模式的选择也会影响处理选择。
分区可以使用三种基本存储模式之一:
多维 OLAP (MOLAP)
关系 OLAP (ROLAP)
混合 OLAP (HOLAP)
Microsoft SQL Server Analysis Services 支持所有三种基本存储模式。 它还支持主动缓存,使你可以结合 ROLAP 和 MOLAP 存储的特征,实现数据和查询性能的即时性。 有关详细信息,请参阅主动缓存(分区)。
MOLAP
MOLAP 存储模式导致分区的聚合及其源数据的副本在处理分区时存储在 Analysis Services 的多维结构中。 此 MOLAP 结构经过高度优化,可最大程度地提高查询性能。 存储位置可以位于在其中定义分区的计算机上,也可以位于运行 Analysis Services 的另一台计算机上。 由于源数据的副本驻留在多维结构中,因此无需访问分区的源数据即可解析查询。 使用聚合可以大幅减少查询响应时间。 分区的 MOLAP 结构中的数据仅与最近对分区的处理一样最新。
当源数据发生更改时,必须定期处理 MOLAP 存储中的对象,以合并这些更改并将其提供给用户。 处理会完全或增量更新 MOLAP 结构中的数据。 一个处理和下一个处理之间的时间会创建一个延迟期,在此期间,OLAP 对象中的数据可能与源数据不匹配。 可以在 MOLAP 存储中以增量方式或完全更新对象,而无需使分区或多维数据集脱机。 但是,在某些情况下,可能需要使多维数据集脱机处理对 OLAP 对象的某些结构更改。 可以通过更新和处理暂存服务器上的多维数据集并使用数据库同步将已处理的对象复制到生产服务器来最大程度地减少更新 MOLAP 存储所需的停机时间。 还可以使用主动缓存来最大程度地减少延迟和最大化可用性,同时保留 MOLAP 存储的大部分性能优势。 有关详细信息,请参阅 主动缓存(分区)、 同步 Analysis Services 数据库和 多维模型对象处理。
ROLAP
ROLAP 存储模式会导致分区的聚合存储在分区数据源中指定的关系数据库中的索引视图中。 与 MOLAP 存储模式不同,ROLAP 不会导致源数据的副本存储在 Analysis Services 数据文件夹中。 相反,当无法从查询缓存派生结果时,会访问数据源中的索引视图来应答查询。 对于 ROLAP 存储,查询响应通常比 MOLAP 或 HOLAP 存储模式慢。 ROLAP 的处理时间通常也较慢。 但是,使用 ROLAP,用户可以实时查看数据,并在处理不经常查询的大型数据集(例如纯历史数据)时节省存储空间。
注释
使用 ROLAP 时,如果联接与 GROUP BY 子句结合使用,Analysis Services 可能会返回与未知成员相关的错误信息。 Analysis Services 消除了关系完整性错误,而不是返回未知成员值。
如果分区使用 ROLAP 存储模式,并且其源数据存储在 SQL Server 数据库引擎中,Analysis Services 将尝试创建索引视图以包含分区的聚合。 如果 Analysis Services 无法创建索引视图,则不会创建聚合表。 尽管 Analysis Services 处理在 SQL Server 数据库引擎上创建索引视图的会话要求,但 ROLAP 分区及其架构中的表必须满足以下条件,以便 Analysis Services 为聚合创建索引视图:
分区不能包含使用或
Max聚合函数的Min度量值。ROLAP 分区架构中的每个表只能使用一次。 例如,架构不能包含 [dbo]。[address]AS “Customer Address” and [dbo]。[address]AS “SalesRep Address”。
每个表必须是一个表,而不是一个视图。
分区架构中的所有表名都必须使用所有者名称限定,例如 [dbo]。[customer]。
分区架构中的所有表都必须具有相同的所有者;例如,不能有引用表 [tk] 的 FROM 子句。[customer]、 [john]。[store]和 [dave]。[sales_fact_2004]。
分区度量值的源列不得为 null。
视图中使用的所有表都必须创建,并将以下选项设置为 ON:
ANSI_NULLS
引用标识符
SQL Server 数据库引擎中索引键的总大小不能超过 900 字节。 处理 CREATE INDEX 语句时,SQL Server 数据库引擎将基于固定长度键列断言此条件。 但是,如果索引键中存在可变长度列,则 SQL Server 数据库引擎还会为每个基表更新断言此条件。 由于不同的聚合具有不同的视图定义,因此使用索引视图的 ROLAP 处理可能会成功或失败,具体取决于聚合设计。
创建索引视图的会话必须具有以下选项设置为 ON:ARITHABORT、CONCAT_NULL_YEILDS_NULL、QUOTED_IDENTIFIER、ANSI_NULLS、ANSI_PADDING 和ANSI_WARNING。 可以在 SQL Server Management Studio 中设置。
创建索引视图的会话必须具有以下选项设置为 OFF:NUMERIC_ROUNDABORT。 可以在 SQL Server Management Studio 中设置。
HOLAP
HOLAP 存储模式结合了 MOLAP 和 ROLAP 的属性。 与 MOLAP 一样,HOLAP 会导致分区的聚合存储在 SQL Server Analysis Services 实例的多维结构中。 HOLAP 不会导致存储源数据的副本。 对于仅访问分区聚合中的摘要数据的查询,HOLAP 相当于 MOLAP。 例如,如果想要向下钻取到没有聚合数据的原子多维数据集单元,则访问源数据的查询必须从关系数据库检索数据,并且如果源数据存储在 MOLAP 结构中,查询的速度不会那么快。 使用 HOLAP 存储模式时,用户通常会在查询时间上遇到很大的差异,具体取决于是否可以从缓存或聚合解析查询,还是从源数据本身解析查询。
存储为 HOLAP 的分区小于等效的 MOLAP 分区,因为它们不包含源数据,并且响应速度比 ROLAP 分区更快地响应涉及摘要数据的查询。 HOLAP 存储模式通常适用于多维数据集中的分区,这些分区需要基于大量源数据快速查询响应摘要。 但是,如果用户生成必须接触叶级数据的查询,例如用于计算中值,MOLAP 通常是更好的选择。
另请参阅
              主动缓存 (分区)
              同步 Analysis Services 数据库
              分区(Analysis Services - 多维数据)