3

我理解 ROLAP、MOLAP、HOLAP 的区别,但这是否意味着 ROLAP 永远不需要处理,因为您总是直接从数据库中获取数据?

4

1 回答 1

0

在 MOLAP 中,您会将聚合存储在 Analysis Services 的数据目录中。使用 ROLAP,您可以将聚合存储在关系数据库的索引视图中。ROLAP 将为您提供比 MOLAP 更慢的实时方法,但对于您需要不时查看的历史资料很有用。

来自 MSDN:

如果分区使用 ROLAP 存储模式并且其源数据存储在 SQL Server 数据库引擎中,Analysis Services 会尝试创建索引视图以包含分区的聚合。如果 Analysis Services 无法创建索引视图,则不会创建聚合表。尽管 Analysis Services 处理在 SQL Server 数据库引擎上创建索引视图的会话要求,但 ROLAP 分区及其架构中的表必须满足以下条件,Analysis Services 才能为聚合创建索引视图:

  • 分区不能包含使用 Min 或 Max 聚合函数的度量。

  • ROLAP 分区模式中的每个表只能使用一次。例如,架构不能包含 [dbo].[address] AS "Customer Address" 和 [dbo].[address] AS "SalesRep Address"。

  • 每个表必须是表,而不是视图。

  • 分区架构中的所有表名都必须使用所有者名称进行限定,例如 [dbo].[customer]。

  • 分区架构中的所有表必须具有相同的所有者;例如,您不能有引用表 [tk].[customer]、[john].[store] 和 [dave].[sales_fact_2004] 的 FROM 子句。

  • 分区度量的源列不能为空。

  • 视图中使用的所有表都必须在以下选项设置为 ON 的情况下创建:

    • ANSI_NULLS
    • QUOTED_IDENTIFIER

    • -
  • 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 中进行此设置。

在这里阅读整个事情。

于 2012-12-14T09:15:02.217 回答