以MySQL為例介紹數(shù)據(jù)庫測試工具dbmonster的使用
數(shù)據(jù)庫測試工具dbmonster可以用來測試數(shù)據(jù)庫的性能,本文以MySQL數(shù)據(jù)庫為例,測試一下它的INT型主鍵、外鍵以及varchar型數(shù)據(jù)的生成,接下來我們就開始介紹這一過程。
前期準(zhǔn)備:
準(zhǔn)備使用MySQL用來做測試,如果你還沒有安裝mysql請先安裝,然后下載mysql jdbc驅(qū)動,解壓后將mysql-connector-java-5.1.17-bin.jar 文件拷貝到dbmonster-core-1.0.3\lib目錄下。
創(chuàng)建數(shù)據(jù)庫test,新建表parent,child
- CREATE DATABASE test;
- CREATE TABLE parent
- (
- id INT NOT NULL,
- PRIMARY KEY (id)
- ) ENGINE=INNODB;
- CREATE TABLE child
- (
- id INT, parent_id INT,
- childname VARCHAR(20) DEFAULT NULL,
- INDEX par_ind (parent_id),
- PRIMARY KEY (id),
- FOREIGN KEY (parent_id) REFERENCES parent(id)
- ON DELETE CASCADE
- ) ENGINE=INNODB;
修改配置文件dbmonster.properties:
- dbmonster.jdbc.driver=com.mysql.jdbc.Driver
- dbmonster.jdbc.url=jdbc:mysql://192.168.159.144:3306?dbmonster?charSet=iso-8859-2
- dbmonster.jdbc.username=root
- dbmonster.jdbc.password=123456
- dbmonster.jdbc.transaction.size=50
- # for Oracle and other schema enabled databases
- dbmonster.jdbc.schema=test
- # maximal number of (re)tries
- dbmonster.max-tries=1000
- # default rows number for SchemaGrabber
- dbmonster.rows=1000
- # progres monitor class
- dbmonster.progress.monitor=pl.kernelpanic.dbmonster.ProgressMonitorAdapter
DBMonster的schema文件
schema 文件描述了產(chǎn)生數(shù)據(jù)的規(guī)則,在DBMonster中,數(shù)據(jù)的產(chǎn)生是通過Generator生成的,DBMonster中缺省的數(shù)據(jù) Generator包括兩個(gè)Key Generator(用于產(chǎn)生不重復(fù)的數(shù)據(jù),分別為MaxKeyGenerator和StringKeyGenerator)和 10 個(gè)Data Generator。以下簡單說明一下Data Generator的使用。
BinaryGenerator用于從外部文件中獲取二進(jìn)制數(shù)據(jù)并插入相應(yīng)字段,該Generator有兩個(gè)屬性,分別為file和nulls,file屬性描述數(shù)據(jù)來源,而nulls屬性則給出該字段生成null的幾率。
BooleanGenerator用于產(chǎn)生bool型數(shù)據(jù),該Generator包括兩個(gè)屬性,分別為probability和nulls,probability屬性描述產(chǎn)生true值數(shù)據(jù)的幾率,nulls屬性給出生成null的幾率。
ConstantGenerator用于產(chǎn)生固定值的數(shù)據(jù),該Generator只有一個(gè)屬性constant,給出要插入數(shù)據(jù)庫的值;
DateTimeGenerator 用于產(chǎn)生DateTime型數(shù)據(jù),該Generator包括四個(gè)屬性,分別是startDate,endDate,returnedType和 nulls, startDate描述開始時(shí)間,endDate描述終止時(shí)間,格式為“yyyy-mm-dd hh24:MM:ss”;returnedType描述生成數(shù)據(jù)的類型,可以為date、time或是timestamp;
DirectoryGenerator 用于根據(jù)本地文件(字典)的條目向數(shù)據(jù)庫插入數(shù)據(jù),該Generator包括兩個(gè)屬性,分別為dictFile和unique,dictFile指明字典 文件所在的位置,unique指明產(chǎn)生的數(shù)據(jù)是unique的還是random的;
ForeignKeyGenerator用于為設(shè)置了外鍵的字段生成數(shù)據(jù),該Generator包含兩個(gè)屬性,分別是tableName和columnName,tableName指明外鍵引用的表名,columnName指明外鍵引用的字段名;
NullGenerator用于產(chǎn)生null類型的數(shù)據(jù),該Generator不帶任何參數(shù)(只產(chǎn)生null);
NumberGenerator 用戶產(chǎn)生數(shù)值類型的數(shù)據(jù),該Generator包括5個(gè)屬性,分別是minValue、maxValue、returnedType、scale和 nulls。其中,minValue和maxValue分別給出產(chǎn)生值的下邊界和上邊界;returnedType給出生成數(shù)據(jù)的類型,可以是 short、integer、long、float、double和numeric類型;scale指明小數(shù)位數(shù);nulls表示產(chǎn)生null的幾率;
StringGenerator 用于產(chǎn)生字符串類型的數(shù)據(jù),該Generator包括5個(gè)屬性,分別是minLength、maxLength、allowSpaces、 excludeChars和nulls。其中,minLength和maxLength限定了字符串長度;allowSpaces控制字符串中是否包含空 格;excludeChars排除產(chǎn)生字符串時(shí)不使用的字符;nulls表示產(chǎn)生null的幾率;
修改dbmonster.properties文件:
注意:
ForeignKeyGenerator中tableName,columnName指的是主表的表名和字段名。
現(xiàn)在就可以使用dbmonster來創(chuàng)建隨機(jī)數(shù)據(jù)了。命令如下:dbmonster.bat -c dbmonster.proprities -s dbmonster-schema.xml
執(zhí)行成功截圖:
child表部分?jǐn)?shù)據(jù)截圖:
關(guān)于數(shù)據(jù)庫測試工具dbmonster的使用就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】


2009-09-01 16:45:00




