达梦数据库的XML功能展望

日期: 2008-06-11 来源:TechTarget中国

  随着互连网的迅速发展,WEB页面正在以惊人的速度增长。作为WEB的基础语言,HTML取得了很大成功。但HTML固定标签集的缺点在于缺乏扩展性,无法支持各种领域种类繁多的数据。为此W3C开始制订XML标准,目标是具有扩展性、结构性和有效性的标记语言。


  目前,XML已经在许多领域得到了广泛应用,如模式设计、内容管理、数据集成等等。作为定义、存储和交换数据的有效工具,XML技术与数据库技术也正在相互融合,在IDC最近发布的一份报告中,500家受访企业的IT部门中有29%称,正在大量使用XML存储库和数据库;约有同样比例的受访者称,正在探索这方面的使用前景。


  与传统数据库相比XML数据库具有以下特点:


  (1)XML数据库能够对半结构化数据进行有效的存取和管理。如网页内容就是一种半结构化数据,而传统的关系数据库对于类似网页内容这类半结构化数据无法进行有效的管理。


  (2)提供对标签和路径的操作。传统数据库语言允许对数据元素的值进行操作,不能对元素名称操作,半结构化数据库提供了对标签名称的操作,还包括了对路径的操作。


  (3)当数据本身具有层次特征时,由于XML数据格式能够清晰表达数据的层次特征,因此XML数据库便于对层次化的数据进行操作。


  (4)顺序性(sequence):以文档为中心XML的文档与传统的数据表不同,其内容是有顺序的,顺序性使得查询、特别是连接和修改更加复杂。而在传统的数据表中,表项(field)之间的顺序是可以互换的。


  基于上述特征,XML数据库适合管理复杂数据结构的数据集,如果已经以XML 格式存储信息,则XML数据库利于文档存储和检索 ;可以用方便实用的方式检索文档,并能够提供高质量的全文搜索引擎。特别适合对半结构化数据的管理。另外XML数据库能够存储和查询异种的文档结构,提供对异种信息存取的支持。


  为了支持XML数据库,存在两种方法:


  其一,建立纯XML数据库(Native XML Database),从数据模型,数据存储,数据检索等方面,在低层直接支持XML。如Tamino、Ipedo等。


  其二,支持XML的数据库(XML-enable Database),主要是扩展关系型DBMS以支持XML存储和检索。如Oracle 9i/10g,SQL Server 2005都提供了XML的支持。


  目前,XML技术与数据库技术的融合仍处在孕育发展阶段,新的标准和产品不断涌现。


  为了跟踪先进技术,满足客户在复杂结构数据管理上的需求,达梦数据库正在开发对于XML功能的支持,根据对于国际标准和国外主流数据库的分析,支持XML的达梦数据库核心在于满足XML的:


  数据类型:支持创建包含XML数据类型字段的表。


  查询:查询XML内部的符合条件的子节点的细节数据,查询语法符合XPath 2.0和XQuery 1.0标准。


  索引:为了有效XML查询而创建特殊的索引


  更新:更新XML内部的符合条件的子节点的细节数据


  以下简要介绍达梦数据库的XML基本功能。


  1 DM XML数据类型。


  早期的XML数据库技术或者将XML解析成数据表的字段,或者直接以CLOB/TEXT文本类型存储,无法验证数据的正确性,创建有效索引,支持Xpath/XQuery等标准接口,这些功能必须由应用程序自己解决。


  为了更好的支持XML数据,应该提供原生的XML数据类型,适合存放下面的数据: 需要跨平台交换的XML数据, 自身结构较为复杂,特别是树状层次结构,甚至于内部有递归结构的数据。


  采用XML数据类型存放XML的好处在于与常规数据统一管理,共用数据库的备份/还原、安全管理等功能。创建适合于XML层次结构的索引,支持XPath/XQuery,支持XSchama进行正确性检查等等。XML数据类型可以用于基表的字段、存储过程变量和参数,可以存储XML文档树,也可以存储一个XML片断的树或者森林。


  对于XML的正确性验证,如果没有提供XML Schema,则要求是良构的(即符合XML语法),如果要使用XML Schema,则必须先注册Schema,定义XML数据应该遵循的规则:文档中允许的元素(标签)、各个元素(标签)之间的关系、可以分配给每个元素的属性、每个标签允许的数据类型等等。模式定义登记在模式表中。


  2 XML查询。


  达梦数据库的XML查询语法符合XPath 2.0和XQuery 1.0标准。


  XPath 1.0是一种轻量级的XML查询语言,它使用路径表达式,用于在XML文档中定位文本数据、元素、属性以及其他信息。


  目前对于XPath的实现存在多种方案:基于网络层次模型的原生XML数据库,对关系数据库的扩展实现方案,数据库中间件等等。其中,对于关系数据库的扩展实现方案较好的结合了关系模型和半结构化层次模型的优点,但诸如SQL Server等流行的关系型数据库的XPath实现上依赖于字符串的匹配和like运算,因为计算机在字符串运算上的效率相对于整数运算较低,所以尚存在一些性能问题,达梦数据库以整数的范围运算为基础构建XPath查询,充分利用CPU整数运算性能强的特点。


  该实现方案的先进性在于:利用整数的范围查询实现XML的XPath查询,因为关系引擎以B树索引为基础,采用对于主键的比较查询搜索数据,而计算机中整数的比较运算是最快的,这样的实现避免了字符串匹配运算的开销,效率很高。


  XQuery 2.0在Xpath 1.0的基础上增加了循环、排序、组合结果的能力,是专门查询XML数据的查询语言,Xquery与XML的关系类似于SQL与数据库表的关系。在数据库服务器内部支持XQuery,有以下的优越性:减少网络传输(整个XML数据)。安全性好,提高性能,可维护性好。相对于SQL Server,达梦数据库支持更完全的XQuery语法,如LET语句等。


  3 XML数据索引。


  在稍早的关系数据库的支持中,根据XML模式建立若干基表,并将同一XML数据的不同部分存储在这些基表中,利用关系数据库的B树索引进行管理。但是因为XML具有树状层次性的特征,同一层次内的节点在查询结果中要具有一定的顺序,在大多数情况下,并不适宜直接转换为关系表。而且用多张关系表存储,查询需要用连接运算来重新构造完整的XML数据,效率不高。


  因此,达梦数据库的XML支持采用了原生的(Native)XML支持,将XML作为一种数据类型存储在基表的一个字段内,并支持XML模式校验。但是,当基表的记录过多的时候,每一条记录内都存储了XML的一个实例,这时进行XQuery查询,速度很慢。为此,我们需要为XML数据建立适当的索引。


  B树索引是关系数据库中广泛使用的索引,如果能利用它有效存储和索引XML,将会降低XML数据库支持开发的难度。需要关注的问题包括:如何从B树重组XML文档,并保证结构及有序性。比如,XPath中的子孙轴//,需要递归遍历XML节点树,这要求B树索引也需要递归检索。


  达梦数据库将XML的信息集(Infoset)信息保存在BLOB中,忽略空白,注释等信息,形成了XML信息集表和祖先-子孙关系表,连同模式表,它们记录了XML文档的层次结构和有序结构,如兄弟、先后、父-子、祖先-子孙等关系。特别是对于祖先-子孙的确定,减少了文档树的递归检索。


  为了进一步提高检索效率,还可以进一步在XML信息集表的基础上建立XML索引,以适应不同种类的XQuery检索。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐