歡迎您光臨本站 註冊首頁

使用 TPoX 測試 XML 資料庫的性能

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  
本文將對一款 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 數據,示例負載描述文件和事務模板組成。

現介紹如下:

  • XML schema:定義了該測試所用 XML 數據,包括一個 FIXML 的 schema ;
  • 數據生成工具:可以生成該測試所用的數據;
  • 示例負載描述文件和事務模板:這兩者組成了測試用負載,它包括一系列的事務,事務可以包括 XQuery,insert,update 等操作,這些事務將被執行在生成的數據上;
  • 負載驅動程序:Java 應用程序,用來執行用戶定義的負載,並且收集和列印測試結果;可以通過配置文件定製模擬的併發用戶數量;此外,它最大的特點是每次執行的事務都可以通過 Parameter   Maker 來動態的生成隨機測試數據;
  • 文檔:描述 TPoX 的實現細節及使用方法的文檔。

 





數據模型

TPoX 的數據模型是基於金融系統中的交易場景。它包括 2 個業務實體:客戶和經紀行(如下圖所示)。客戶通過訂單 Order 來買賣證券,經紀行根據客戶的請求來處理交易。該系統的核心便是一個支持 XML 功能的資料庫,它的性能決定了該應用的性能。


圖 1. 交易場景

下圖顯示了 TPoX 的主要邏輯數據實體關係以及其對應的 schema 。每個客戶 Customer 有 1 或多個賬戶 Account,每個賬戶 Account 可以下 1 或多個訂單 Order,每個訂單 Order 每次可以買或者賣 1 個權證 Security,每個權證 Security 可以有 1 或多個持有 Holding,就是說該權證可以被多個賬戶購買;同理,每個賬戶 Account 可以包括 1 或多個持有 Holding 。每一個權證 Security 可以存在於 Customer 的多個訂單 Order 或者持有 Holding 里。


圖 2. 實體關係





事務模板

TPoX 的測試方式是執行用戶指定的事務。 TPoX 提供了一些基本的事務模板,他們存放在 TPoX/WorkloadDriver/DB2/ 下,用戶可以修改或者增加所需執行的事務。同一個事務應當放在同一個文件中,它應該由一條或者多條增刪改查語句組成。每條語句應當由 % 作為結束符。負載驅動會在每個文件的最後一條語句執行完后提交 commit,除非該事務中有 commit 語句。

事務模板可以包含參數 Parameter,如下所示,其中包括像“ |1 ” 這樣的參數,該參數的生成規則由負載描述文件提供,在執行測試中由 Parameter Maker 生成。


清單 1. 示例模板
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 。負載描述文件可以指定一個包含模板的目錄或者顯式地指出所要執行的模板列表。


清單 2. 負載描述文件示例
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

  • numOfTransactions 指定該模板中包含的事務數量。上例中這個負載包含 4 個事務,它們位於 TPoX/WorkloadDriver/myqueries/ 目錄下;該路徑可以是絕對路徑,也可以是相對於 WorkloadDriver 的相對路徑;
  • t1 為模板的名字,w1 為該事務的權值,如果有一個權值被指定,那麼所有的事務都應該分配權值,並且所有權值相加應當為 100,否則報錯;權值的作用在於,如果用戶指定此次測試時間為 100s,那麼在此負載下,t1 會被執行 50% 即 50s ;
  • p1 為事務 t1 中的參數 parameter 的生成規則,parameter maker 會在測試執行過程中跟據該規則生成具體的數值,其中 p1|1 表示第一個事務的第一個參數,p2|1 表示第二個事務的第一個參數,p2|2 為第二個事務中的第二個參數。 p1|1 表明,第 1 個參數從文件 File 中隨機抽取,“ | ”後為該文件的地址; p2|1 表明,事務 2 的第 1 個參數隨機取自整型 Integer 的均勻分佈,分佈從 2000 到 4000,假如第二個事務中有條語句是“ ... where $doc/num = |1 ”, 則“ |1 ”會被 2000-4000 中的一個隨機數代替。




使用 TPoX

1. 安裝 TPoX

首先,登錄http://tpox.sourceforge.net/下載最新的 TPoX 。

解壓后,我們首先來看下 TPoX 的文件夾結構:


清單 3. 文件夾結構
TPoX    ------------------------------    datagen    DB2    documentation    generatedXML    MSSQL    Oracle    sample_documents    schemas    toxgene    WorkloadDriver

  • datagen:測試數據生成工具;
  • DB2,MSSQL,Oracle:用來測試特定資料庫的相關文件;
  • generatedXML:用來存放生成的 XML 文件的目錄;
  • schemas:測試所用的 schema 文件;
  • WorkloadDriver:負載驅動文件夾,TPoX 的主程序所在;

然後,登錄 http://www.ibiblio.org/maven/commons-cli/jars/ 下載負載驅動程序的庫文件 commons-cli-1.0.jar, 並且將它放在 TPoX/WorkloadDriver/plugins/ 下。

最後,需要修復 Windows 和 Linux 不同回車符的問題,執行以下命令:


清單 4. 修復命令
    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次圍觀

http://coctec.com/docs/linux/show-post-68800.html