深入讲解达梦数据库的XQuery查询优化

XML(eXtensible Markup Language可扩展标记语言)数据的自我描述性使其具有高度的结构化,良好的存储格式等特点,而且XML文档和HTML一样便于网络传输。因此,XML被广泛应用而成为数据定义,数据交换和数据共享的主要标准。

目前XML 数据库主要研究的方向分为两大块,一是Native XML数据库系统,也称原生或纯XML数据库,如Tamino、Ipedo等;二是XML-enabled 数据库系统,即在已有的关系数据库系统或面向对象数据库系统的基础上扩充对XML的支持,这种数据库的优点在于可以充分利用已有的非常成熟的关系数据库技术。在关系数据库系统上扩展对XML支持的一个重要部分就是实现XQuery查询。

达梦关公司的DM XML支持项目是以达梦关系数据库为平台,扩展了对XML的支持,研究和实现基于关系数据库XQuery查询优化技术,实现了高效的XQuery查询。

XQuery相关概念

XQuery是XML的查询语言,XQuery与XML文档的关系相当与SQL与关系数据的关系。与XQuery紧密相关的一个概念是XPath,他们都是W3C的推荐规范。XPath是XML文档的路径语言,用来在XML文档中对文档数据进行寻址。XQuery是XPath的扩展。目前这两个规范的最新版本是XPath 2.0和XQuery 1.0,前者是后者的严格句法子集,并已成为推荐标准。

XPath表达式通过若干“路径步”在XML文档中进行定位(navigate)。对于每一步(step),一个“轴”(axes)用来描述本步中的中间结果森林所包含文档节点(以及这些节点的子树),XPath表达式中包含13种轴,其中通常使用的children和descendant-or-self轴缩写为 / 和 // 。

FLWOR表达式是XQuery对XPath的重要扩展之一,即for,let,where,order,return表达式的组合。for,let表达式以不同的方式将一个序列绑定到一个变量,这个序列可以是XPath路径表达式返回的节点序列,where,order表达式对这些序列的输出进行过滤和排序,return表达式输出结果序列,这个序列可以是带有绑定变量的路径表达式,而且return表达式支持XML片断的构造。

XML查询优化的概况

传统的数据优化已有成熟的理论和方法:其中普遍采用的是基于代价的优化。如果把这种思想应用到XML的XQuery查询优化,我们就可以看到一些问题。

(1)没有完善的查询代数标准;反观关系数据库的优化理论,正是因为有非常成熟的关系代数语言,能很好的支持查询语义和查询优化,所以关系数据库能成为主流的数据管理方式。

(2)没有精确的代价估计;由于XML数据和关系数据的本身结构和分布特点上的差别决定了探索适合于XML查询代价估计模型的必要性。

(3)没有足够的统计信息;足够精确的统计信息是保证查询优化有效性的基础;缺乏足够的统计信息,是造成估计与实际情况产生误差的重要因素。

目前的XML查询优化主要有下面一些技术:

然后编写关于这2个大字段的Java对象文件TestLob.java,分别定义类型为CLOB和BLOB属性字段为String和byte[]类型,其中由于CLOB是处理大文本类型所以它对应了Java中的String类型,BLOB是处理一些以二进制流形势存储的没有严格定义的大文件所以让它使用byte[]类型,然后分别定义这2个属性的Getter和Setter方法,相关代码如下:

1.表达式重写

通常XML查询用树的形式表达,也称为树模式查询(Pattern Tree Query PTQ)。查询的最小化就是对查询树化简的过程。孟小峰等中提出XQuery的PTQ优化分为两个步骤:首先是不依据任何外部信息的语法优化,然后是根据XML文档的外部信息,如DTD,schema等,进行的语义优化。基于这种处理步骤,优化技术可以分为基于DTD的或独立于DTD的。重写表达式的基本思想是在等价的前提下,按照一定的规则转换XQuery表达式,得到效率更高的表达式,实际上就是对查询模式树的化简。研究认为独立于DTD的优化能力很有限,引入DTD能有更大的优化空间,但目前的算法在优化的彻底性和效率上还有改进的余地。

2.构造查询代数

目前国内外学者已经提出了很多种XML查询代数。这些查询代数或多或少借鉴了关系代数里的一些思想。如Timber的TAX,国内的OrientXA,还有XAL,XOM,OPAL,SAL等。目前的XML代数的着重点还在于查询语义的表达上,没有或很少考虑基于代数之上的查询优化,而且没有统一的标准,各种代数之间少有通用性。

时间: 2024-10-24 08:55:49

深入讲解达梦数据库的XQuery查询优化的相关文章

基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作

由于一个客户朋友的需求,需要我的Winform开发框架支持国产达梦数据库的操作,这个数据库很早就听过,但是真正一般项目用的很少,一般在一些特殊的项目可能需要用到.由于我的Winform开发框架,是基于Enterprise Library的数据访问层的实现,因此增加一个数据库的支持很容易,本文介绍如何在框架层面上支持这种神秘的国产数据库-达梦数据库. 1.达梦数据库的简单介绍 达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM.达梦数据库管理系统的最新版本是7.

达梦数据库的连接配置

数据库访问是数据库应用系统中非常重要的组成部分.达梦数据库作为一个通用数据库管理系统,提供了多种数据库访问接口,包括ODBC.JDBC.API.OLEDB以及嵌入方式等.本文主要列出了在Java中常见的连接达梦数据库的方法-- 1.建立基本的JDBC连接 JDBC(Java Database Connectivity)是Java应用程序与数据库的接口规范,旨在让各数据库开发商为Java程序员提供标准的数据库应用程序编程接口(API).JDBC定义了一个跨数据库.跨平台的通用SQL数据库API.D

达梦数据库周淳:达梦产品比ORALCE更具优势

 近年来信息技术高速发展,人们一边享受着信息的高效便捷,一边为信息安全隐患忧心忡忡.今年全国两会上,信息安全也成了人们关注的一大"热词",有人大代表提出我国要把信息安全牢牢掌握在自己手里,应加快基础软硬件的国产化替代进程. 达梦数据库某些产品性能优于ORALCE 据了解国内在基础软件领域的研究已经取得相当进展,国内最好的数据库厂家达梦数据库目前已经开始渗透数据库核心应用领域.在国家电网调度系统招标中,达梦击败国际数据库巨头甲骨文,在全国应用;在航空领域,达梦与中国航信共同签署的&quo

达梦数据库的性能优化 应对数据膨胀

文章讲的是达梦数据库的性能优化 应对数据膨胀,"棱镜门"."微软XP系统停摆"的接踵而至给我国信息安全敲响了警钟,也加速了国内 "去IOE"运动的进程.达梦数据库作为连续5年国产数据库市场占有率第一的高性能.高可靠性.高安全性.高兼容性大型关系型数据库管理系统,已成功替代了Oracle,在电力.金融.电子政务.教育等行业领域得到了广泛的应用,逐渐成为国家信息化建设的重要基础平台.为了更好地支撑业务应用,有效管理和利用信息时代不断产生并急剧膨胀的数

达梦数据库签约泰国教育部 奠定行业领先地位

    近日,国内知名数据库厂商达梦宣布与泰国教育部达成深度合作协议,共同搭建泰国教育部云平台"智慧泰国"项目,达梦数据库将为泰国教育信息化的升级改造提供有力的技术支撑.本项目的成功签署标志着达梦数据库已被市场高度认可,跻身国际一流软件行业的同时,成为国内数据库行业的绝对领先者. 泰国教育云平台项目是建设"智慧泰国"的内容之一,主要是对教育信息化进行升级改造,以便更好地服务于泰国广大的中小学生以及老师,全面提升中小学教育的信息共享质量以及教育趣味性.在泰国教育云平台

达梦数据库签约中铁建 构建首个财务共享平台

 做为国内唯一家拥护有自主知识产权的数据库厂商,达梦的数据库产品认可度开始被更多国际巨头所青睐.近日,达梦公司宣布与世界500强企业的中国铁建股份有限公司达成合作,旗下的数据库管理系统DM7为中铁建搭了国内首个财务大共享平台,成功解决了中铁建之前对于财务难以实现统一管理.财务数据难以统一等诸多问题.而凭借完全自主研发并获得国家安全4级的安全资质,达梦数据库的产品安全性也同样得到了中铁建方面的全面认可. 中国铁建是中国乃至全球最具实力.最具规模的特大型综合建设集团之一,下属有20多个工程局,每个工

国产数据库之达梦数据库 - DM7 MPP集群安装配置

武汉达梦数据库作为国产数据库较有代表性的企业,在数据库研发方面投入了大量的精力,其自主研发的达梦数据库DM7,除了具有单机版可与Oracle相媲美的能力外,同时也研发了一款无共享MPP架构的数据库软件,主要面向在线分析(OLAP)领域. 下面的分享主要参考和使用达梦公司官网提供的下载包及安装文档,感兴趣的同学请自行下载.下载链接:http://www.dameng.com/service/download.shtml 1.MPP集群规划 本集群打算使用2台服务器,每台服务器规划3个数据库实例,总

达梦7-spring+mybatis+达梦数据库7部署到tongweb5上?

问题描述 spring+mybatis+达梦数据库7部署到tongweb5上? spring+mybatis+达梦数据库7部署到tongweb5上,请问有人知道jdbc怎么搞吗?配置文件怎么搞?第一次接触,没有头绪额~ 解决方案 达梦数据库?没听说过还有这个数据库

达梦数据库 DBLINK问题

问题描述 达梦数据库 DBLINK问题 小弟使用DBLINK做俩达梦数据库间的同步,使用JOB调用存储过程,能够将数据同步插入.但是运行一段时间后,数据库服务会死掉,求教!!!!看网上说oracle的link 一般都需要用完之后关闭link,请问达梦的这个是怎么写的? 解决方案 要不要试试ETL工具,用时间戳同步更新,哥们你是做公安行业的吗?之前用etl做的oralce的数据同步.不知道支不支持达梦. 解决方案二: 要不要试试ETL工具,用时间戳同步更新,哥们你是做公安行业的吗?之前用etl做的