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::=
   


       
   
       
           
       
           
               
   
        relation
           

aggElement定义为

aggElement::=
   
   
   
   
   
   

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值