随着xml作为数据表示的重要载体变得越来越重要,特别是其在数据交换方面起着至关重要的作用,而大量xml数据的产生引起各种对xml数据存储问题的研究。基于关系数据库的成熟性,目前大多数研究都将xml文档存入关系数据库中。在众多的基于xml模式的xml文档到关系数据库的存储方法中,最为显著的方法是PSchema (Physical xml Schema)、BSchema (Basic xml Schema)以及CSchema (Complex xml Schema)。但是,这些方法仍然存在着很多的不足:PSchema对多值元素的定义非常模糊,未区分多值元素是多次出现的值还是多次出现的元素结构;BSchema则未对xml中语义进行约束,也没有保存模式信息,这种映射方式不利于xml文档的重构及还原;CSchema虽然对PSchema和BSchema进行了继承和扩展,但是,CSchema在对递归复杂元素、多命名空间信息、重复结构、面向未来可扩展元素与属性的映射方法过于复杂,而且没有考虑到xml文档中对语义约束等信息,也没考虑到新增xml文档对数据库中的数据表的影响。因此,本文对CSchema进行了改进,提出了一种CSchema++的映射方法,同时还对X-RESTORE查询中间件进行改进,提出了将XPath转换为SQL查询的算法,并通过代价估计来比较CSchema与CSchema++的效率。
论文主要从以下三个大的方面展开工作:
(1)基于CSchema重新对xml模式进行了语义分析,提出了一种改进的CSchema++。该模型将复杂xml文档中的复杂信息进行分类定义,如命名空间信息、重复结构、递归复杂元素、面向未来可扩展元素与属性,并重新归纳了这些复杂信息的提取方法和映射规则,去掉了利用层次(layer)的方法来存储递归复杂元素,将CSchema的提取映射简单化、完善化。与CSchema相比,CSchema++最大的改进在于利用改进的元素表来动态保存xml模式信息,即随着xml文档的动态增长,元素表以及xml文档对应的数据表都将会动态增长。由于元素表的操作非常频繁,CSchema++将元素表通过数组置于内存中,相比CSchema直接将元素表置于磁盘中,CSchema++大大提高了存储和查询效率。另外,本文对数据库中主键、外键、唯一性和非空等约束信息进行了分析,保存了xml的语义信息,实现了xml文档的无损映射,同时保证了映射过程的可逆性,不仅实现了xml文档到关系数据库的映射,同时实现了关系数据库到xml文档的还原。
(2)将xml文档按照CSchema++的映射规则存入关系数据库之后,需要将xml查询转换为关系查询。而xml查询是半结构化查询,关系查询是结构化查询,这就需要用到查询中间件。其中,最为著名的是X-RESTORE查询中间件。X-RESTORE所响应和执行的查询是XQuery查询,由于XQuery的基础是XPath,所以熟悉XQuery的人都会使用XPath,为了方便用户,本文对X-RESTORE查询中间件进行改进,提出了将XPath转换为SQL查询的算法。算法分为两个步骤:首先,将用户输入的XPath查询语句转换为XPathExpression图,其中,XPathExpression图的作用等同于复杂xml文档存储的中间模式CSchema++。然后,将XPathExpression图转换为SQL语句,利用图中的边来实现文档节点顺序的保存,通过将节点和边的信息转换为SQL语句中Select、from以及where子句中的内容,实现了xml用户输入XPath查询。
(3)由于,xml文档存储模式的代价主要由查询操作的代价来衡量,因此本文结合现有的代价估计方法,通过DOM树结构查找节点所需代价来估计关系查询所耗费的代价,将基于模式的复杂xml文档存储代价定义为DOM树结构查找节点所需代价,即查找节点和对节点数据筛选的代价和。为证实CSchema++的优越性,本文通过所提出的代价估计方法来比较CSchema与CSchema++的存储和查询代价,证实了CSchema++映射的存储和查询方式代价更小,存储和查询效率明显得到提高。
虽然新的数据库技术如面向对象数据库、XM L数据库等发展很快,但其技术还很不成熟,各领域的数据交换更加频繁,半结构化的数据大量产生,利用关系数据库的成熟技术对这些数据进行存储和处理显得尤其重要。本文介绍了如何实现XM L DTD到关...
详细信息
虽然新的数据库技术如面向对象数据库、XM L数据库等发展很快,但其技术还很不成熟,各领域的数据交换更加频繁,半结构化的数据大量产生,利用关系数据库的成熟技术对这些数据进行存储和处理显得尤其重要。本文介绍了如何实现XM L DTD到关系模式的转换,同时给出了从关系模式到XM L DTD的逆转换,这种转换保持了原XM L DTD的语义约束。
暂无评论