论文部分内容阅读
XML事实上已经成为万维网上的数据的通用格式标准,无论是消息、网页、本地文件还是数据库,都把XML作为一种数据存储和交换的格式。面对网络上大量的XML资源,如何才能有效地获取感兴趣的XML片段,以及如何把这些XML片断组织起来这些问题变得尤为重要。XQuery语言的出现解决了上述问题。XQuery是一种能够简洁和清晰地表达XML查询的函数式语言。延迟求值是函数式语言的一种重要优化手段。在数学表述方面,延迟求值对应着入演算的规范规约,有着深刻的数学背景。在程序设计方面,延迟求值语义下的程序更具有声明性。对于典型的函数式语言,一些优化方式,例如不变计算的提升和死代码的移除,不经仔细分析,在脱离延迟求值语义的情况下是无法采用的,因为这样会改变程序执行的终止性。对于XQuery语言的处理器,延迟求值是一种可用的并且是主要的优化技术。通过延迟求值,可以消除不必要的计算,可以构造和访问数据量很大的有限、无限的序列。对于XML数据流的处理,使用延迟求值方式可以显著地减小XML中间数据的存储空间开销,提高系统的执行效率。
本文介绍了XQuery语言的延迟求值器-XML Query Lazy Evaluator(XQLE)。系统采用形式简洁的函数式语言-Functional XML Query Language(FXQL)作为中间语言。在数据模型上,XQLE使用可以容纳闭包和XML结点的广义表,支持广义表结点的延迟计算。对于XML数据的获取,采用延迟模式消除了与计算结果无关的数据的获取开销。在相当多的程序平均执行速度的对比上,采用延迟求值模式的求值器优于采用积极求值模式的求值器。