This section describes how to run YCSB on MongoDB.
First, download MongoDB and start mongod
. For example, to start MongoDB
on x86-64 Linux box:
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-x.x.x.tgz
tar xfvz mongodb-linux-x86_64-*.tgz
mkdir /tmp/mongodb
cd mongodb-linux-x86_64-*
./bin/mongod --dbpath /tmp/mongodb
Replace x.x.x above with the latest stable release version for MongoDB. See http://docs.mongodb.org/manual/installation/ for installation steps for various operating systems.
Go to http://www.oracle.com/technetwork/java/javase/downloads/index.html
and get the url to download the rpm into your server. For example:
wget http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.rpm?AuthParam=11232426132 -o jdk-7u40-linux-x64.rpm
rpm -Uvh jdk-7u40-linux-x64.rpm
Or install via yum/apt-get
sudo yum install java-devel
Download MVN from http://maven.apache.org/download.cgi
wget http://ftp.heanet.ie/mirrors/www.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
sudo tar xzf apache-maven-*-bin.tar.gz -C /usr/local
cd /usr/local
sudo ln -s apache-maven-* maven
sudo vi /etc/profile.d/maven.sh
Add the following to maven.sh
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}
Reload bash and test mvn
bash
mvn -version
Download the YCSB zip file and compile:
git clone git://github.com/brianfrankcooper/YCSB.git
cd YCSB
mvn -pl com.yahoo.ycsb:mongodb-binding -am clean package
Now you are ready to run! First, use the asynchronous driver to load the data:
./bin/ycsb load mongodb-async -s -P workloads/workloada > outputLoad.txt
Then, run the workload:
./bin/ycsb run mongodb-async -s -P workloads/workloada > outputRun.txt
Similarly, to use the synchronous driver from MongoDB Inc. we load the data:
./bin/ycsb load mongodb -s -P workloads/workloada > outputLoad.txt
Then, run the workload:
./bin/ycsb run mongodb -s -P workloads/workloada > outputRun.txt
See the next section for the list of configuration parameters for MongoDB.
-
mongodb.url
- This should be a MongoDB URI or connection string.
- See http://docs.mongodb.org/manual/reference/connection-string/ for the standard options.
- For the complete set of options for the asynchronous driver see:
- For the complete set of options for the synchronous driver see:
- Default value is
mongodb://localhost:27017/ycsb?w=1
- Default value of database is
ycsb
- This should be a MongoDB URI or connection string.
-
mongodb.batchsize
- Useful for the insert workload as it will submit the inserts in batches inproving throughput.
- Default value is
1
.
-
mongodb.upsert
- Determines if the insert operation performs an update with the upsert operation or a insert. Upserts have the advantage that they will continue to work for a partially loaded data set.
- Setting to
true
uses updates,false
uses insert operations. - Default value is
false
.
-
mongodb.writeConcern
- Deprecated - Use the
w
andjournal
options on the MongoDB URI provided by themongodb.url
. - Allowed values are :
errors_ignored
unacknowledged
acknowledged
journaled
replica_acknowledged
majority
- Default value is
acknowledged
.
- Deprecated - Use the
-
mongodb.readPreference
- Deprecated - Use the
readPreference
options on the MongoDB URI provided by themongodb.url
. - Allowed values are :
primary
primary_preferred
secondary
secondary_preferred
nearest
- Default value is
primary
.
- Deprecated - Use the
-
mongodb.maxconnections
- Deprecated - Use the
maxPoolSize
options on the MongoDB URI provided by themongodb.url
. - Default value is
100
.
- Deprecated - Use the
-
mongodb.threadsAllowedToBlockForConnectionMultiplier
- Deprecated - Use the
waitQueueMultiple
options on the MongoDB URI provided by themongodb.url
. - Default value is
5
.
- Deprecated - Use the
For example:
./bin/ycsb load mongodb-async -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0
To run with the synchronous driver from MongoDB Inc.:
./bin/ycsb load mongodb -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0