The VoltDB FAQ
VoltDB is a SQL RDBMS for database applications that have ultra-high throughput requirements. Depending on the product configuration, VoltDB offers some or all of the following:
- Orders of magnitude better performance than conventional DBMSs
- Linear scaling
- SQL as the DBMS interface
- ACID transactions to ensure data consistency and accuracy
- Built-in high availability
- Built-in database crash recovery
- Database replication for disaster recovery, hot stand-by and workload optimization
- Prepackaged developer tools, Key-Value and memcached reference interfaces
- Consoles for database provisioning, monitoring and management
What is the architecture of VoltDB?
VoltDB is an in-memory database distributed on a scalable cluster of shared-nothing servers. Transactions are defined as Java stored procedures, using ANSI-standard SQL for data access. Parallel single-threaded processing ensures transactional consistency while avoiding the overhead of locking, latching, and resource management seen in traditional database systems.
Back to Top![]()
How does VoltDB achieve ACID compliance?
ACID stands for Atomicity, Consistency, Isolation, and Durability — the cornerstones of database transaction processing.
- Atomicity: VoltDB defines a transaction as a stored procedure, which either succeeds or rolls back on failure.
- Consistency: VoltDB enforces schema and datatype constraints in all database queries.
- Isolation: VoltDB transactions are globally ordered and run to completion on all affected partitions without interleaving.
- Durability: VoltDB provides replication of partitions (known as K-safety), and periodic database snapshots combined with command logging to ensure high availability and database durability. VoltDB Enterprise Addition includes Database Replication, providing durability across data centers and supporting enterprise-class disaster recovery strategies.
What is VoltDB's scaling model?
VoltDB automatically partitions frequently accessed database tables across the available cluster nodes. Both the capacity and performance of the database can be increased by adding nodes to the cluster. Upon changes to cluster size, VoltDB automatically redistributes the partitions to the new configuration when you reload the data. VoltDB also allows tables with infrequently-changing data to be replicated to each node to further optimize performance.
Back to Top![]()
How does VoltDB partition a database?
For partitioned tables, VoltDB distributes the rows across the partitions using a hash scheme. The user identifies, for each partitioned table, which column is used as input to the internal hashing function.
Back to Top![]()
How are VoltDB partitions different from sharding a traditional database?
In sharding, database partitions are actually separate, unrelated database instances. It is the responsibility of the application code to know what shard contains specific data as well as to manage the complexities of any queries that require data from multiple shards. More importantly, there is no guarantee of data or transactional consistency within the database system. All consistency logic must be written into the application. With VoltDB, the database engine transparently provides partition management, cross parition data access and full ACID-compliance across the entire database and all partitions.
Another cost of sharding is the complexity of managing the individual database instances. Backup, recovery, and all other management tasks must be performed separately for every node. With VoltDB, these management operations are managed centrally and transparently.
Back to Top![]()
Which programming languages can be used to build applications that access VoltDB?
VoltDB provides client libraries for Java, C++, C#, PHP, Python and Node.js. The VoltDB community has also developed client libraries for Erlang and Ruby, although those are not officially supported interfaces.
Back to Top![]()
What are good use cases for VoltDB?
VoltDB is used today for traditional high performance applications such as capital markets data feeds, financial trade, telco record streams and sensor-based network systems. It's also used in emerging applications like wireless, online gaming, fraud detection, digital ad exchanges and micro transaction systems. Any application requiring high database throughput, linear scaling and uncompromising data accuracy will benefit from VoltDB.
Back to Top![]()
How does VoltDB differ from MySQL used with memcached?
Memcached is a distributed in-memory cache. It provides none of the reliability or consistency of an ACID-compliant SQL database. Memcached is often used as a cache in front of MySQL to improve performance of read operations. This requires the client application to manage the hash algorithms for both memcached and MySQL, as well as to handle the chores of cache synchronization.
VoltDB automates all of these functions with none of the penalties, while providing wildly superior performance. In addition, caching can help improve read performance for products such as MySQL, but does not help scale write performance. VoltDB scales linearly for both read and write operations.
VoltDB includes a reference implementation, called VoltCache, that provides equivalent functionality to memcached. Developers familiar with memcached often use VoltCache for POCs and as a starting point for application development.
Back to Top![]()
How does VoltDB differ from Key-Value stores?
Key-Value stores are a mechanism for storing arbitrary data (i.e. values) based on individual keys. Distributing Key-Value stores is simple, since there is only one key. However, there is no structure within the data store and no transactional reliability provided by the system.
VoltDB provides the ability to store either structured or unstructured data, while at the same time providing full transactional consistency and reliability. VoltDB can even define a transaction that includes reads and writes across multiple keys. Finally, VoltDB provides comparable or better performance in terms of throughput.
Back to Top![]()
What server platforms does VoltDB support?
The target platform for VoltDB is CentOS V5.6. However, the product is designed for compatibility with any 64-bit POSIX-compliant Linux platform. Development kits are also available for Ubuntu (10.4 and later) and Macintosh (OS X 10.6). Source code and build scripts are available for those who want to build the software on other platforms.
Back to Top![]()
What SQL does VoltDB support?
VoltDB supports a subset of ANSI-standard SQL 99, including the CREATE INDEX, CREATE TABLE, and CREATE VIEW statements for schema definition and SELECT, INSERT, UPDATE, and DELETE for data manipulation. Additional SQL syntax will be added over time as the needs of users and customers dictate.
See the Using VoltDB manual for details on the specific SQL syntax that the current version of VoltDB supports.
Back to Top![]()
How do you increase the size of a VoltDB database cluster?
The size of the database cluster is defined when you compile the application catalog and start the database. To increase the cluster size, you simply need to:- Save the current database contents to disk (using the SnapshotSave system procedure).
- Edit the deployment file, specifying the increased number of cluster nodes (in the hostcount attribute).
- Restart the database cluster, using the new deployment file.
- Reload the data from disk (using the SnapshotRestore system procedure).
What is the maximum cluster size that VoltDB supports?
There is no architectural limit to the number of nodes in a VoltDB cluster. That said, people often think of performance as a comparative value proportional to cluster size. And although it is true that VoltDB's throughput scales linearly, it is also true that VoltDB's initial performance on a single node is 50 to 100 times greater than comparable database products. As a consequence, it is possible to achieve throughput rates of over a million transactions per second on a cluster with as few as 12 nodes.
VoltDB is regularly tested on and tuned for clusters of 6 to 12 nodes and has scaled linearly to 3.4 million TPS on 30 nodes. If you are considering running a large VoltDB cluster, please contact us - we'd love to help users design high-scaling VoltDB infrastructures.
Back to Top![]()
Does VoltDB come with management tools?
The VoltDB Enterprise Edition includes a browser-based management tool called the VoltDB Enterprise Manager. The VoltDB Enterprise Manager helps you deploy and control a VoltDB database in a cluster environment. You can start and stop the database, update the schema and stored procedures, and manage disk-based snapshots of the data from a single console interface. See the VoltDB Management Guide for details.
Back to Top![]()
What database monitoring tools are available?
The VoltDB Enterprise Manager provides performance and activity monitoring, in addition to its management and control functionality. The browser-based console interface provides real-time statistics on the number of records in each partition, as well as measurements of throughput and latency. For those using the Ganglia monitoring tool, the VoltDB Enterprise Manager also exports performance data to Ganglia automatically.
For those using the VoltDB Community Edition, there are system procedures that can provide similar information through the callable interface, such as @Statistics and @SystemInformation.
Back to Top![]()
Dave Morehouse
VP of Engineering
Jingit
Find out about VoltBuilder
Already tried VoltDB?
Contact Sales![]()
Want to meet other VoltDB application developers and find information you need?
Visit our Community![]()
Still have questions? We're here to help.
Call +1.978.528.4660 or drop us a line at info@voltdb.com

