最近使用Blacksmith 對各類K,V數據庫作了一些測試,從中瞭解了一些各類數據庫的設計方式,比較各類數據庫的性能html
BlaskSmith是咱們本身的產品,詳細的產品信息能夠在github上看到 https://github.com/lawrencewu/blacksmithjava
測試的數據庫包括 bigmap, sessdb(https://github.com/lawrencewu/sessdb), leveldb(https://github.com/dain/leveldb)git
berkeleyDB(http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) java editiongithub
mapdb http://www.mapdb.org數據庫
如下的內容講述如何使用Blacksmith對各類k,v數據庫作測試oracle
準備工做app
1. download the blacksmith from github, it's a maven projectmaven
the download address is https://github.com/lawrencewu/blacksmith性能
2. Install測試
$ unzip blacksmith.zip $ cd blacksmith $ mvn clean install
3. run the test
$ target/distribution/BlackSmith-1.0.0
$ bin/local.sh
4. run the high level test by trying
$ target/distribution/BlackSmith-1.0.0 $ bin/local.sh -c conf/local-benchmark-high-contention.xml
5. run the low level test by trying
$ target/distribution/BlackSmith-1.0.0 $ bin/local.sh -c conf/local-benchmark-low-contention.xml
6. after the above operation, we can get the report under the reports folder.
i.e. the comparison between different databases.
How to add a plugin:
The tool's only useful when you add another plugin to test other k,v databases. This senario shows how to add a plugin
Step1:
Add a folder under the plugins folder, named it whatever you like e.g. test
Step2:
Implements the DBWrapper interface
Step3:
Replace the property file with your wrapper
step4:
config the project pom.xml file, add this plugin to the module section, and copy files to the destination location
you can try different test schema by changing the params in the StressTest tag.
Params specification:
1. numRequests
Total number of operation to be made against cache wrapper: reads + writes. Default is 50000.
2. numEntries
Number of keys on which all the GETs and PUTs are performed. Default is 100.