許 波
(天津市軟件評測中心,天津 300384)
隨著XML 相關(guān)標準的推廣和應(yīng)用,各行各業(yè)都以XML作為元語言來制定各自領(lǐng)域特定的子語言,用于存儲和共享該領(lǐng)域所涉及的數(shù)據(jù)。純XML 數(shù)據(jù)管理系統(tǒng)以及集成純XML 數(shù)據(jù)管理引擎的數(shù)據(jù)庫系統(tǒng)亦成為解決XML 數(shù)據(jù)管理問題的重要工具。
純XML 數(shù)據(jù)管理引擎近幾年才逐漸興起,其目標是實現(xiàn)對XML 數(shù)據(jù)的高效率訪問操作,并提供類似數(shù)據(jù)庫的存儲管理、事務(wù)管理、備份恢復(fù)等一整套管理機制。純XML引擎的關(guān)鍵技術(shù)主要包括XML 存儲方案、XML 查詢處理與查詢優(yōu)化、XML 數(shù)據(jù)更新、XML 關(guān)鍵字檢索等。另一方面,如何在傳統(tǒng)的關(guān)系數(shù)據(jù)庫上融合XML 數(shù)據(jù)處理能力,使其做到真正的無縫連接,使用戶獲得更加自然的應(yīng)用體驗,同時內(nèi)部處理機制使用純XML 引擎技術(shù),這些都是純XML 數(shù)據(jù)管理引擎的重要研究課題。
該項目針對已有解決方案存在的不足,提出無縫集成關(guān)系型數(shù)據(jù)的純XML 引擎設(shè)計方案并進行研制。其中心思想是借助有效的編碼方案在底層存儲上使用系統(tǒng)存儲表保存XML 節(jié)點數(shù)據(jù),并在此基礎(chǔ)上實現(xiàn)對關(guān)系數(shù)據(jù)庫其他模塊的無縫集成與重用,這既不同于DB2 中完全獨立的存儲方案,也不同于“XML 使能”方式的表映射。該方案最大限度地利用了關(guān)系數(shù)據(jù)庫已有的底層存儲機制對XML 數(shù)據(jù)進行存儲管理,并且大幅度重用了關(guān)系數(shù)據(jù)庫已有的模塊,例如緩沖區(qū)管理、事務(wù)管理、鎖管理、備份恢復(fù)管理等模塊。在XML 存儲管理層之上,研究XML 文檔特有的索引結(jié)構(gòu),建立包括XML 結(jié)構(gòu)摘要、XML 值索引、XML全文索引在內(nèi)的一系列XML 專用索引結(jié)構(gòu)。針對XML 設(shè)計查詢引擎,并同時支持SQL 查詢、XPath/XQuery 查詢、XML 數(shù)據(jù)更新、關(guān)鍵字檢索等功能。
該系統(tǒng)具有XML 數(shù)據(jù)存儲功能模塊、XML 數(shù)據(jù)查詢功能模塊、XML 關(guān)鍵字檢索功能模塊、XML 數(shù)據(jù)更新與驗證功能模塊4 個功能模塊。
2.1.1 XML數(shù)據(jù)存儲功能模塊
XML 數(shù)據(jù)存儲功能模塊提供存儲XML 數(shù)據(jù)的方案,數(shù)據(jù)存儲不僅需要將各種規(guī)模的文檔高效地存儲到系統(tǒng)中,還需要為數(shù)據(jù)查詢、更新以及檢索提供各種便利的條件,比如存儲更新驗證所需的XML 模式,實現(xiàn)XML 存儲方案與關(guān)系存儲后端的無縫集成,不破壞存儲管理器中關(guān)系的概念。重用底層文件管理、緩存管理、并發(fā)控制和備份恢復(fù)等機制。
該模塊有3 個具體功能。1)在數(shù)據(jù)庫中裝載XML 文檔。根據(jù)實際對XML 數(shù)據(jù)的需求,文檔規(guī)模不超過2 GB。2)在數(shù)據(jù)庫中裝載XML 模式。XML 模式可以為數(shù)據(jù)更新提供有效性驗證,因此,需要在存儲功能模塊中裝載XML模式的存儲功能。3)對數(shù)據(jù)庫中存儲的XML 文檔進行重構(gòu),以良構(gòu)的形式顯示給用戶。
2.1.2 XML數(shù)據(jù)查詢功能模塊
XML 數(shù)據(jù)查詢模塊可以幫助用戶精確查詢XML 數(shù)據(jù)。查詢XML 數(shù)據(jù)使用擴展后的SQL 語言,實現(xiàn)最新的SQL:2006 國際標準中規(guī)定的SQL/XML 擴展。在關(guān)系數(shù)據(jù)庫查詢語言SQL 中添加XML 管理功能,利用SQL/XML 標準,將XQuery 1.0 標準融入SQL 語法中。利用SQL/XML 標準對XML 數(shù)據(jù)進行查詢,查詢結(jié)果仍然以XML 格式顯示給用戶。
查詢執(zhí)行器為查詢優(yōu)化器提供包括XML 結(jié)構(gòu)連接、Twig 模式匹配、基于索引的路徑表達式求值、聚合函數(shù)計算、節(jié)點排序等在內(nèi)的一系列算法。并通過構(gòu)造XML 查詢模型并進行優(yōu)化處理,實現(xiàn)XML 查詢優(yōu)化。
2.1.3 XML關(guān)鍵字檢索功能模塊
該系統(tǒng)同時支持關(guān)系數(shù)據(jù)和XML 數(shù)據(jù)的關(guān)鍵字檢索功能,并在存儲層上建立統(tǒng)一的索引模型,向查詢執(zhí)行引擎提供統(tǒng)一的訪問接口。關(guān)鍵字檢索功能模塊提供具有IR模型支持的XML 與關(guān)系數(shù)據(jù)上的關(guān)鍵字檢索功能。支持漢語、英語等語言的全文索引,并允許用戶擴充語言處理單元。隨著信息檢索技術(shù)的發(fā)展,尤其是搜索引擎和桌面搜索服務(wù)的日益普及,信息檢索的應(yīng)用需求是越來越多的數(shù)據(jù)庫用戶所渴望的。用戶希望數(shù)據(jù)庫引擎能夠直接支持內(nèi)容全文索引和信息檢索模型,自動計算查詢與文檔之間的相似程度,并據(jù)此返回排序的結(jié)果。
2.1.4 XML數(shù)據(jù)更新與驗證功能模塊
為了有效地支持XML數(shù)據(jù)上的聯(lián)機事務(wù)處理過程(OLTP),DBMS(數(shù)據(jù)庫管理系統(tǒng))在進行XML 查詢處理操作的同時,還必須能夠執(zhí)行各種XML 數(shù)據(jù)的更新操作。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)更新始終離不開事務(wù)這一重要概念。通過事務(wù)管理器和鎖管理器組成的并發(fā)控制模塊與數(shù)據(jù)庫底層存儲進行通信,從而保證了多個事務(wù)同時更新數(shù)據(jù)時的邏輯正確性,同時,數(shù)據(jù)更新還會涉及日志記錄和數(shù)據(jù)恢復(fù)機制。
對該系統(tǒng)進行項目驗收測試,監(jiān)測系統(tǒng)是否遵循GB/T 25000.51—2016《系統(tǒng)與軟件工程 系統(tǒng)與軟件質(zhì)量要求和評價(SQuaRE) 第51 部分:就緒可用軟件產(chǎn)品(RUSP)的質(zhì)量要求和測試細則》[1]以及GB/T 25000.10—2016《系統(tǒng)與軟件工程 系統(tǒng)與軟件質(zhì)量要求和評價(SQuaRE) 第10 部分:系統(tǒng)與軟件質(zhì)量模型》[2]的質(zhì)量特性要求。
測試時,實際運行被測軟件完成全部測試用例,以驗證其功能性、可靠性、易用性等相關(guān)特性,并逐項驗證被測軟件在產(chǎn)品文檔、程序和數(shù)據(jù)有關(guān)要求方面的符合性。測試分為功能性、可靠性和易用性測試。
基本功能和可靠性測試部分主要是驗證基本功能的實現(xiàn)情況是否與測試文檔中描述的相符,以及程序?qū)σ恍╁e誤輸入的糾錯處理情況。
通過與客戶的多次溝通,明確測試范圍和測試方法,修改測試用例,準備測試腳本和數(shù)據(jù)。該軟件的運行環(huán)境為CentOS 5.5,具體操作過程是以參照測試用例,輸入相應(yīng)語句,返回結(jié)果,判斷是否正確實現(xiàn)程序功能的方法進行測試。
考慮到該軟件全部功能均需要用戶以命令行的形式輸入相應(yīng)命令完成功能操作,并無友好界面,所以需要客戶在測試前提交全部的程序語法格式以及參數(shù)設(shè)置規(guī)則,根據(jù)相關(guān)功能要求,編寫測試用例,確定輸入項內(nèi)容,并明確輸出結(jié)果。測試用例中的可靠性用例設(shè)計角度為輸入不符合語法規(guī)則的內(nèi)容時,觀察軟件的輸出結(jié)果和糾錯能力。
XML 存儲方案研究方面的技術(shù)指標支持“以數(shù)據(jù)為中心”和“以文檔為中心”2 種類型XML 文檔的存儲。其既能存儲合成數(shù)據(jù)集(例如XMark),也能存儲真實數(shù)據(jù)集(例如DBLP、Treebank 等)。能夠存儲的單個XML文檔大小超過2 GB。我們首先通過功能性測試用例判斷“軟件支持‘以數(shù)據(jù)為中心’,‘以文檔為中心’2 種類型XML 文檔的存儲”,再通過事先準備好的測試數(shù)據(jù)來驗證“既能存儲合成數(shù)據(jù)集(例如XMark),也能存儲真實數(shù)據(jù)集(例如SIGMOD),并且軟件能夠存儲大小為2.05 GB 的單個XML 文檔?!本褪峭ㄟ^在測試前與客戶進行前期溝通,對準備好的測試數(shù)據(jù)進行功能測試檢驗來完成的。
XML 關(guān)鍵字檢索方面的技術(shù)指標是在XML 標準查詢語言的最新版本XQuery 1.0 和XPath 2.0 的基礎(chǔ)上,實現(xiàn)XML 關(guān)鍵字檢索功能擴展。擴展語法符合W3C 的《XQuery and XPath Full Text 1.0》標準,通過與W3C 的《XQuery and XPath Full Text 1.0》標準文檔進行對比來驗證擴展語法是否與其相符[3]。
在XML 數(shù)據(jù)查詢與更新方面的技術(shù)指標中有以下3 項重點測試內(nèi)容。1)驗證軟件是否實現(xiàn)了最新的SQL:2006國際標準中規(guī)定的SQL/XML 擴展,是否在關(guān)系數(shù)據(jù)庫查詢語言SQL 中添加了XML 管理功能,軟件中的語法點覆蓋率是否達到90%以上。2)驗證軟件是否實現(xiàn)了XML 標準查詢語言的最新版本XQuery 1.0 和XPath 2.0,是否開發(fā)完成了2 種語言的語法解析器和語義生成器,軟件中的語法點覆蓋率是否達到90%以上。3)驗證軟件是否實現(xiàn)了XML標準更新語言的最新版本“XQuery Update Facility 1.0”,是否將XML 查詢語言和XML 更新語言融為一體。在此基礎(chǔ)上,是否實現(xiàn)了進一步添加支持增量驗證和自動糾錯的語法功能,軟件中的語法點覆蓋率是否達到90%以上。
這3 項因為涉及語法點覆蓋率,所以測試方法選用功能結(jié)合文檔共同驗證的形式,首先通過測試用例確定軟件實現(xiàn)的語法點都有哪些,再與文檔中描述的全部語法點進行對比,計算得出語法點覆蓋率。
通過對測試文檔進行檢查,發(fā)現(xiàn)部分文檔存在缺陷,需要開發(fā)方完善系統(tǒng)的使用手冊,以便用戶能夠更加準確地了解系統(tǒng)的使用方法。并且完善了DiReX:與關(guān)系數(shù)據(jù)庫系統(tǒng)無縫集成的純XML 引擎的部分研究文檔內(nèi)容。測試使系統(tǒng)的功能性、可靠性、易用性以及文檔方面更加完善,達到了測試的目的。