logo 慧都大数据(二) 我也要发布文档

大数据环境下的多维分析技术——动态立方体的性能调优(四)


通过前期的文章,我们知道,通过IBM Cognos的Dynamic Cubes(动态立方体,下同)技术可以实现TB级的多维分析。为了提升查询性能,动态立方体可以利用聚合感知能力,实现对聚合数据集的自动路由,从而实现对于复杂多维分析应用的性能提升。在Dynamic Cubes里,聚合数据集包括内存内部聚合与数据库内部聚合两种。本期文章我们来看看动态立方体如何使用数据库内部聚合来进行性能调优。

大数据分析

数据库内部聚合(Database aggregates)

对于关系数据库里的那些超大规模的多维数据集(由事实表与维表构成),为了提高特定的多维分析的查询性能,可以创建一些聚合表来存储高层汇总数据。在设计Dynamic Cube模型时,将数据库内部聚合指定到对应的聚合表,即可保证在查询这些维度和指标时,优先使用聚合表的数据,而不是直接到最细粒度的维表与事实表里去查询。这类聚合表,我们称之为数据库内部聚合。

要想使用数据库内部聚合。首先,由DBA或者数据库设计人员创建若干张聚合表。例如对于多维模型gosldw_sales(test),我们创建了一张聚合表AGGR_TIME_PROD_OM_FACT。如下图所示。

大数据多维分析

这张表里面包括了多维模型使用时可能经常用到的部分维度与度量,它并不是最细粒度的数据集。示例中,时间维度只到了季度层次,产品维度只到了产品类型层次。然后可以通过ETL方法,定期将底层多维模型数据集的数据汇总后插入到该聚合表中。以下SQL语句示例供参考(只表现数据处理逻辑,物理性能参数应由DBA负责确定):

大数据多维分析
大数据多维分析

然后,在Cube designer里将此聚合表放到动态立方体的模型设计当中,如下图所示。

大数据多维分析

最后,在发布此Dynamic Cube后,就可以使用到该数据库内部聚合来加速多维分析性能了。

数据库内部聚合建议

也许您现在会提出一个问题,既然数据库内部聚合能够提高多维分析查询性能,那我如何确定聚合表应该选择哪些维度、哪些指标来创建呢?这个问题Cognos已经帮您考虑到了。在我们前期的文章《大数据环境下的多维分析技术-动态立方体(Dynamic Cubes)的性能调优(二)》中提到,通过Dynamic Query Analyzer(简称DQA,下同)工具可以对动态立方体的查询性能进行评估并得到优化建议。这些优化建议里就包括对数据库内部聚合的优化建议。

在启动对应的动态立方体的工作负载记录后,运行DQA工具,可以分析出用户对于该动态立方体的查询偏好,从而得到数据库内部聚合的设计思路。如下图所示。DQA得出的建议有25条,每条建议都有说明从哪些维度查询哪些指标,以及占用的数据空间大小。

大数据多维分析

通过下图中的详细查询甚至可以得到对应聚合表的数据来源和建表脚本。

大数据多维分析

数据库内部聚合的性能监控

Cognos服务器还提供了对数据库内部聚合的监控功能。它通过一些特定的分析指标来持续分析动态立方体里数据库内部聚合的性能情况,来提示系统管理员如何持续优化数据库内部聚合的设计。通过Cognos administration界面可以查看到数据库内部聚合的性能情况,如下图所示。

大数据多维分析

由上图可以看出,我们的数据库内部聚合命中率为0,说明设计不合理。对于数据库内部聚合的设计,我们有以下最佳实践建议:

  • 使用DQA来获得聚合表的设计建议;
  • 对于聚合表的设计,尽量将所有指标都涵盖到;
  • 对于指标的聚合规则,尽可能使用SUM和COUNT,而避免使用AVERAGE方法;
  • 使用非规范化的聚合表,不要使用表关联。

慧都控件网年终促销第一波已开启,全场6折起,豪礼抢不停>>>

截止时间:2016年10月30日

更多大数据与分析相关行业资讯、解决方案、案例、教程等请点击查看>>>

详情请咨询在线客服

客服热线:023-66090381