Mondrian系列(三)-如何设计Mondrian的Schema(1)

1.什么是mondrian的Schema?

Schema定义了多维数据库。其中包含了逻辑模型,由Cube、层次、成员组成,而且定义了逻辑模型到物理模型的映射。

逻辑模型组成了用来进行MDX查询的结构,包括cube、维度dimension、层次hierarchies、等级level以及成员member。

物理模型是逻辑模型的数据源,典型的物理模型是星型模型,通过关系数据库中的一系列表构成;后面我们会看到一些其他种类映射的例子。

2.Schema文件

Mondrian的schema是以xml文件的方式表现的。在mondrian目录下的demo/FoodMart.xml文件就是一个最好的例子,其中包括了我们所要涉及的几乎全部结构。demo/FoodMartCreateData.sql文件是测试数据集,默认使用的是mysql,如果是Oracle下面,可以通过Access的mdb数据文件做移植,或者是通过导入的mysql数据进行移植,可以使用Oracle的SQL Developer工具做这件事。

现在,创建Schema文件的方法是通过文本编辑器来编写xml文件。xml的语法不太复杂,并不像想象的那样困难。一个XML文档的实例如下:

Schema>

Cube>

Table>

AggName>

aggElements

AggPattern>

aggElements

Dimension>

Hierarchy>

relation

Closure/>

Level>

KeyExpression>

SQL/>

NameExpression>

SQL/>

CaptionExpression>

SQL/>

OrdinalExpression>

SQL/>

ParentExpression>

SQL/>

Property>

PropertyExpression>

SQL/>

DimensionUsage>

Measure>

MeasureExpression>

SQL/>

CalculatedMemberProperty/>

CalculatedMember>

Formula/>

CalculatedMemberProperty/>

NamedSet>

Formula/>

VirtualCube>

CubeUsages>

CubeUsage>

VirtualCubeDimension>

VirtualCubeMeasure>

Role>

SchemaGrant>

CubeGrant>

HierarchyGrant>

MemberGrant/>

Union>

RoleUsage/>

UserDefinedFunction/>

Parameter/>

在上面文档结构中relation定义为:

relation::=


<sql></sql><view><br><sql></sql><br><inline table><br><columndefs><br><columndef><br><rows><br><row><br><value><br><join><br> relation </join></value></row></rows></columndef></columndefs></inline></view>

aggElement定义为

aggElement::=
<aggexclude><br><aggfactcount><br><aggignorecolumn><br><aggforeignkey><br><aggmeasure><br><agglevel></agglevel></aggmeasure></aggforeignkey></aggignorecolumn></aggfactcount></aggexclude>

注意,XML元素的顺序非常重要。例如,<userdefinedfunction>元素必须在<schema>元素内部,必须在所有的<cube>、<virtualcube>、<nameset>以及<role>元素的后面,如果你在<cube>元素前包含了用户自定义函数的元素,则Schema剩下的内容会被忽略。</cube></role></nameset></virtualcube></cube></schema></userdefinedfunction>

在后面我们会给出XML schema中的每个XML元素。

你可能感兴趣的:(数据结构,oracle,sql,mysql,xml)