许 波
(天津市软件评测中心,天津 300384)
随着XML 相关标准的推广和应用,各行各业都以XML作为元语言来制定各自领域特定的子语言,用于存储和共享该领域所涉及的数据。纯XML 数据管理系统以及集成纯XML 数据管理引擎的数据库系统亦成为解决XML 数据管理问题的重要工具。
纯XML 数据管理引擎近几年才逐渐兴起,其目标是实现对XML 数据的高效率访问操作,并提供类似数据库的存储管理、事务管理、备份恢复等一整套管理机制。纯XML引擎的关键技术主要包括XML 存储方案、XML 查询处理与查询优化、XML 数据更新、XML 关键字检索等。另一方面,如何在传统的关系数据库上融合XML 数据处理能力,使其做到真正的无缝连接,使用户获得更加自然的应用体验,同时内部处理机制使用纯XML 引擎技术,这些都是纯XML 数据管理引擎的重要研究课题。
该项目针对已有解决方案存在的不足,提出无缝集成关系型数据的纯XML 引擎设计方案并进行研制。其中心思想是借助有效的编码方案在底层存储上使用系统存储表保存XML 节点数据,并在此基础上实现对关系数据库其他模块的无缝集成与重用,这既不同于DB2 中完全独立的存储方案,也不同于“XML 使能”方式的表映射。该方案最大限度地利用了关系数据库已有的底层存储机制对XML 数据进行存储管理,并且大幅度重用了关系数据库已有的模块,例如缓冲区管理、事务管理、锁管理、备份恢复管理等模块。在XML 存储管理层之上,研究XML 文档特有的索引结构,建立包括XML 结构摘要、XML 值索引、XML全文索引在内的一系列XML 专用索引结构。针对XML 设计查询引擎,并同时支持SQL 查询、XPath/XQuery 查询、XML 数据更新、关键字检索等功能。
该系统具有XML 数据存储功能模块、XML 数据查询功能模块、XML 关键字检索功能模块、XML 数据更新与验证功能模块4 个功能模块。
2.1.1 XML数据存储功能模块
XML 数据存储功能模块提供存储XML 数据的方案,数据存储不仅需要将各种规模的文档高效地存储到系统中,还需要为数据查询、更新以及检索提供各种便利的条件,比如存储更新验证所需的XML 模式,实现XML 存储方案与关系存储后端的无缝集成,不破坏存储管理器中关系的概念。重用底层文件管理、缓存管理、并发控制和备份恢复等机制。
该模块有3 个具体功能。1)在数据库中装载XML 文档。根据实际对XML 数据的需求,文档规模不超过2 GB。2)在数据库中装载XML 模式。XML 模式可以为数据更新提供有效性验证,因此,需要在存储功能模块中装载XML模式的存储功能。3)对数据库中存储的XML 文档进行重构,以良构的形式显示给用户。
2.1.2 XML数据查询功能模块
XML 数据查询模块可以帮助用户精确查询XML 数据。查询XML 数据使用扩展后的SQL 语言,实现最新的SQL:2006 国际标准中规定的SQL/XML 扩展。在关系数据库查询语言SQL 中添加XML 管理功能,利用SQL/XML 标准,将XQuery 1.0 标准融入SQL 语法中。利用SQL/XML 标准对XML 数据进行查询,查询结果仍然以XML 格式显示给用户。
查询执行器为查询优化器提供包括XML 结构连接、Twig 模式匹配、基于索引的路径表达式求值、聚合函数计算、节点排序等在内的一系列算法。并通过构造XML 查询模型并进行优化处理,实现XML 查询优化。
2.1.3 XML关键字检索功能模块
该系统同时支持关系数据和XML 数据的关键字检索功能,并在存储层上建立统一的索引模型,向查询执行引擎提供统一的访问接口。关键字检索功能模块提供具有IR模型支持的XML 与关系数据上的关键字检索功能。支持汉语、英语等语言的全文索引,并允许用户扩充语言处理单元。随着信息检索技术的发展,尤其是搜索引擎和桌面搜索服务的日益普及,信息检索的应用需求是越来越多的数据库用户所渴望的。用户希望数据库引擎能够直接支持内容全文索引和信息检索模型,自动计算查询与文档之间的相似程度,并据此返回排序的结果。
2.1.4 XML数据更新与验证功能模块
为了有效地支持XML数据上的联机事务处理过程(OLTP),DBMS(数据库管理系统)在进行XML 查询处理操作的同时,还必须能够执行各种XML 数据的更新操作。在传统的关系数据库中,数据更新始终离不开事务这一重要概念。通过事务管理器和锁管理器组成的并发控制模块与数据库底层存储进行通信,从而保证了多个事务同时更新数据时的逻辑正确性,同时,数据更新还会涉及日志记录和数据恢复机制。
对该系统进行项目验收测试,监测系统是否遵循GB/T 25000.51—2016《系统与软件工程 系统与软件质量要求和评价(SQuaRE) 第51 部分:就绪可用软件产品(RUSP)的质量要求和测试细则》[1]以及GB/T 25000.10—2016《系统与软件工程 系统与软件质量要求和评价(SQuaRE) 第10 部分:系统与软件质量模型》[2]的质量特性要求。
测试时,实际运行被测软件完成全部测试用例,以验证其功能性、可靠性、易用性等相关特性,并逐项验证被测软件在产品文档、程序和数据有关要求方面的符合性。测试分为功能性、可靠性和易用性测试。
基本功能和可靠性测试部分主要是验证基本功能的实现情况是否与测试文档中描述的相符,以及程序对一些错误输入的纠错处理情况。
通过与客户的多次沟通,明确测试范围和测试方法,修改测试用例,准备测试脚本和数据。该软件的运行环境为CentOS 5.5,具体操作过程是以参照测试用例,输入相应语句,返回结果,判断是否正确实现程序功能的方法进行测试。
考虑到该软件全部功能均需要用户以命令行的形式输入相应命令完成功能操作,并无友好界面,所以需要客户在测试前提交全部的程序语法格式以及参数设置规则,根据相关功能要求,编写测试用例,确定输入项内容,并明确输出结果。测试用例中的可靠性用例设计角度为输入不符合语法规则的内容时,观察软件的输出结果和纠错能力。
XML 存储方案研究方面的技术指标支持“以数据为中心”和“以文档为中心”2 种类型XML 文档的存储。其既能存储合成数据集(例如XMark),也能存储真实数据集(例如DBLP、Treebank 等)。能够存储的单个XML文档大小超过2 GB。我们首先通过功能性测试用例判断“软件支持‘以数据为中心’,‘以文档为中心’2 种类型XML 文档的存储”,再通过事先准备好的测试数据来验证“既能存储合成数据集(例如XMark),也能存储真实数据集(例如SIGMOD),并且软件能够存储大小为2.05 GB 的单个XML 文档。”就是通过在测试前与客户进行前期沟通,对准备好的测试数据进行功能测试检验来完成的。
XML 关键字检索方面的技术指标是在XML 标准查询语言的最新版本XQuery 1.0 和XPath 2.0 的基础上,实现XML 关键字检索功能扩展。扩展语法符合W3C 的《XQuery and XPath Full Text 1.0》标准,通过与W3C 的《XQuery and XPath Full Text 1.0》标准文档进行对比来验证扩展语法是否与其相符[3]。
在XML 数据查询与更新方面的技术指标中有以下3 项重点测试内容。1)验证软件是否实现了最新的SQL:2006国际标准中规定的SQL/XML 扩展,是否在关系数据库查询语言SQL 中添加了XML 管理功能,软件中的语法点覆盖率是否达到90%以上。2)验证软件是否实现了XML 标准查询语言的最新版本XQuery 1.0 和XPath 2.0,是否开发完成了2 种语言的语法解析器和语义生成器,软件中的语法点覆盖率是否达到90%以上。3)验证软件是否实现了XML标准更新语言的最新版本“XQuery Update Facility 1.0”,是否将XML 查询语言和XML 更新语言融为一体。在此基础上,是否实现了进一步添加支持增量验证和自动纠错的语法功能,软件中的语法点覆盖率是否达到90%以上。
这3 项因为涉及语法点覆盖率,所以测试方法选用功能结合文档共同验证的形式,首先通过测试用例确定软件实现的语法点都有哪些,再与文档中描述的全部语法点进行对比,计算得出语法点覆盖率。
通过对测试文档进行检查,发现部分文档存在缺陷,需要开发方完善系统的使用手册,以便用户能够更加准确地了解系统的使用方法。并且完善了DiReX:与关系数据库系统无缝集成的纯XML 引擎的部分研究文档内容。测试使系统的功能性、可靠性、易用性以及文档方面更加完善,达到了测试的目的。