mondrian查询过程核心类
2021-03-25 17:08:40 0 举报
mondrian架构中各个模块核心类,核心方法
作者其他创作
大纲/内容
SegmentLoader.java
FastBatchingCellReader.java
RolapResult.java:
Schema Loader,加载schema对象
SqlTupleReader.java:
无法命中缓存
AggregationManager.java: loadAggregation()
MDX Parser
StarColumnPredicate.java
SqlQueryBuilder.java
XML文件
Dimensional Manager
loadMembers()----> evalLoad()----> executeAxis() ----> ((IterCalc) axisCalc).evaluateIterable(evaluator) 接下来就是各个MDX函数、写法的实现类,获取所有轴上维度成员值
RolapStar.java
execute()
SqlStatement.java:
RolapResult.java构造器就是最核心的方法
mondrian.spi.impl 包下都是不同方言实现类
读取切片轴上的成员值
MDX Validator
SqlMemberSource.java:
executeBody()
MondrianDef.java
查询出结果之后存入:SegmentCacheManager,并register到当前线程
Schema File
MondrianOlap4jConnection.javacatalogFinder.getRolapSchemas()
Aggregate Manager
Star Schema Model
主要是Schema中的表关系
创建olap连接
evaluateList(evaluator)
ResultSet.java
SessionManager
getMemberChildren()
Evaluator
AbstractListCalc.java :
每一个维度都有一个SmartMemberReader.java对象 ,为其成员值缓存对象 。 它的主要属性:MemberCacheHelper.java对象 SoftSmartCache.java
Member Cache
SQL Model
QuerySpec.java
executeStripe()------> revaluator.evaluateCurrent()
cellRequests
loadMembers()
查询模型进入,并将其转化成为MDX语句对象模型:ThinQuery.java、ThinQueryModel.java、SingularOlapQuery.javaMDX生成方法:1. chainRatioMdx(SingularOlapQuery singularOlapQuery) 2. query.getMdx()
查询查询轴上的维度成员值
GroupingSet.java
FastBatchingCellReader.java:
1. SaikuOlapConnection.java:connect(Properties props)
RolapSchemaLoader.java:schemaLoader.loadStage0()
缓存所在具体类:SegmentWithData.java
执行sql
生成SQL:prepareTuples()makeLevelMembersSql ( )
Connection
服务
JdbcSchema.java
执行查询轴和切片轴 :loadMembers()获取度量聚合结果方法:executeBody()
------> phase() ------>batchingReader.loadAggregations()
SchemaReader.java
SqlQuery.java
mondrian.olap下相关类
AbstractQuerySpec.java : generateSqlQuery(String desc)
Segment.java
SQL Generator
查询缓存
sql excexecution
MDX构建的结果就是各种statement,每一次查询就是一个statement
org.eigenbase.xom.Parser.java
Schema Manage
从SegmentCacheManager.java 中获取缓存
XML Parser
收藏
0 条评论
回复 删除
下一页