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.
If you have any questions about the blog, please create a Stack Overflow post here https://stackoverflow.com/questions/ask?tags=griddb .
Make sure that you use the “griddb” tag so our engineers can quickly reply to your questions.