The GridDB connector for YCSB enables benchmarking of GridDB databases using the Yahoo Cloud Serving Benchmark. This guide has been written for use with Centos 6.7 (x64) with JDK 1.7.0_79 and YCSB 0.10.0.
Building YCSB and the GridDB Connector
- Install YCSB
~ $ wget https://github.com/brianfrankcooper/YCSB/releases/download/0.10.0/ycsb-0.10.0.tar.gz ~ $ tar xfvz ycsb-0.10.0.tar.gz ~ $ cd ycsb-0.10.0
Please refer to
<https://github.com/brianfrankcooper/YCSB/wiki/Getting-Started> for instructions on how to build YCSB.
2. Download the GridDB connector into the YCSB top level directory.
ycsb-0.10.0 $ git clone https://github.com/griddb/griddb_ycsb.git ycsb-0.10.0 $ mv -a griddb_ycsb/griddb griddb_ycsb/build.xml .
- Then edit bin/ycsb as follows.
DATABASES = {
"griddb" : "com.yahoo.ycsb.db.GridDBClient",
...
- Build the GridDB plugin:
ycsb-0.10.0 $ mkdir -p griddb-binding/lib ycsb-0.10.0 $ ant griddb
Which will create griddb-binding/lib/griddb-binding.jar.
GridDB Configuration Considerations
For optimum performance, set the number of CPU cores as /dataStore/concurrency in gs_node.json and “32KB” as /dataStore/storeBlockSize in gs_cluster.json.
Running YCSB
After starting the GridDB server, you can execute YCSB.
First load the dataset:
ycsb-0.10.0 $ ./bin/ycsb load griddb -P workloads/workloada
-p notificationAddress=<GridDB notification address(default is 239.0.0.1)>
-p notificationPort=<GridDB notification port(default is 31999)>
-p clusterName=<GridDB cluster name>
-p userName=<GridDB user name>
-p password=<GridDB password>
-p fieldcount=10
-p fieldlength=100
And then you’re able to run a transactional workload:
ycsb-0.10.0 $ ./bin/ycsb run griddb -P workloads/workloada
-p notificationAddress=<GridDB notification address(default is 239.0.0.1)>
-p notificationPort=<GridDB notification port(default is 31999)>
-p clusterName=<GridDB cluster name>
-p userName=<GridDB user name>
-p password=<GridDB password>
-p fieldcount=10
-p fieldlength=100
If your environment uses the FIXED_LIST method of notifications, replace the notificationAddress and notificationPort variables with the notificationMember variable, which value should be a comma seperated list of node IPs and ports such as “10.0.0.1:10001,10.0.0.2:10001,10.0.0.3:10001”.
Community
If you encounter any issues or have any requests or other questions, please submit feedback on the GridDB Developer Forum.
