提要:本文主要是对一个 java 开源项目—— mondrian , OLAP 引擎——的技术使用和相关概念做了简单的介绍和描述。
关键字:mondrian OLAP MDX
一、引言
Mondrian, 蒙得里安·皮特1872-1944荷兰画家,作品以交错的三原色为基色的垂直线条和平面为特点,他的著作包括 新造型主义(1920年),对抽象艺术的发展曾经产生很深影响。——金山词霸如是说。
不过,本文所要讨论的可不是这位艺术家。那到底mondrian是什么呢?
Mondrian是一个开源项目。一个用Java写成的OLAP(在线分析性处理)引擎。它用MDX语言实现查询,从关系数据库(RDBMS)中读取数据。然后经过Java API用多维的方式对结果进行展示。
我们都知道,在线分析处理(OLAP)要实时地分析大量数据。“online”这个词的含义就是即使相关的数据量是巨大的——可能以GB为单位——系统也要足够快的响应以显示结果。
OLAP用了多维分析的技术。尽管关系型数据库所存储的所有数据都是以行和列的形式存在的,但一个多维数据集还是可以由轴(axes)和单元(cell)组成。
在上面的例子中,时间是个维度(dimension),而它下面的层次(Hierarchies)又分为半年、季度等级别(Level)。
二、感性认识——运行一个小实例
我们暂时先不讨论Mondrian所用到的一些技术。我们可以先从一个小例子开始,不必在意每个细节,只是希望大家有个感性认识先。在实施这个例子的过程中,或许读者就能见些端倪。
首先应该到http://sourceforge.net/projects/mondrian/下载mondrian的最新版本。这是一个zip包,包括我们要用到的lib和一个例子。
当然,读者完全可以运行mondrian自带的实例,不过这个例子有些纷繁复杂,除了Mondrian本身还有其它技术在里面,不大容易讲清楚,也不太适合初学者学习。所以,笔者在这里设计一个简洁干净的最小化实例。
本文所阐述的实例环境是Windows2000+Tomcat+Oracle。并且认为读者已经针对jdk和Tomcat做了正确的开发环境的设置。
2.1准备工作
在%Tomcat%/webapp/依次建立mywebapp,mywebapp/WEB-INF,mywebapp/WEB-INF/lib,把
mondrian.war/WEB-INF/lib/mondrian.jar,javacup.jar,
xalan.jar,junit.jar
等相关的jar包copy到
%TOMCAT_HOME%
/webapps/mywebapp/lib/
下。
2.2数据库结构
在这个tiny的系统中,数据库有3个表tb_employee(职员表),tb_time(时间表),tb_salary(薪酬表)。表结构如下:
drop table tb_employee;
create table tb_employee
(
employee_id number, --职员id