Cognos Dynamic Cube的一个关键特性,是它既可以使用数据库内预计算聚合,也可以使用内存内预计算聚合。这些预计算聚合,可以把查询性能提升一个数量级,满足交互式报表和分析的性能要求。
如果在数据仓库中已经包含聚合表,我们可以在使用Cognos Cube Designer建模时,将其建模为汇总cube。当cube发布并启动后,在需要时,会自动将SQL查询路由到聚合表上。对于有一些度量,他们的聚合规则是SUM,COUNT,MAX或者MIN,聚合cube使用聚合表可以在更高的层级上计算汇总值。
在项目实践中,我们会遇到一个难题,就是决定哪些值在哪些层级上需要预汇总。特别是在使用人数众多的大型系统上,成百上千个报表和分析需要处理,这个问题就更复杂了。Cognos Dynamic Query Analyzer中的Cognos Dynamic Cube Aggregate Advisor可以很好地处理这个任务。
Aggregate Advisor会对如何在数据库中建立聚合表,在dynamic cube中建立聚合cube给出建议。Aggregate Advisor利用cube模型,收集并分析发送到数据仓库的查询,决定建议如何建立聚合表或聚合cube。同时,它还可以利用报表和分析生成的负载日志文件,更精确的分析如何优化系统负载性能。
下图展示了负载信息的Aggregate Advisor选项:
DQM Server生成的负载日志,包含详细信息,可以用来分辨不同负载子集,以实现有针对的优化。此外,负载日志中的信息,让Aggregate Advisor能够决定哪一个值需要预汇总。
数据库内汇总建议包含了每一个建议的详细描述,如数据列的说明,建表SQL语句。这些内容可以让DBA用来建立必要的聚合表,以及相对应的ETL脚本。
内存内聚合建议会发送到CM中。当cube重启后,一些列SQL语句会被执行,用来从数据仓库中检索汇总信息,然后储存在聚合缓存中。
因为虚拟cube不直接访问数据库,所以它没有聚合缓存。