running ycsb workloads on mongodb

4.1k Views Asked by At

I am running the YCSB tool on mongodb for benchmarking db and I notice that once I load a workload ( workloada for example) and run a transaction ( target 1500 for example) I am not able to run another transaction without dropping the entire database and loading the database again. the reason being that if I run another transaction without dropping and loading the database I get the error the "duplicate key error".

It looks like the first transaction entered some keys which the second transaction also tries to insert. Is there a workaround for this? Or is there something wrong with what I am doing.

this is the command I use for loading :

./bin/ycsb load mongodb -P workloads/workloada
  -p mongodb.url=<ip_address>:27020
  -p mongodb.maxconnections=150 -s
  -p mongodb.writeConcern=normal
  -target 3500 -threads 200  > <output-file>

Here is command I use for the transaction phase

./bin/ycsb load mongodb
  -P workloads/workloada
  -p mongodb.url=<IP_address>:27020
  -p mongodb.maxconnections=100 -s
  -p mongodb.writeConcern=normal
  -target 1500 -threads 100  > <output_file>
2

There are 2 best solutions below

0
On

The question is old but adding a response anyways.

That's how it is meant to behave: the load phase ideally runs once inserting data into MongoDB, followed by whatever workloads you intend to run.

Look here in YCSB wiki for an example of a sequence in which workloads can be run. This page in the wiki runs through the list of everything needed to run a test.

If load is what you intend to benchmark then you should drop the collection and the database between and before your 'load' operations.

0
On

When you load once you can run YCSB as many times as you want. But loading again will give you the error as records are already loaded. Hence, you will have to delete the directory on which you are loading MongoDB.