posts - 40,  comments - 187,  trackbacks - 0
·概述

    由于项目需要,今天开始接触OLAP(Online Analytics Process, 联机分析处理)。说到OLAP,不能不用穷人通用的Mondrian。Mondrian官方网站(http://mondrian.pentaho.org/)给出的定义是 Mondrian is an OLAP server written in Java. It enables you to interactively analyze very large datasets stored in SQL databases without writing SQL.
     说白了,Mondrian是一个OpenSource的基于关系数据库的分析服务器,遵循MDX、XML/A和JOLAP标准。

·架构

  
  Mondrian从架构上可以分为四个层次:表现层、计算层、聚合层、存储层。
  计算层:分析、验证、执行MDX语句, 先计算坐标轴,然后再计算每个单元格的值,从效率上的考虑,计算层批量从聚合层获取单元格数据集合。
  聚合层:聚合层中缓存了多维查询结果,即单元格的数据集合,如果计算层所需要的数据不在缓存中,从存储层中进行查询获取数据并缓存。
  存储层:采用关系数据库实现,一般采用星型模型构建,提供维表、事实表和聚合表。
  系统部署结构上,可以分三层结构分开部署,将表现层部署在一台机器上,计算层和聚合层部署在第二台,存储层部署在第三台。

·存储和聚合

  根据OLAP服务器数据存储技术,可以分为ROLAP和MOLAP,Mondrian采用ROLAP技术。
  在ROLAP的多维模型组织和存储数据中,比较常用的方式是星型模式,由一个事实表和一组维度表组成。维度必须预先确定,可以是一般的星型架构,也可以是比较特殊的父子架构、雪花架构等。在ORACLE数据库中,我们能够按照维度进行预先的统计、分类、排序,创建大量的实体化视图。对于没有实体化视图类似功能的数据库,我们也可以创建大量的临时聚合表,这样当用户进行比较高级的分析的时候,不用访问数据量庞大的基础事实表,只需要在我们已经形成的实体化视图或聚合表上作进一步的聚合就可以了,这样能够大大提高查询分析的效率,并且减少占用的系统资源。
  在使用聚合表方面有一个关键的技术称之为"聚合感知"技术,只有OLAP引擎必须能够根据多维查询中的维度信息,从适当的聚合表中提取数据,否则聚合表形同虚设。另外在多维模型设计中,设计正确的聚合表也是很关键的。不恰当的设计导致将聚合表的不能满足多维查询的需求,每次从事实表取数据,开销是非常大的。
  Mondrian采用关系数据库存储事实表,其本身不具有"聚合感知"的技术,当需要从比较明细的事实表中汇总数据时,性能就比较差了。但是如果关系数据库能够支持实体化视图或其他聚合技术,那么就可以利用关系数据库的技术透明的提高系统性能。我们可以利用Oracle实体化视图来提高Mondrian的效率。 

·初次使用

   从SourceForge上下载了mondrian-2.3.2.8944版(http://sourceforge.net/project/showfiles.php?group_id=35302),解压得到了里面的demo war包,自己搭建环境使用了一下Mondrian。下面的截图是我运行得到的结果:
mondrian.bmp

    关于具体如何使用,请关注我的下一篇文章 :-)


PS:  历史上的Mondrian

    Mondrian,蒙得里安·皮特,1872-1944荷兰画家,作品以交错的三原色为基色的垂直线条和平面为特点,他的著作包括新造型主义(1920年),对抽象艺术的发展曾经产生很深影响。
  以下为这位艺术家的几幅作品:

ImageImageImageImage

posted on 2007-07-04 18:05 小立飞刀 阅读(4156) 评论(8)  编辑  收藏 所属分类: Mondrian OLAP

FeedBack:
# re: Mondrian之初体验
2007-08-07 13:36 | bym0909
很好!我想多了解写mondrian架构层次方面更多的东西!
因为我只想使用计算层、聚合层部分。
以及 和存储之间的结合。
期待作者的精彩继续。
要是 有好建议 或者 好资料,发给我哈。
sonic200015@sohu.com   回复  更多评论
  
# re: Mondrian之初体验
2007-08-08 13:37 | 小雪飞刀
@bym0909
我对Mondrian也是初涉皮毛,大家共同研究。:)
  回复  更多评论
  
# re: Mondrian之初体验
2007-12-27 16:04 | @wdmcln
初涉mondrian,配置的时候,想按照自己的的数据库,例如:oracle/sqlserver2005此类的数据库,tomcat中设置了数据源,可还是报错!
可以交流交流?  回复  更多评论
  
# re: Mondrian之初体验
2007-12-27 16:05 | @wdmcln
初涉mondrian,配置的时候,想按照自己的的数据库,例如:oracle/sqlserver2005此类的数据库,tomcat中设置了数据源,可还是报错!
可以交流交流?
wdmcln@hotmail.com
wdmcln@gmail.com  回复  更多评论
  
# re: Mondrian之初体验
2007-12-27 17:01 | 小立飞刀
@wdmcln
需要您在工程的 $\WEB-INF\mondrian.properties中配置数据库。
以Oracle DB为例:
#For Oracle DB
mondrian.test.connectOracle=Provider=mondrian; Jdbc=jdbc:oracle:thin:@%Ur_IP%:1521:%Ur_DB_Name%; JdbcUser=%User_Name%; JdbcPassword=%User_Pwd%; Catalog=file:///%Ur_Tomcat_Path%/webapps/mondrian/WEB-INF/queries/mondriantest.xml; JdbcDriver=oracle.jdbc.driver.OracleDriver  回复  更多评论
  
# re: Mondrian之初体验[未登录]
2008-06-17 15:58 | 小白
博主你好
我刚在看mondrian,编译例子时遇到这么个问题:NoClassDefFoundError: org/eigenbase/xom/XOMUtil ?
我试过许多不同版本的mondrian都有这个问题
请问那个eigenbase包是什么,能在哪里下到
直接引用进去能解决问题吗?
望能赐教,多谢了
我邮箱是hkharryking@gmail.com  回复  更多评论
  
# re: Mondrian之初体验
2008-06-17 17:05 | 小立飞刀
@小白
没遇到过您的问题,看起来应该是缺少Jar包,在www.docjar.com上找找看。  回复  更多评论
  
# re: Mondrian之初体验[未登录]
2009-04-27 15:51 | 无名
不知道这是你引用别人的,还是别人引用你的。 一个字都没有更改的。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

生存或毁灭,这是个必答之问题:是否应默默的忍受坎苛命运之无情打击,还是应与深如大海之无涯苦难奋然为敌,并将其克服。此二抉择,究竟是哪个较崇高?

常用链接

留言簿(12)

随笔分类(43)

相册

收藏夹(7)

朋友的博客

电子资料

搜索

  •  

积分与排名

  • 积分 - 301962
  • 排名 - 192

最新评论

阅读排行榜

评论排行榜