This section describes how to run YCSB on OrientDB running locally.
Clone the YCSB git repository and compile:
git clone https://github.com/brianfrankcooper/YCSB.git
cd YCSB
mvn clean package
Note: alternatively the latest docker image could be used
docker run -d --name orientdb -p 2424:2424 -p 2480:2480 -e ORIENTDB_ROOT_PASSWORD=admin orientdb:latest
Now you are ready to run! First, load the data:
./bin/ycsb load orientdb -s -P workloads/workloada
Then, run the workload:
./bin/ycsb run orientdb -s -P workloads/workloada
See the next section for the list of configuration parameters for OrientDB.
This client will create a database for you if the connection database you specify does not exists. You can also specify connection information to a preexisting database.
You can use the orientdb.newdb=true property to allow this client to drop and create a new database instance during the load phase.
NOTE: understand that using the orientdb.newdb=true property will drop and recreate databases even if it was a preexisting instance.
WARNING: Creating a new database will be done safely with multiple threads on a single YCSB instance, but is not guaranteed to work when launching multiple YCSB instances. In that scenario it is suggested that you create the db before hand, or run the load phase with a single YCSB instance.
orientdb.url- (required) The address to your database.- Supported storage types: memory, plocal, remote
- EX.
plocal:/path/to/database - remote EX.
remote:172.16.50.15:2424/database
orientdb.user- The user to connect to the database with.- Default:
admin
- Default:
orientdb.password- The password to connect to the database with.- Default:
admin
- Default:
orientdb.server.user- The server user to connect to the database with.- Default:
root
- Default:
orientdb.server.password- The server password to connect to the database with.- Default:
admin
- Default:
orientdb.newdb- Overwrite the database if it already exists.- Only effects the
loadphase. - Default:
false
- Only effects the
orientdb.remote.storagetype- Storage type of the database on remote server- This is only required if using a
remote:connection url
- This is only required if using a
To plot workload results install gnuplot, then create a directory to collect the outputs
mkdir -p orientdb/outputs/orientdb
load the data
./bin/ycsb load orientdb -s -P workloads/workloadc
and run the workload, e.g. workloadc, by following the naming convention for the file name outputRun_<workload>.txt:
./bin/ycsb run orientdb -s -P workloads/workloadc > orientdb/outputs/orientdb/outputRun_workloadc.txt
After a successful worload run, goto the plots directory cd orientdb/plots and run
./tool.sh "plot" "save" ../outputs/orientdb/
The diagrams will be in the images directory.
- There is a performance issue around the scan operation. This binding uses OIndex.iterateEntriesMajor() which will return unnecessarily large iterators. This has a performance impact as the recordcount goes up. There are ideas in the works to fix it, track it here: #568.
- Iterator methods needed to perform scans are Unsupported in the OrientDB API for remote database connections and so will return NOT_IMPLEMENTED status if attempted.