四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho
从技术角度来说 BI 包含了 ETL、DW、OLAP、DM等多环节。简单的说就是把交易系统已经发生过的数据,通过ETL工具抽取到主题明确的数据仓库中,OLAP后生成Cube或报表,透过Portal展现给用户,用户 利用这些经过分类、聚集、描述和可视化的数据,支持业务决策。
这些众多的BI项目从规模和对BI系统支撑的完善程度上来说,大体可以分为Framework、Stand-alone Tools和BI Suit三种类型。
- Framework
开源框架,这是在商业BI系统中所没有的。我们可以使用它们来构建自己的BI工具,或者增强和扩展我们的BI解决方案。
- Stand-alone Tools
独立的BI工具,这是开源项目中数量最多的一类。很多工具只侧重BI系统中的某个环节和方面,如ETL、Report、OLAP和Database等等。
- BI Suit
在统一的架构下提供了多种BI系统的特性的工具集合。就目前的情况看,不管是商业软件还是开源软件,还没有任何一个套件提供了完整的端到端的BI解决方案。这些开源的BI Suit是通过连接多个其他的组件和工具的方式形成套件的,由于BI系统涉及到的工具是非常多的,所以整合一套完整的BI解决方案是很困难的。
2 BI解决方案中的工具
一个完整的BI解决方案中有多种工具来完成BI系统中各个阶段的工作。
2.1 ETL工具
数据抽取、转换和加载工具。优秀的ETL工具应该具有以下特性:
- Workflow Management, Job Execution and Scheduling Manager。能方便地定义流程并自动化执行ETL任务;
- Centralized Metadata Repository and Management。集中存储和管理符合业界标准的元数据;
- Data Profile and Validation。可以检验数据的质量;
- High Performance。在大负荷的任务执行中仍然有良好的性能;
- Scalable, Platform Independent。具有良好的弹性,支持多种操作系统和数据库系统,能操作多种异构的数据源;
- Open Architecture and API。具有开放的架构和易于使用的二次开发接口。
目前较为知名的开源ETL工具有:
- KETL,由具有IBM和KPMG背景的Kinetic Networks公司开发,现在已经有三年多的产品应用历史,成功应用于一些产品中,在点击流(ClickStream)分析应用中表现出色。KETL采用Plug-in的架构,使用Java开发;
- KETTLE,为一个元数据驱动的ETL工具。已经加入Pentaho;
- Clover ETL,为一个基于Java的ETL Framework,可以用来开发自己的ETL应用;
- Enhydra Octopus,为一个基于Java的ETL工具,使用JDBC来连接各种数据源,易于使用和部署。曾有人应用于电信网络资源分析系统中。
2.2 报表工具
优秀的报表工具通常具有以下特性:
- 支持多种数据源;
- 直观的可视化设计器,简单易用的报表定制功能;
- 方便的数据访问和格式化,丰富的数据呈现方式;
- 符合数据呈现的通用标准,能和应用程序很好地进行结合;
- 易于扩展和部署;
目前较为知名的开源报表工具有:
- JasperReports,一个优秀的Java报表工具,始于2001,现在JasperSoft公司持续开发和支持该工具。该工具类似于商业软件Crystal Report,支持PDF、HTML、XLS、CSV和XML文件输出格式,现在是Java开发者最常用的报表工具;
- OpenReports,提供基于web的灵活报表解决方案,通过浏览器自动生成动态PDF,XLS,HTMLCSV 和Chart报表,它是用Java开发的,使用JasperReports 作为报表引擎,利用到的开源技术有Hibernate,Veloctiy,Webwork;
- JFreeReport,现在是Pentaho的一部分,它是一个优秀的用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印 功能并支持输出到打印机和PDF, Excel, HTML和XHTML, PlainText, XML和CSV文件中;
- Eclipse BIRT,是Eclipse下面的一个企业智能和报表 工具,能为J2EE的WEB应用程序创建漂亮醒目的PDF或者HTML格式的报表,它提供了核心的报表功能。
2.3 OLAP工具
联机分析处理工具。目前开源的OLAP工具也分为MOLAP(多维型)、ROLAP(关系型)和HOLAP(混合型),优秀的OLAP工具通常有以下特性:
- 良好的执行性能,能快速地进行分析处理工作;
- 良好的适用性和可伸缩性;
- 开放式接口和丰富的API;
目前较为知名的开源OLAP工具有:
- Mondrian,是Pentaho的一部分,为一个用Java开发的OLAP服务器,实现了MDX语言、XML解析和JOLAP规范,可以不写SQL就能分析存储于SQL 数据库的庞大数据集,可以封装JDBC数据源并把数据以多维的方式展现出来;
- JPivot,是一个JSP 自定制的标签库,可以绘制一个OLAP表格和图表。用户可以执行 典型的OLAP导航,如下钻,切片和方块。它使用Mondrian 作为其OLAP服务器。它使用WCF (Web Component Framework) ,基于XML/XSLT来渲染Web UI组件。JPivot在元数据缓存方面的过于简化的整体性初始化装载的做法将限制它只能处理很小的立方体(Cube)。
2.4 数据库
开源的数据库也有很多,大多数为关系型数据库,少数为应用于数据仓库环境做了专门的优化工作。Bizgres以PostgreSQL为基础进行了数据仓库环境下的优化,提高了分析查询性能。
3 开源BI套件
下面列出相对成熟和完整,并且有借鉴意义的开源BI套件。
openI
Openi是一个Java开发的Web应用,能对OLAP服务器、关系数据库和数据挖掘服务器进行分析和报表展示,非常易于使用和部署,界面美观友好,后续还将支持数据挖掘和ETL等。Openi主要包括:
- OLAP展示:JPivot
- 报表工具:JFreeChart
- 分析数据源连接器
Openi架构:
RDL是Report Define Language
openI具有一个BI应有的大部分特性了,
report : jasperreport ,JFreeChart
olap : mondrian + JPivot
data mining: weka
它的各层衔接的非常的紧,好像用了eigenbase做数据管理,不是很清楚这部分,openI在做数据挖掘的时候它没有调度器,它的Portlet Interface 主要是指在用JPivot的时候JPivot可以到处使用openI没有自己的开发专属工具,入门门槛也相对较低。
JasperSoft
Jaspersoft商务智能套件是建立在模块的基础上的,因此很容易建立,以此证明其递增价值。Jaspersoft主要包括:
- JasperServer:为商业用户的互动,特定和预设查询与报告服务器
- JasperAnalysis:为商业用户的互动提供OLAP数据分析
- JasperETL:开发人员和数据库管理员的高性能的图形数据整合
- JasperReports:开发人员所用的Java报表函数库
JasperSoft最重要的就是它的报表,但是它支持输出的格式很多,管理的方式也很多,也用了eigenbase做数据管理。
有比较完善的权限控制,用的acegi,支持多种数据源,只要有JDBC驱动。它的产品已经形成了一个产品线,最著名当然还是它的JasperReport。
你可以看到它为了更好的管理各种报表和数据,有自己专属的展现平台JasperServer,这个平台是 06/26/2006才创建的,完全是JasperSoft为了实现BI而迈出的重要一步。jasper没有数据挖掘。
有任务调度器,用了quartz;
有自己专属的ETL: JasperETL;
它有自己的OLAP SERVER : jasperAnalysis;
展示层用到了AJAX和applet, 也有DashBoard;
查询语句支持SQL, Hibernate (HQL), XPath (XML), EJBQL, MDX(多维查询语言,OLAP专用,SQLSERVER用的是XMLA)。
SpagoBI
SpagoBI 集成了Mondrain和JProvit,能够通过OpenLaszlo产生实时报表。SpagoBI使用java开发,不依赖于具体的操作系统,有很强的扩展能力。它主要包括:
- 报表工具:JasperReports /Eclipse BIRT/ iReport
- OLAP Server:Mondrian
- OLAP展示:JPivot
- 数据挖掘组件:Weka
- Map引擎:Geo
- ETL:BIE
- 搜索引擎:Lucene
- Dashboard:OpenLaszlo
- Portal Server:JBoss/ Tomcat/ JOnAS
根据其Roadmap可以看出,SpagoBI将融入更多的BI功能,甚至BI之外的功能。
SpagoBI架构:
spagoBI平台功能很强大,也很复杂。
它的各个组件之间模块化很好,Plugin加载,来看一下它的各个组件:
report : BirtReportDriver , BirtReportEngine , JasperReportDriver ,JasperReportEngine;
GEO : GeoDriver , GeoEngine(用地图显示数据和查询的);
OLAP : JPivotDriver , JPivotEngine;
QBE : QbeDriver, QbeEngine ;
Data Mining : WekaDriver , WekaEngine;
Security : ExoPortalSecurityProvider;
Booklet (小册子) : BookletsComponent : it is a component for booklets generation.主要包括文件上传,工作流,OpenOffice支持;
它还有文档管理,用的是apache的JackRabbit,有搜索功能,用的lucene。是做cms,portlet,workflow出身的,技术很强。
spagoBI的使用的工具也比较多:
Report : Bird , JasperReport;
ETL : Octupus 和 talend;
OLAP : Mondrian 和 JPivot;
Data Mining : Weka;
Portal : eXoPortal;
它的展现层也使用了AJAX特性,另外它在DashBoard也使用了openlaszlo,(一个用Java code 生成Flash的框架,主页是http://www.openlaszlo.org/。新版的4.0好像也要支持生成DHTML) 所以spagoBI的DashBoard界面很友好。
spagoBI的ETL是非常之牛的。你可以看到它下面的数据处理层是单独分出来的。
Pentaho
Pentaho是一个以工作流为核心的、强调面向解决方案而非工具组件的BI套件,整合了多个开源项目,目标是和商业BI相抗衡。它包括:
- 工作流引擎:Shark and JaWE
- 数据库:Firebird RDBMS
- 集成管理和开发环境:Eclipse
- 报表工具:Eclipse BIRT
- ETL工具:Enhydra/Kettle
- OLAP Server:Mondrian
- OLAP展示:JPivot
- 数据挖掘组件:Weka
- 应用服务器和Portal服务器:JBoss
- 单点登陆服务及LDap认证:JOSSO
- 自定义脚本支持:Mozilla Rhino Javascript脚本处理器
由上可见Pentaho是一个很完善的BI解决方案。Pentaho偏向于与业务流程相结合的BI解决方案,侧重于大中型企业应用。
Pentaho架构:
pentaho的体系结构跟spagoBI非常相像,不过pentaho喜欢把自己的东西称作solution,以下引用自pentaho的whitepaper:
pentaho BI 平台不同于传统的BI产品。它是一个以流程为中心的,面向解决方案的(Solution)的框架,具有商业智能(BI)组件,使得公司可以开发商业智能问题的完整解决方案pentaho一样把数据处理层看的很重要,多种数据显示方式,甚至有RSS输出。
pentaho是有各种开源组件组成的。
ETL : Kettle (界面上显示的是pentaho Data Integration ,previously Kettle)
Report : Pentaho Report (它也支持Birt 和 JasperReport 的集成 ,还有专门的文档)
OLAP : Mondrian 和 JPivot (Mondrian已经加入了pentaho)
Platform : Pentaho Planform
Data Mining: Weka (Weka也加入了pentaho)
官方站点
- openI http://openi.sourceforge.net
- jaspersoft http://www.jaspersoft.com/
- spagoBI http://spago.eng.it
- pentaho http://www.pentaho.com/