1. 概述
1.1. Mondrian简介
Mondrian 是一个用 Java 写成的 OLAP 引擎,是开源项目 Pentaho 的一部分。它实现了 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语言,所以它能运行在不同的平台之上。
相关文档:
- xxx文档的链接
1.2. Mondrian架构
Mondrian从架构上可以分为四个层次:表现层、计算层、聚合层、存储层。
- 计算层:分析、验证、执行 MDX语句,先计算坐标轴,然后再计算每个单元格的值,从效率上的考虑,计算层批量从聚合层获取单元格数据集合。
- 聚合层:聚合层中缓存了多维查询结果,即单元格的数据集合,如果计算层所需要的数据不在缓存中,从存储层中进行查询获取数据并缓存。
- 存储层:采用关系数据库实现,一般采用星型模型构建,提供维表、事实表和聚合表。
系统部署结构上,可以分三层结构分开部署,将表现层部署在一台机器上,计算层和聚合层部署在第二台,存储层部署在第三台。
1.3. Mondrian特性
Mondrian用一个 XML文件来存储 Cube元数据信息,描述 Cube的逻辑视图。有以下特性:
- 支持共享维度。
- 支持虚拟 Cube
- 支持一个维度有多个 Hierarchy
- 支持标准维、雪化维和父子维
- 支持自定义成员/命名集