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::= aggElement定义为
注意,XML元素的顺序非常重要。例如,<userdefinedfunction>元素必须在<schema>元素内部,必须在所有的<cube>、<virtualcube>、<nameset>以及<role>元素的后面,如果你在<cube>元素前包含了用户自定义函数的元素,则Schema剩下的内容会被忽略。</cube></role></nameset></virtualcube></cube></schema></userdefinedfunction> 在后面我们会给出XML schema中的每个XML元素。 |