本文將對一款 XML 資料庫事務處理性能測試工具 TPoX 進行介紹。它對資料庫處理 XML 事務的整體能力進行性能測試 , 不同於其他測試工具僅對 XQuery 執行效率進行測試。 TPoX 的部分測試數據來源於金融領域的實際情景 , 並且具有一定的模擬性。
前言
XML 資料庫是近年來新出現的支持 XML 功能操作的資料庫。各種 XML 資料庫良莠不齊,用戶對 XML 資料庫的需求也不盡相同。性能,無疑是是大多數用戶的首要挑選條件。因此,各種各樣的性能測試工具應運而生,XMach-1,XPathMark,XBench 等等。但是這些測試工具僅針對資料庫的某個方面進行測試,如 XQuery 的查詢性能等。本文將為大家介紹一款針對於 XML 資料庫的整體事務處理能力進行測試的工具—— TPoX,Transaction Processing over XML 。
TPoX 概述
TPoX 是一款基於金融場景的針對 XML 資料庫的性能基準測試工具。它主要用來評估 XML 資料庫的以下性能:XQuery,SQL/XML, XML 存儲 , XML 索引, XML Schema 驗證, XML 更新,併發操作等。 TPoX 由負載驅動程序,測試用 XML Schema,測試用 XML 數據,示例負載描述文件和事務模板組成。
現介紹如下:
數據模型
TPoX 的數據模型是基於金融系統中的交易場景。它包括 2 個業務實體:客戶和經紀行(如下圖所示)。客戶通過訂單 Order 來買賣證券,經紀行根據客戶的請求來處理交易。該系統的核心便是一個支持 XML 功能的資料庫,它的性能決定了該應用的性能。
下圖顯示了 TPoX 的主要邏輯數據實體關係以及其對應的 schema 。每個客戶 Customer 有 1 或多個賬戶 Account,每個賬戶 Account 可以下 1 或多個訂單 Order,每個訂單 Order 每次可以買或者賣 1 個權證 Security,每個權證 Security 可以有 1 或多個持有 Holding,就是說該權證可以被多個賬戶購買;同理,每個賬戶 Account 可以包括 1 或多個持有 Holding 。每一個權證 Security 可以存在於 Customer 的多個訂單 Order 或者持有 Holding 里。
事務模板
TPoX 的測試方式是執行用戶指定的事務。 TPoX 提供了一些基本的事務模板,他們存放在 TPoX/WorkloadDriver/DB2/ 下,用戶可以修改或者增加所需執行的事務。同一個事務應當放在同一個文件中,它應該由一條或者多條增刪改查語句組成。每條語句應當由 % 作為結束符。負載驅動會在每個文件的最後一條語句執行完后提交 commit,除非該事務中有 commit 語句。
事務模板可以包含參數 Parameter,如下所示,其中包括像“ |1 ” 這樣的參數,該參數的生成規則由負載描述文件提供,在執行測試中由 Parameter Maker 生成。
declare default element namespace "http://tpoxbenchmark. com/custacc"; for $cust in db2-fn:xmlcolumn("CUSTACC.CADOC")/Customer where $cust/@id=|1 and $cust/Nationality="|2" return <Customer_Profile CUSTOMERID="{$cust/@id}"> {$cust/Name} {$cust/DateOfBirth} {$cust/Gender} {$cust/Nationality} {$cust/Addresses} {$cust/EmailAddresses} </Customer_Profile> % |
負載描述文件
負載描述文件用來控制負載驅動的執行,它告訴負載驅動去執行配置的事務以及如何實現其中的參數。一些示例負載描述文件位於 TPoX/WorkloadDriver/properties 。負載描述文件可以指定一個包含模板的目錄或者顯式地指出所要執行的模板列表。
numOfTransactions = 4 t1 = myqueries/listSecurities.xqr w1 = 50 p1|1 = file|input/security_types.txt t2 = myqueries/getCustomerProfile.xqr w2 = 20 p2|1 = uniform|2000-4000 p2|2 = uniform|5000-20000 t3 = myqueries/listOrders.xqr w3 = 15 t4 = myqueries/customized.xqr w4 = 15 |
使用 TPoX
1. 安裝 TPoX
首先,登錄http://tpox.sourceforge.net/下載最新的 TPoX 。
解壓后,我們首先來看下 TPoX 的文件夾結構:
TPoX ------------------------------ datagen DB2 documentation generatedXML MSSQL Oracle sample_documents schemas toxgene WorkloadDriver |
然後,登錄 http://www.ibiblio.org/maven/commons-cli/jars/ 下載負載驅動程序的庫文件 commons-cli-1.0.jar, 並且將它放在 TPoX/WorkloadDriver/plugins/ 下。
最後,需要修復 Windows 和 Linux 不同回車符的問題,執行以下命令:
cd TPoX/ chmod a+x fix chmod a+x fixAll ./fixAll |
2. 準備測試數據
2.1 下載測試數據
在 http://tpox.sourceforge.net/ 下載測試數據,這些測試數據是由 datagen 按照 XXS(最小)的標準生成的。如果你需要更大的測試數據,請單獨運行 datagen 來生成符合你條件的測試數據。生成數據方法請參閱 2.2 。
解壓后,將數據拷貝到 generatedXML 目錄,如下所示:
TPoX/generatedXML/XXS/custacc/batch-[1-7] TPoX/generatedXML/XXS/order/batch-[1-7] TPoX/generatedXML/XXS/security TPoX/generatedXML/XXS/account/batch-1 |
[火星人 ] 使用 TPoX 測試 XML 資料庫的性能已經有455次圍觀