之前我们有一篇文章《 一文读懂多维分析技术(OLAP)的进化过程 》为大家介绍了多维分析技术(即联机分析处理(On-Line Analytical Processing),简称OLAP)的前世今生及发展方向。正是由于多维分析技术在业务分析系统的核心功能中的不可替代性,随着商业智能系统的深入应用,分析系统的数据量呈指数级增长,原有依赖硬盘IO处理性能(包括传统数据库、多维立方体文件)的多维分析技术遭遇到性能瓶颈。与此同时,随着服务器内存价格的下降,一种新的基于内存的OLAP技术架构出现了。这种新架构既能够保证类似于MOLAP方式的高性能,也能基于更大的数据量进行分析,还不用定期将数据库里的数据刷新到OLAP服务器来防止数据过期。这种新的体系架构当之无愧地成为大数据环境下搭建多维分析功能的流行选择,而 IBM Cognos 的Dynamic Cubes就是它的代表作。
动态立方体(Dynamic Cubes)作为一种新的技术架构最先应用在 Cognos 的10.2.0版本。下面我们以 Cognos 的11.0版本来看看怎样对动态立方体进行性能调优。
影响因素
动态立方体是以原有ROLAP技术为基础,使用服务器内存作缓存的一种新型技术架构。它的响应性能的影响因素包括。
数据仓库(数据集市):由于DynamicCubes的事实表数据都存储在数据仓库中,因此,有时数据仓库的性能好坏会影响前端多维分析查询的响应速度。在数据仓库的多维数据模型中,需要注意:
维表中的连接事实表的代理键的数据类型应该采用integer类型
维表中的各个层级的层级键的数据类型应该采用integer类型
2.数据库:提高数据库的查询性能,有助于提高最终多维分析展现的响应速度。
有时候多维分析的性能严重依赖于数据库运行大数据量多任务查询任务的性能
数据库基于的硬件资源(内存、CPU及IO)应该考虑到大数据量并行查询的性能,因此基于物理机的数据库性能当然比基于虚拟机的更优
尽量少用或者不用视图,因为视图的数据不是物理存在的
最好采用分析型的MPP数据库,因为多维分析都是针对大数据量的汇总查询
采用列存储技术的数据库对于大量并发并联查询性能更优
要确保查询性能最优化,可以通过数据库的性能分析监控、执行计划分析等工具
索引的设计,对于非MPP数据库,索引的设计对于查询性能影响很大
动态立方体性能调优
1.由于动态立方体使用机器内存和CPU进行性能增强,所以在对应用服务器的硬件进行评估时应该为将来的性能扩展留一定的预留空间。硬件评估可以通过Cognos提供的建模工具Cube Designer里的“评估硬件需求”功能初步估算。如下图所示。
2.在多维立方体模型设计时,使用模型验证功能,可以知道影响性能的问题所在。可能的问题有:连接字段类型、星形模型与雪花模型、过滤器的使用、视图的使用等等。如下图所示。
3.评估模型的复杂度。如果多维模型的维度和度量很多,数据量也很大,可以通过设计聚合表或者聚合内存来提升查询性能。动态立方体会通过聚合感知技术找到最合适的聚合数据集进行查询以提高查询性能。如下图所示。
4.JVM设置。动态立方体使用Java虚拟机作为内存管理的容器载体,所以Cognos也提供了一些JVM堆设置来优化数据查询性能。你可以在Cognos Administration界面上找到Query Service服务进行参数调整。如下图所示。
5.您还可以通过 Cognos 的Dynamic Query Analyzer (DQA)工具来对动态立方体的查询性能进行评估并得到优化建议。在进行评估之前,记得将Dynamic Cubes的工作日志打开,如下图所示。