论文部分内容阅读
随着Internet的迅速发展,XML得到了广泛的应用,并逐渐成为Internet上数据表现和交换的标准.为了有效支持信息的交换和共享,必须对XML提供强大的存储支持以及在此基础上的高效查询.关系数据库能提供严格结构化的存储并且能提供良好的并发、事务控制以及查询优化等功能,特别是随着电子商务的兴起,很多商业数据都存储在关系数据库中,为了把这些数据和XML进行良好的整合和集成,人们逐渐研究利用关系数据库来存储XML.该论文的工作重点是在CoXML系统中实现XML的关系存储和查询.CoXML是北京大学数据库实验室"基于XML的数据集成、共享与交换"(编号2002AA4Z3440)的863数据库重大专项课题,主要研究基于XML的异构信息集成与共享和XML数据与国产关系数据库数据的模式转换等.该论文的工作将在CoXML系统中实现XML到关系数据库的模式转换和存储,并实现XML查询语言到关系数据库查询语言的转换.首先,XML关系存储引入并实现了inline算法,把逻辑上属于一个整体的节点存储到一张关系表中,避免生成了琐碎的小表,提高了查询速度.但是inline算法并没有体现XML的节点间位置关系如父子、祖孙、前序、后序关系等,该论文在此基础上引入了Pre-Post并改进为扩展Pre-Post编码方式,解决了此问题.算法分三个步骤:首先为DTD生成一个简化的DTD图,其次根据DTD图生成关系表,最后把XML数据存储到关系表中.其次,在XML关系查询中实现了从XPath到SQL的转换,并在DTD的支持下对出现频繁的步骤(step)中Axis为"∥"和node-test为"*"的情况做了优化.算法也分三个步骤:首先实现XPath到SQL语言的转换,其次从关系表中提取数据,最后把数据整合还原为原来的XML文档.试验数据表明,XML关系存储能比较完整存储XML数据,较好的保持XML节点间位置关系信息;XML关系查询能有效的处理XPath查询语言,准确的查询并还原XML数据,并具有较好的查询效率.