VoltDB is a distributed, in-memory database designed from the ground up to maximize throughput performance on commodity servers. The VoltDB architecture provides many advantages over traditional database products while avoiding the pitfalls of NoSQL solutions:
By partitioning the data and stored procedures, VoltDB can process multiple queries in parallel without sacrificing the consistency or durability of an ACID-compliant database.
By managing all data in memory with a single thread for each partition, VoltDB avoids overhead such as record locking, latching, and device-contention inherent in traditional disk-based databases.
VoltDB databases can scale up to meet new capacity or performance requirements simply by adding more nodes to the cluster.
Partitioning is automated, based on the schema, so there is no need to manually shard or repartition the data when scaling up as with many NoSQL solutions.
Finally, VoltDB Enterprise Edition provides features to ensure durability and high availability through command logging, locally replicating partitions (K-safety), and wide-area database replication.
Each of these features is described, in detail, in the Using VoltDB manual. This book explains how to use these and other features to manage and maintain a VoltDB database cluster from a database administrator's perspective.
The main difference between VoltDB and traditional database products from an administration perspective is that you must define the database schema before you start the database. There is no such thing as starting an "empty" database server.
To start a VoltDB database cluster, you need two files:
The compiled database schema and stored procedures. The application catalog defines the logical structure of the database, including the tables, indexes, partitioning, and so on.
The configuration settings for the cluster. The deployment file defines the physical structure of the database cluster, including the size of the cluster, what availability, durability, and security options will be enabled, and so on.
In general, the application catalog is produced as part of the database development process, which is described in the Using VoltDB manual. This book assumes you have a completed catalog.
The deployment file, on the other hand, defines the run-time configuration of the cluster. Establishing the correct settings for the deployment file and physically managing the database cluster is the duty of the administrators who are responsible for maintaining database operations. This book is written for those individuals and covers the standard procedures associated with database administration.