关于Pentaho开源BI框架的研究报告

1.1     背景

在开始的技术预研过程中,为了能够实现立项要求的分析、统计以及仪表盘等功能,需要预研在商业智能方面的技术框架,了解相关的实现方式和展现形式,其中Pentaho就是在BI领域用户群较大的开源产品。

注:由于其产品成熟度不够,展现度不强等原因在需求评审后确定暂时放弃Pentaho框架。

1.2     概述

Pentaho BI 平台是一个以过程为核心,面向解决方案的,可扩展的商务智能平台。其目的在于将一系列企业级BI产品、开源软件、API等等组件集成起来,方便商务智能应用的开发。它的出现,使得一系列的面向商务智能的独立产品如Jfree、Quartz等等,能够集成在一起,构成一项项复杂的、完整的商务智能解决方案。目前Pentaho框架包括了Eclipse BIRT,JasperReports,Mondrian,JPivot,调度(scheduling),web服务,Kettle(数据集成工具),商业规则等多个组成部分

Pentaho的主要组成元素包括报表生成、分析、数据挖掘和工作流管理等等。这些组件通过J2EE、WebService、SOAP、HTTP、Java、JavaScript、Portals等技术集成到Pentaho平台中来。Pentaho的发行,主要以Pentaho SDK的形式进行。

Pentaho的设计思想主要体现在三个方面,一是“集成化”,二是“面向解决方案”,三是“以流程为中心”。

所谓集成化,是指将众多不同的BI产品集成到一个统一的框架中来,使之可以相互协作。一个完整的BI应用往往需要这些BI产品能够相互协作。Pentaho通过引入“Action”的概念,提供了一个让多种BI产品协作的机制。“Action”是Pentaho平台提供的最基本的操作单元,它类似于一种编程语言的基本语句。所有完成具体功能的BI产品作为“插件”集成到Pentaho平台中,每种插件为Pentaho平台提供一种或几种“Action”,每个Action有自己的输入和输出,多个Action连接起来就构成了Action序列,完成一个较复杂的功能。Pentaho平台负责在各个Action之间传递参数,这样多种不同的BI产品便能够协同工作了。

所谓解决方案(Solution),是基于Pentaho平台的一个具体的BI应用。Solution与Pentaho平台的关系和Web应用与应用服务器之间的关系十分类似。Pentaho平台本身作为一个Web应用部署在应用服务器上,而Solution又作为一个“Pentaho应用”,部属在Pentaho平台上。Solution本身实质上是一系列Action序列的集合,这些序列在网页上如何显示,如何被调用,功能如何实现完全由Pentaho平台来管理,这使得Solution的开发者,也就是Pentaho的使用者,可以将开发工作集中于具体的BI业务逻辑的开发上,而不用去关心网页的设计、服务器的部署等等细节。

流程即Action序列,是Solution的基本组成单位,它由多个以某种顺序执行的Action组成。Action是Pentaho平台所提供的最基本的BI操作,大到生成一个报表,小到打印一行字,都可以是一个Action。Action之间可以顺序执行,也可以有分支或循环。Pentaho平台的“以流程为中心”是指整个平台的工作核心就是如何解释执行一个个Action序列的描述文件。用户在做具体的BI应用开发时,也应当把精力集中在描述Action序列上。

1.3     技术方案预研

1.3.1     ROLAP预研

描述:

为了能够实现对高基涉及的数据范围内的基础数据进行分析操作,着手预研ROLAP方面的相关内容。

术语:

ROLAP:把基于关系型数据库的OLAP称为Relational OLAP,简称ROLAP。

Mondrian:Rolap引擎,将关系数据模型模拟成多维模型,并对其做OLAP分析。

Cube:立方体,多维分析的数据载体。

Schema:在该区域中指的是Mondrian的数据配置文件,将关系数据库映射为cube的形式,供分析使用。

方案描述

Pentaho提供了分析插件:Mondrian,以及为Mondrian做展现服务Jpovit插件。利用这两部分内容完成高基查询系统中,面向高基所涉及的基础数据进行维度转换、上卷、下钻,维度组合,度量值组合等操作,实现ROLAP功能。

利用Pentaho进行ROLAP解决方案如下

1.首先定制schema文件(xml文件),主要定义数据源,分析维度,维度的层次和度量值等,Schema有专门的详细帮助文件。

2.写一个jsp文件,该文件主要做一个绑定,将schema文件和mondrian引擎挂钩,作为分析的前提,该jsp文件很简单,只需要制定一下schema文件的位置,其他都可以默认,不需要改动。

3.通过引擎访问该分析主题,页面利用jpivot展现

4.Jpivot展现层和数据层是分开的,展现层的css各个应用都有独立的配置,背景图片等可以更换,页面的应用模块(维度管理,数据表,图表,图表配置,管理标签)都可以通过定制展现用的tag自由组合。

数据分析是基于MDX来操作,通过WCF将页面操作捕捉,并通过内部的处理逻辑转换成MDX语言,交给Mondrian引擎处理,处理返回的数据集再交给jpivot做展现。

风险分析

整个过程思路比较清晰,但是存在以下问题:

大数据量时,Mondrian效率有问题,经常在处理过程中导致引擎内部出错,分析过程需要重新开始。

对中文的支持不够好,在读schema以及jpovit展现时会出现乱码,网络上已有针对中文问题发布的补丁,还没有仔细验证。

Mondrian官方声明能够支持JDK1.4以上版本,但是在实际部署过程中,发现只能在JDK1.5下正常运行,其源码在java项目中部署后也有断言等java关键字在JDK1.4下编译失败,该问题没有解决。

mondrian缓存问题,由于缓存导致schema文件经常需要重启服务才能够重新加载。

bug,schema MDX中定义不同模式下表名称时,由于mondrian将MDX转换成SQL时默认增加一个表别名(与表名相同),当表名为"usr_gy.abcd"时,生成的SQL语句是不合法的,形如:select * from usr_gy.abcd usr_gy.abcd。

MDX不支持Like关系符。

页面展现比较死板,比较丑,需要通过样式来进行重新设定。

结论

目前Mondrian以及Jpovit在国内的用户使用较多,上述问题在很多使用者当中都有用到,认为其不太适合大型项目使用,或说如果使用需要大量的修改和完善工作,近期公司项目不宜使用,但是需要关注其发展。

需求评审结束后,决定在高基查询系统中不涉及基础数据分析或ROLAP的功能,因此本预研仅作为以后的技术参考。

1.3.2     数据层架构预研

描述:

在假设使用Mondrian作为分析引擎来进行基础数据ROLAP的前提下,需要探讨数据统计、报表展现、数据分析三个层面共用同一套中间数据的可行性,经过初步分析,从Mondrian的结构入手预研该方案的可行性

术语:

Mondrian:Rolap引擎,将关系数据模型模拟成多维模型,并对其做OLAP分析。

MDX:面向立方体的查询语言。

方案描述

1、Mondrian根据Schema所描述的cube进行数据分析,计算统计值,在计算完成后会生成一个中间结果。中间结果存储的是各个统计项的值,该中间结果可以通过mondrian提供的getQueryResult获取,供展现使用。

2、根据高基相关的数据项和维度建立Schema对外统一提供数据接口。

3、Mondrian的QueryResult可以根据Schema所涉及的维度(类似于关系数据库中的条件)获取到相应的统计结果。

4、统计模块,可以根据高基的统计项,从mondrian的QueryResult中获取统计值,展现到统计表格。

5、为高基报表建立自定义数据集,通过统一的class,从mondrian的QueryResult中获取统计值,展现最终报表统计数据

6、QueryResult中能够根据统计值,调用其detialInfo,获取到统计值所对应的基础数据项,该功能可以为基础数据查询提供帮助。

风险分析

大数据量时,Mondrian效率有问题,中间数据的产生需要大量的时间和内存消耗。

该方案不具备通用性,与语义层所起到的作用不在同一个档次,顶多作为该项目的一个中间过渡方案,迟早要被淘汰。

对于中间层数据的包装还有很大的开发工作量。

对Mondrian的代码修改目前认为还是不可控,与上个预研项存在同样的风险:Mondrian官方声明能够支持JDK1.4以上版本,但是在实际部署过程中,发现只能在JDK1.5下正常运行,其源码在java项目中部署后也有断言等java关键字在JDK1.4下编译失败,该问题没有解决。

结论

需求评审结束后,不会在产品设计过程采用Mondrian,即便采用该方案也仅仅只能作为一个过渡方案而已。

仪表盘展现预研

描述:

预研利用Pentaho中仪表盘插件来实现高基查询系统中仪表盘功能的可行性。

术语:

仪表盘:仪表盘是用来形象的展现当前用户所关注的关键指标数据的健康情况。

方案描述

Pentaho仪表盘仪表盘的展现目前只提供png格式的图片展现方式,生成的仪表盘图片是由两部分合成的:

仪表刻度线和指针;

背景Gif图片,也就是绿红相间刻度线外围的单色圆形;

这个gif图片是固定的,如果想要动态的扩展dashboard的大小,背景的gif需要自己实现

2、Pentaho提供的仪表盘展现有三种样式,预研过程中只实现了上述一种例子;和其他商业的仪表盘相比的话,这个仪表盘相对比较简单,但是能够满足仪表盘展现的基本需求。

如果要在高基报表中使用pentaho的dashboard,需要参考pentaho的实现自己编写读取配置的代码。如果需要其他样式的dashboard的话,则需要自己编写具体的实现类。

风险分析

 用pentaho仪表盘插件来实现仪表盘在技术是完全可行的,只是展现上美观程度不够,图表过于简陋。

结论

由于Pentaho仪表盘展现过于简陋,只有当没有更好的可用的仪表盘展现方案的前提下才会使用,否则将不采用该方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值