论文部分内容阅读
XML已经成为互联网上数据发布和数据交换的事实标准。然而由于其强大的数据表达能力,XML完全可以在互联网和数据库之间扮演更加重要的角色。XML是典型的半结构化数据,关系数据库管理系统由于关系模型本身的缺陷,并不适合管理XML数据。现在互联网上已经存在大量以文件形式存放的XML数据,这些数据包含了丰富的信息,因此一个可以从文档中抽取信息的XML文档查询工具是很必要的。 近年来,随着XML相关技术的深入研究,XML查询已经具备了坚实的技术基础。传统数据库的大部分成熟技术可以比较方便地移植到XML查询上来。半结构化数据查询技术方面的研究成果也可以直接应用于XML查询。更为重要的是,W3C已经为XML定义了模式、查询语言和查询形式语义等数据库才具备的特征,这使得采用类似用SQL查询关系数据库的方式进行XML查询成为可能。 虽然XML查询已经有了很好的技术基础,但由于XML数据自身的特点,以及和传统数据模型的差别,XML查询在理论上和实现上都还存在很多难点。本文结合我们实现的XML文档查询系统XDQuery探讨了XML查询的各种实现技术。由于W3C提出的XQuery已得到广泛的支持,很有可能成为正式的标准,因此XDQuery采用它作为查询语言。XQuery包括的内容非常丰富,通过分析它的使用案例,并考虑到实现的难度,我们着重于实现一个核心的功能子集,同时针对需要扩充了更新的能力。根据XQuery的形式语义,并参照Lore系统,我们定义了XQuery的逻辑操作和物理操作。与关系模型不同,XML数据是树状结构,路径表达式在查询中非常关键,而单纯的值索引远不够用。我们借鉴Lore系统的DataGuide实现一个更适合XML数据的路径索引。此外,我们还考虑了索引的存储问题,将索引存成XML文档,使其具有和源文档同样的可移植性。XDQuery采用基于代价的查询优化策略,同时也利用启发式规则做一定的逻辑优化。和传统数据库系统不同,XDQuery是内存查询处理系统,不存在内外存的传输瓶颈,于是我们采用的是基于基准操作次数的代价模型。最后,我们通过实验数据分析和验证了XDQuery采用各项技术,包括索引及其存储技术、文档规模和查询优化本身的代价等对查询性能的影响。