详细解读 Cognos 的动态查询模式

发展背景

我们知道,对于BI(Business Intelligence商业智能的缩写,下同)系统而言,前端访问后台系统的整体响应时间是影响业务用户实际体验的重要指标。如果响应时间太长(一般而言超过10秒),即使前端的图形界面再眩再好看,也会严重打击最终用户对BI系统的使用兴趣。因此,BI系统的客户体验差往往是我们很多分析系统项目实施失败的重要原因之一。

为了应对这一挑战,IBM Cognos BI从版本 10.1.0 中开始提供了基于Java增强查询执行模式(Dynamic Query Mode,简称DQM,也就是动态查询模式),同时仍保留对主要数据源的本地访问权限。通过改进后的查询执行,动态查询模式提供了主要的查询优化,可处理查询复杂性和数据量。它还提供了增强的查询功能(如内存缓存),该功能可在保留用户安全权限的同时针对查询计划。

IBM Cognos 动态查询模式简介

Dynamic Query Mode是IBM Cognos BI一种增强的基于Java的查询模式,提供以下主要功能:

  • 查询优化,通过改进的查询执行语言解决查询复杂性、数据量和及时性期望等相关问题。
  • 通过本地和远程处理以及更佳 MDX 生成的智能结合,极大地改进复杂的 OLAP 查询。
  • 安全感知的缓存。
  • 利用 64 位处理的新数据接口。
  • 易于维护和查询可视化。

查询优化

查询的优化通过严格查询规划规则的高级应用实现。这些规划规则纳入了下一代规划方法,该方法更精简且能够提高质量和执行查询的速度。查询规划流程本质上也经过优化,以更好地利用元数据和表达式缓存,包括提供更高应用程序吞吐量的规划缓存。

通过平衡的本地处理工具实现性能提升

Dynamic Query Mode制定智能的、基于规则和系统负载的决策,其中部分查询应当在应用程序服务器本地执行,而不是在数据库服务器中远程执行。这确保用户拥最高级的功能,不管基础数据源是否支持商务智能报表的意图。此外,Dynamic Query Mode包含一个细粒度元数据和单元数据缓存(即一个trickle fed)以及一个比以前更高的缓存命中率。另外,被发送到远程数据源的查询由执行层根据缓存内容和高级空值抑制逻辑进行进一步优化。

安全感知的缓存

当连接到安全的元数据源时,Dynamic QueryMode下提供的缓存逻辑能够在每个用户访问数据源时确定安全的元数据源。然后该信息用于优化内存使用率和内部表示该用户的数据源元数据的安全视图。也可以设置安全性,这样就可以共享整个 OLAP 维度,提供缓存重用和性能效益。

利用 64 位处理的新数据接口

Dynamic Query Mode 是一个完全支持 64 位的数据访问环境。它允许使用 64 位数据源驱动程序,且可以利用 64 位满足查询处理、元数据缓存和数据缓存的空间。

易于维护和查询可视化

Query Visualization 能够让系统管理员分析 Dynamic QueryMode生成的查询,并可视化地看到其处理方式。这些可视化包括来自查询执行的基于成本的信息。该信息允许快速识别模型和查询优化,应用该优化的目的是达到更好的性能。

技术架构解析

传统的兼容查询模式的架构图如下所示:

如上图所示,查询模式架构包括多个层。当从QueryStudio、Report Studio、AnalysisStudio、Cognos Workspace、CognosWorkspace Advanced之一、Cognos Viewer或 IBM Cognos Software Development Kit (SDK) 等客户端模块收到报表请求时,该请求首先会由 Query Planning 层处理。

Query Planning 层的上部是 Query Framework (QFW)。QFW 会检查报表请求并确定它是否包含一个或多个请求,且应当在这里处理查询。针对 SAPBW,比如 Oracle Essbase 和 IBMCubing Services 类型的数据源的 OLAP 式查询,会转到 OLAP 查询规划器。针对 IBM DB2、Oracle、Teradata 类数据源的关系型查询会转到关系型查询规划器。Dimensionally Modeled Relational (DMR) 式的查询会转到
DMR 查询规划器。

每个查询规划器会生成适当的查询语言,并将请求发送到其各自的查询执行层。对于 OLAP,查询规划器生成一个 MDX (MultidimensionalExpressions) 查询并将其发送到多维数据服务(MDDS);对于关系型查询,它生成 SQL 并将其发送到通用数据访问(UDA)模块。对于 DMR,首先处理一个多维数据集构建请求,这会创建和加载一个临时多维数据集,然后生成一个新 OLAP 式的查询,发送该查询并针对该临时多维数据集处理此查询。架构的最低层表示IBM Cognos BI 支持的单个数据源类型和数据源。通过
MDDS 或 UDA 处理的查询会被转化成一种数据源理解的查询语言惯用语,然后使用一个直接专用接口或通过 ODBC 或 XMLA 等通用接口发送到数据源。

最新的动态查询模式的架构图如下所示:

从上图看,虽然支持非常类似的请求流,动态查询模式的架构大大不同于兼容查询模式。顶部的客户端层显示一个系统管理客户端,它与查询模式交互来显示指标和统计并更改配置设置,比如运行查询日志。

规划层被整合到一个名为 TransformationLayer 的层中。转换层本身不实现任何查询规划逻辑,它仅仅提供一个用于查询转换的执行环境,这些转换存放在名为转换库的独立库中。这是为了将规划逻辑与规划层分离开来。转换库为所有受支持的 OLAP 查询提供查询规划逻辑,且在兼容查询模式下支持查询框架提供的所有功能。

在兼容查询模式下Execution Layer 提供类似的查询执行功能给 MDDS 和 UDA,但是也是整合到单一模式中。它可以独立于查询或目标数据源的类型执行任何查询请求,且能够在单一环境中执行 SQL、MDX 和 XML。这部分地通过混合结果集(HResult)格式实现,该格式允许内存中的单个查询结果同时以 OLAP 型(带有轴、维度和单元)和关系型(表格,行和列)呈现。通过 HResult,执行模式可以在单个运行树中结合 MDX 和 XML,实现更高的灵活性和查询性能。

动态查询模式支持的数据源

您可以将动态查询方式与数个 OLAP 数据源搭配使用,包括以下列表中的数据源:

  • IBM Cognos TM1
  • SAP Business InformationWarehouse (SAP BW)
  • Oracle Essbase
  • Microsoft SQL Server AnalysisServices

您也可以将动态查询方式与数个关系数据源搭配使用,包括以下列表中的数据源:

  • IBM DB2
  • IBM DB2 for z/OS
  • IBM Informix
  • IBM Netezza
  • Oracle
  • Microsoft SQL Server
  • SAP ECC
  • Siebel
  • Teradata

下面以DB2为例,我们来看看如果使用动态查询模式实现与数据源的连接。

1. 在BI服务器上需要安装 IBM DB2 客户端软件

2. 由于DQM需要通过jdbc访问数据源,因此需要将jdbc驱动程序复制到cognos的相应目录。

a) 在要用于连接的数据库的 IBM DB2 安装目录内,找到 ..\SQLIB\JAVA 目录。

b) 在该目录内,找到并复制 db2jcc4.jar 和 db2jcc_license_cu.jar 文件。

c) 在 IBM Cognos安装目录内,找到 ..\webapps\p2pd\WEB-INF\lib 目录。

d) 将 db2jcc4.jar 和 db2jcc_licencse_cu.jar 文件粘贴到该目录中。

e) 为了让 IBM Cognos接受 IBM DB2 驱动程序,需要停止和启动 IBM Cognos服务。

3. 创建数据源。

a) 使用浏览器打开Cognos主页IBM Cognos Connection。

b) 点击右上角“启动”链接,并在弹出菜单里选择IBMCognos Administration。

c) 点击“配置”标签页,选择“数据源连接”,并点击“新建数据源”的按钮。如下图所示。

d) 在输入数据源的名字后,点击“下一步”,并在类型列表里选择“IBM DB2”。注意这里一定要把 “配置JDBC连接”的复选框选中。如下图所示:

e) 点击“下一步”后,输入DB2数据库名称和登录用户名密码后,兼容查询模式测试通过。

f) 然后进入JDBC的配置界面,将相关信息输入后,动态查询模式测试通过。

这样,我们就可以使用动态查询模式来实现Cognos的报表分析与DB2数据库的连接了。

Dynamic Query Mode 特有的管理功能

随着 Dynamic Query Mode 的引入,IBM Cognos Administration 中提供新的功能来配置、调优和诊断新查询服务。以下部分将识别新 UI 元素并简要描述每个功能。

DQM参数设置

在 IBM CognosAdministration 中,可在“系统”下的“计分卡”选项卡上看到 QueryService服务,在“设置 - QueryService”窗口里可以到“高级设置”、“环境”、“日志”、“调整”设置。如下图所示:

点击右上角的“设置属性”按钮,可以进行QueryService中DQM相关参数的调整。如下图所示:

DQM使用维护

在IBM Cognos Administration中,可在“配置”下的“内容管理”菜单选项的界面内容看到“新建查询服务管理任务”的按钮。该功能中可用的任务是能够针对不同的数据源进行Dynamic Query缓存的维护。如下图所示:

例如:对于 DMR(Dimensionally Modeled Relational)数据源,可以定义的任务有清理 Dynamic Query 缓存(使用过时的数据避免)或将缓存状态写到(以便进行缓存使用分析)IBM Cognos服务器上的一个文件上。

而对于10.2.0版本之后新发布的Dynamic Cubes,则提供更多的Dynamic Query维护功能项,如下图所示:

结束语

如需了解更多关于cognos的功能特性,请点击以下链接,发现惊喜!

http://bigdata.evget.com/product/200.html

时间: 2024-10-13 08:33:58

详细解读 Cognos 的动态查询模式的相关文章

Ehcache详细解读

Ehcache详细解读 Ehcache  是现在最流行的纯Java开源缓存框架,配置简单.结构清晰.功能强大,最初知道它,是从Hibernate的缓存开始的.网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google:对于API,官网上介绍已经非常清楚,请参见官网:但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获. 一.特性一览 ,来自官网,简单翻译一下

Ehcache详细解读(转载)

Ehcache 是现在最流行的纯Java开源缓存框架,配置简单.结构清晰.功能强大,最初知道它,是从Hibernate的缓存开始的.网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google:对于API,官网上介绍已经非常清楚,请参见官网:但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获. 一.特性一览,来自官网,简单翻译一下: 1.快速轻量过去几年,诸

MemCache超详细解读

MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度.MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串.对象等)所使用的key-value存储,数据可以来自数据库调用.API调用,或者页面渲染的结果.MemCache设计理念就是小而强大,它简单的设计促进了快速部署.易于开发并解决面对大规模的数据缓存的

Android BLE蓝牙详细解读

代码地址如下:http://www.demodashi.com/demo/15062.html 随着物联网时代的到来,越来越多的智能硬件设备开始流行起来,比如智能手环.心率检测仪.以及各式各样的智能家具和玩具类产品.安卓4.3(API 18)为BLE的核心功能提供平台支持和API,App可以利用它来发现设备.查询服务和读写特性.相比传统的蓝牙,BLE更显著的特点是低功耗.本文主要讲解Android低功耗蓝牙的api使用以及蓝牙扫描.连接.发送数据.接收数据等一系列操作,并主要介绍本人封装的Ble

rpm软件包管理的详细解读

rpm包管理 CentOS系统上使用rpm命令管理程序包:安装.卸载.升级.查询.校验.数据库维护 1.基本安装 rpm -ivh PackageFile 2.rpm选项 rpm {-i|--install} [install-options] PACKAGE_FILE… -i:安装 -v: 显示过程 -vv: -h: 以#显示程序包管理执行进度 --e:卸载包 --test: 测试安装,但不真正执行安装,即dry run模式 --nodeps:忽略依赖关系 --replacepkgs | re

为你详细解读HTTP请求头的具体含意

当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看某一次HTTP请求头的具体内容: Accept-Language: zh-cn,zh;q=0.5 Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7 Accept: text/html,application/xhtml+xml,application/xml;q=

详细解读DialogFragment

详细解读DialogFragment 相信看这篇文章的人都应该知道android中的Dialog了吧,如果对于Dialog还不是很了解可以看我之前的一篇详解文章: Dialog详解:http://www.cnblogs.com/tianzhijiexian/p/3867731.html 随着Fragment这个类的引入,Google官方推荐大家使用DialogFragment来代替传统的Dialog,那么是不是说我们之前学习的Dialog知识都没有用处了呢?非也,新的fragment是来方便大家

动态代理模式

动态代理模式简介: 动态代理能够自动监听代理对象的方法,并且能够自动生成代理类的代码,这样就不需要我们自己去重写代理对象里的方法了,这样解决了代理类代码因业务庞大而庞大的问题,因为动态代理模式会在代码运行时根据代码来在内存中动态生成一个代理类自动重写代理对象[学Java,到凯哥学堂kaige123.com]的方法,然后这个动态代理类再调用处理类里的代码,处理类再调用到实际方法上去.而且我们可以选择性的监听代理对象的方法,有些不需监听的方法就可以在处理类中过滤掉.所以动态代理的优势就在于可以自动的

Mysql binlog 详细解读

Mysql的binlog主要用于逻辑同步以及二阶段提交的安全性保证,而在平时的使用中我们DBA也会从中获取一些重要的信息,比如说主从同步延迟了我们可以通过binlog查看当前事务执行的内容,比如可以利用binlog+备份的方式进行误删回滚,开源工具中也有很多利用binlog做闪回.同步数据到缓存中的方案,异地多活的高可用框架完成后有点空闲就对binlog的组成深入了解了下(基于mysql5.7版本,binlog版本v4),mysql 5.0之后binlog都采用的v4版本,结构如下分为heade