VoltDB is designed to provide world class throughput on commodity hardware. You do not need the latest or most expensive hardware to achieve outstanding performance. In fact, a few low- to mid-range servers can easily outperform a single high end server, since VoltDB throughput tends to scale linearly with the number of servers in the cluster.
People often ask us at VoltDB "what type of servers should we use and how many?" The good news is that VoltDB is very flexible. It works well on a variety of configurations. The bad news is that the true answer to the question is "it depends." There is no one configuration that is perfect for all situations.
Like any technology question, there are trade offs to be made when choosing the "right" hardware for your application. This chapter explains what those trade offs are and provides some general rules of thumb that can help when choosing hardware for running a VoltDB database.
There are three key dimensions to sizing individual servers: the number and speed of the processors, the total amount of memory, and the size and type of disks available. When sizing hardware for a distributed database such as VoltDB, there is a fourth dimension to consider: the number of servers to use.
Each of these dimensions impacts different aspects of VoltDB performance. The number of processors affects how many partitions can be run on each server and, as a result, throughput. The available memory obviously impacts capacity, or the volume of data that can be stored. The size, number, and type of disks impacts the performance of availability features such as snapshots and command logging.
However, they also interact. The more memory per server, the longer it takes to write a snapshot or for a node to rejoin after a failure. So increasing the number of servers but reducing the amount of memory per server may reduce the impact of durability on overall database performance. These are the sorts of trade offs that need to be considered.
The following sections discuss hardware sizing for three key aspects of a VoltDB application: