Learn By Example: Key/Value

The traditional noSQL use case for benchmarking

Description:

This example application demonstrates how to create a Key/Value store using VoltDB and the automatic stored procedures created for each table. Many attributes of the application are customizable through arguments passed to the client.

The default client configuration will allow the system to automatically tune itself for optimal performance, regardless of the underlying hardware and cluster deployment. The client starts fire-hosing: attempting to submit transactions faster than the server can possibly process them (1 billion transactions per second, or 1B TPS). Within 5 seconds, the automated tuning determines an optimized throughput (TPS) that maintains transaction latency within 6 milliseconds.

You can also turn auto-tuning off to experiment with different loads or to better understand why proper tuning is key to getting the most out of specific VoltDB deployments.

Features:

This example application is designed with benchmarking in mind. It allows you to adjust many attributes of the application by modifying arguments passed to the client in the run.sh script, including:

  • Maximum number of transactions per second
  • Length of time the sample client runs
  • When to start recording performance statistics
  • How frequently to report those statistics
  • Size of the Key column
  • Minimum and Maximum size of the Value input
  • Percentage of read transactions versus write transactions
  • Whether to compress the Value before insertion

Note that the application is essentially a network-bound application: it generally maxes out the network bandwidth long before it exhausts the throughput processing capability of VoltDB.

Code:

The code for the Key/Value sample application ships as part of the VoltDB product in the /examples folder. You can also find it in the VoltDB github repository.