开源OLAP引擎-Mondrian
OLAP引擎实现了除多维数据展示外的所有数据分析功能:包括建立多维模型、解析MDX语句、返回分析结果。国外传统数据库厂商都推出了自己的OLAP分析工具,微软发行了MDX语言标准,SQL SERVER Analysis Service是其商业化OLAP引擎。
开源社区OLAP产品主要是Mondrian OLAP引擎。Mondrian是开源项目Pentaho的一部分,是一个用Java写成的OLAP引擎。它实现了MDX语言、XML解析、JOLAP规范。它从SQL和其它数据源读取数据并把数据聚集在内存缓存中,然后经过Java API用多维的方式对结果进行展示,同时可以不写SQL就能分析存储于SQL 数据库的庞大数据集,可以封装JDBC数据源并把数据以多维的方式展现出来。JPivot是Mondrian默认的表现层工具,它是一个JSP 自定制的标签库,可以绘制OLAP分析图表。用户可以执行典型的OLAP导航,如下钻、切片。JPivot使用Mondrian作为它的OLAP服务器但也支持XML/A数据源访问。它使用WCF (Web Component Framework)框架,基于XML/XSLT来渲染Web UI组件。
Mondrian支持的数据库或数据仓库主要有:LucidDb、Oracle、 Access、Mysql、Sybase、Ingres、Postgres、Hypersonic、Teredata、
Mondrian主要特点是对立方体进行了缓存,众所周知,缓存庞大的立方体对性能有很大的影响,但是Mondrian利用java语言的特点对这一点进行了很好的控制。其次由于Mondrian基于java语言,所以它能运行在不同的平台之上,这也是其流行的主要原因之一,例如花旗银行就在其数据仓库项目中用Mondrian作为它的OLAP引擎。Mondrian是开源项目,为开发人员和数据分析人员提供了深入研究OLAP技术的机会,同时这也为优化Mondrian总体性能提供了可能。
Mondrian体系结构浅析
3.1 Mondrian 总体结构
Mondrian体系结构如下图所示:

整体的架构图将Mondrian分成了四个大部分Schema manager、Session Manager、Dimension Manager、Aggregate Manager,而实际上各个部分有着更为紧密的联系。对于Dimensional Layer、Star Layer和SQL Layer的划分,更多是处于总体逻辑分层的考虑,具体在源码中,逻辑分层的概念比较模糊。