mondrian源码分析与说明

上传人:夏** 文档编号:507649840 上传时间:2023-12-23 格式:DOC 页数:25 大小:374.50KB
返回 下载 相关 举报
mondrian源码分析与说明_第1页
第1页 / 共25页
mondrian源码分析与说明_第2页
第2页 / 共25页
mondrian源码分析与说明_第3页
第3页 / 共25页
mondrian源码分析与说明_第4页
第4页 / 共25页
mondrian源码分析与说明_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《mondrian源码分析与说明》由会员分享,可在线阅读,更多相关《mondrian源码分析与说明(25页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! mondrian源码分析1.概述11.1.若干概念11.2.架构22.静态类包分析32.1.包解释32.2.Schema manger部分42.3.包mondrian.calc42.4.包mondrian.olap接口52.4.1.mdx函数包52.4.2.funCall52.4.3.Query类62.5.包mondrian.rolap计算层62.5.1.成员读取包MemberReader62.5.2.单元格读取CellReader82.5.3.RolapResult类112.5.4.RolapEvaluator类122.5.5.关于排序122.

2、6.聚集层Star layer132.6.1.概述132.6.2.聚合装载过程132.6.3.segment详解142.6.4.缓存失效控制173.交互管理层183.1.初始化MondrianModel183.2.获取结果集194.修改点224.1.mondrian角色参数化224.2.缓存失效控制224.3.connection创建参数优化234.4.维度成员排序234.5.对mondrian bug的修正244.6.to-do List241. 概述1.1. 若干概念成员(member):成员是代表维度中一次或多次数据出现的项。度量值也可以算作一个维度,因此一个具体度量值项也可以作为一个成

3、员。元组(tuple):是向量,用于定义来自多维数据集的数据切片;它由来自一个或多个维度的单个成员的有序集合组成。元组用于标识来自多维数据集的特定多维数据块;由来自多维数据集中各个维度的一个成员组成的元组完全描述单元值。换言之,元组是一种成员向量。例如:(时间.下半年, 路线.非陆地.航空),由单个成员组成的元组也可括在圆括号内,但这不是必需的。单元(cell):多维成员的交集创建单元,可以是单个单元或单元块。元组唯一标识多维数据集中的一部分;它不必指某个特定单元,也不必包括多维数据集中的所有维度。集合(set):集合是零个、一个或多个元组的有序集合。集合最常用于在 MDX 查询中定义轴维度和

4、切片器维度,并且同样可能只具有单个元组或可能在某些情况下为空。下面的示例显示具有两个元组的集合: (时间.上半年, 路线.非陆地.航空), (时间.下半年, 路线.非陆地.海路) 1.2. 架构mondrian总共包含四个层次:表示层,计算层,聚集层,存储层.。表示层(presentation layer):指最终呈现在用户显示器上的,以及与用户之间的交互,有许多方法来展现多维数据,包括数据透视表,饼,柱,线状图. 计算层(dimensional layer):分析,验证,执行MDX查询. 一个mdx查询语句会有多个处理阶段。先是计算轴,然后是轴上的单元值。为效率起见,计算层批量将单元请求发送

5、到聚集层。请求转换器允许程序操作存在的请求,而不是为每个请求从头构造mdx请求。元数据描述了计算模型和它怎么匹配到关系模型。聚集层(star layer):一个聚集指内存中一组计算值(cell),这些值通过维列来限制.计算层发送单元请求,如果请求不在缓存中,或者不能通过旋转聚集导出的话,聚集层向存储层发送请求. 聚集层是一个数据缓冲层(cache),从数据库来的单元数据,聚合后提供给计算层。聚集层的主要作用是提高系统的性能。 存储层:提供聚集单元数据(cell)和维表的成员(member),这些层可以不在同一机子上,但是计算和聚集层必须在同一台机子上。有三种需要存储的数据:事实数据(事实表)、

6、维度表和聚集数据(即聚合表)架构图如下:2. 静态类包分析2.1. 包解释mondrian.calc 提供编译好的表达式。mondrian.gui 设计Mondrian schema的图形接口mondrian.i18n 国际化和本地化工具mondrian.mdx 为mdx表达式定义解析树mondrian.olap 核心包,定义了连接和schema的元模型,用来执行查询mondrian.olap4j 中间层,olap服务器的驱动,用来代替jolap的mondrian.recorder 任务处理记录接口mondrian.rolap olap包的数据访问层的实现mondrian.spi 用户自定义扩

7、展的服务端支持接口mondrian.tui Mondrian文本用户接口mondrian.udf 用户定义方法mondrian.util Mondrian工具包mondrian.web Mondrian的servlet和tag库mondrian.xmla xml for analysis API的实现2.2. Schema manger部分Mondrian.rolap.RolapSchema类是mondrian schema的核心类,该类在在建立RolapConnection时被建立,但是有个schema Pool维护着schema的缓存,参见RolapSchema.Pool内部类。在Rola

8、pSchema对象生成之前,首先有个原始的MondrianDef$Schema对象,该对象相当于mondrian schema xml文件的简单对应,由xml解析器直接生成。具体来说首先由xml文件解析成dom对象,然后再生成更加结构化的MondrianDef$Schema,最后再load成更加高级的RolapSchema对象,具体参见RolapSchema.load(String catalogUrl,String catalogStr);以MondrianDef$Schema或RolapSchema对象为根,都还会有一系列的内部类去对应于mondrian schema下的子元素。如果一个H

9、ierarchy的hasAll为true,则会有一个all member,对应着也需要一个虚拟的all level,位于该Hierarchy的levels0位置。2.3. 包mondrian.calcCalc是所有可计算表达式的基接口。在mondrian中关于表达式有如下两个概念: n The logical language of parsed MDX fragments (Exp). n The phyiscal language of compiled expressions (Calc). 两种语言可以允许我们将逻辑语言(即mdx语言) 和物理语言(how it is to be ev

10、aluated) 分开. 物理语言对类型的要求更加严格, and certain constructs which are implicit in the logical language (such as the addition of calls to the .CurrentMember function) are made explicit in the physical language。Calc接口针对各种类型有许多子接口:其中IntegerCalc, BooleanCalc, DoubleCalc, StringCalc是数值型的,MemberCalc, LevelCalc, H

11、ierarchyCalc, DimensionCalc则用于olap模型中的元素。每一个子接口有都有一个实现的虚基类:AbstractIntegerCalc, AbstractBooleanCalc, AbstractDoubleCalc, AbstractStringCalc, AbstractMemberCalc, AbstractLevelCalc, AbstractHierarchyCalc, AbstractDimensionCalc。表达式(Expression)通常由表达式编译者(ExpCompiler)创建。对于一个给定的表达式通常有若干个evaluation策略,表达式编译者

12、在编译过程中可以给我们一个选择的机会。2.4. 包mondrian.olap接口Mondrian的核心包,定义了连接对象和完整的olap模型结构元对象,并且允许执行mdx查询语句。2.4.1. mdx函数包mondrian.olap.fun 定义了mdx内置的函数集。函数(function)的定义:参数描述例子name函数名Memberssignature函数标志.Membersdescription函数描述Returns the set of all members in a dimension.flagsEncoding of the syntactic type, return type

13、, and parameter types of this operator. The encoding is described below.pxdThe flags field is an string which encodes the syntactic type, return type, and parameter types of this operator. The first character determines the syntactic type, as described by FunUtil.decodeSyntacticType(String). The sec

14、ond character determines the return type, as described by FunUtil.decodeReturnCategory(String). The third and subsequence characters determine the types of the arguments arguments, as described by FunUtil.decodeParameterCategories(String). For example, pxd means an operator with property syntax (p)

15、which returns a set (x) and takes a dimension (d) as its argument.2.4.2. funCallA FunCall is a function applied to a list of operands. The parser creates function calls as an unresolved function call. The validator converts it to a resolved function call, which has a function definition and extra type information。参见:Mondrian.olap. ResolveFunCall UnresolveFunCall 2.4.3. Query类用于mdx 查询。2.4.3.1. 创建query创建:Connection.parseQ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号