论文部分内容阅读
多维查询语言MDX(MultiDimensional eXpression)是由微软和Hyperion联合提出的针对OLAP的查询、计算及元数据定义语言,目前已得到越来越多的业界支持,成为OLAP(Online Analysis Process)分析服务事实上的查询访问标准语言。作为OLAP分析服务器与用户交互的接口,MDX编译器的设计是非常重要的一环,并将直接影响到OLAP分析服务功能的正确性和完整性。
传统的MDX编译器的设计方案是把一个MDX查询语句解析成一个或多个SQL语句,通过有底层关系数据库生成的SQL查询来完成MDX查询。但这种方法不够灵活且有些MDX语句难于用SQL语言模拟出来。文中将介绍另一种设计方案,即把MDX先生成一棵语法树,再对语法树进行遍历,从语法树上抽取出MDX的查询信息并把这些信息生成一棵查询树的形式给查询模块使用。这种方法的优点是架构灵活,可以按不同的查询算法设计相应的查询树,由于该查询树独立于SQL语言,因此对多数据库的支持也比较好,对特定的底层数据库只需提供一个对应的适配器即可。
针对OLAP分析服务器的查询、计算及元数据定义,介绍了多维查询语言MDX。基于Lex和Yacc,重点介绍了把MDX查询语句解析成查询树形式的MDX编译器设计与实现。该编译器结合元数据访问和权限管理,从词法分析、语法分析和语义处理等方面进行深入的分析,不仅完成语法和语义的检查,并且可基于角色对用户分析查询进行权限验证,实现信息的安全管理。