VoltDB FAQs

The following are frequently asked questions about VoltDB.

1. General Information
1.1. What is VoltDB?
1.2. What is the architecture of VoltDB?
1.3. How is ACID-compliance achieved?
1.4. How is scalability achieved?
1.5. How does VoltDB partition the database?
1.6. How are VoltDB partitions different from sharding a traditional database?
1.7. What is a good use case for VoltDB?
2. Competitive Information
2.1. How does VoltDB differ from sharding MySQL?
2.2. How does VoltDB differ from MySQL used with memcached?
2.3. How does VoltDB differ from a Key-Value Store (such as Cassandra)?

1. General Information

1.1. What is VoltDB?
1.2. What is the architecture of VoltDB?
1.3. How is ACID-compliance achieved?
1.4. How is scalability achieved?
1.5. How does VoltDB partition the database?
1.6. How are VoltDB partitions different from sharding a traditional database?
1.7. What is a good use case for VoltDB?

1.1.

What is VoltDB?

 

VoltDB is a SQL RDBMS for database applications that have extreme transaction processing (XTP) workloads and require:

  • Orders of magnitude better performance than conventional DBMS

  • Linear scalability

  • SQL as the DBMS interface

  • ACID transactions to ensure data consistency and integrity

  • High availability 24x7x365

1.2.

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 and using parallel single-threaded processing to ensure transactional consistency while avoiding the overhead of locking, latching, and resource management seen in traditional database systems.

1.3.

How is ACID-compliance achieved?

 

ACID stands for Atomicity, Consistency, Isolation, and Durability — four characteristics that are considered necessary to ensure that database transactions are processed reliably.

  • Atomicity: VoltDB defines a transaction as a stored procedure, which either succeeds or rolls back before any other transaction is processed.

  • 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. (No concurrency within a given partition.)

  • Durability: VoltDB provides both replication of partitions (known as K-safety) and periodic database snapshots to ensure the availability of the data.

1.4.

How is scalability achieved?

 

VoltDB automatically partitions database tables across the available cluster nodes. Both the capacity and performance of the database can be increased by adding nodes to the cluster. VoltDB automatically redistributes the partitions to the new configuration when you reload the data.

1.5.

How does VoltDB partition the database?

 

VoltDB distributes the rows across the partitions using a hash partitioning scheme. The user identifies, for each partitioned table, which column is used as input to the internal hashing function. Note that not all tables have to partitioned; you can choose to replicate smaller lookup (read-intensive) tables.

1.6.

How are VoltDB partitions different from sharding a traditional database?

 

In sharding, the database tables are also partitioned. However, the partitions are actually separate, unrelated databases and it is the responsibility of the application code to manage the shards. More importantly, there is no guarantee of data or transactional consistency except whatever logic your application provides. With VoltDB, the database engine provides 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 coordinated centrally.

1.7.

What is a good use case for VoltDB?

 

VoltDB is an OLTP (online transaction processing) database focused on maximizing throughput. It is well suited for applications requiring high transaction volumes. This includes traditional OLTP applications such as financial and retail processing systems as well as modern applications that need to scale rapidly — as is true of many web 2.0 applications.

2. Competitive Information

2.1. How does VoltDB differ from sharding MySQL?
2.2. How does VoltDB differ from MySQL used with memcached?
2.3. How does VoltDB differ from a Key-Value Store (such as Cassandra)?

2.1.

How does VoltDB differ from sharding MySQL?

 

VoltDB is designed from the top down to maximize parallelism and to abstract the partitioning from the client application. Sharding MySQL requires the client code to manage and access the individual shards as separate databases.

Horizontal partitioning is integral to VoltDB -- not a performance trade-off forced on application designers in exchange for loss of ACID-compliance, manageability, and increased complexity in the client application. Equally important, for OLTP applications, VoltDB provides significantly greater throughput than MySQL on comparable hardware configurations.

2.2.

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 frequent transactions. But this requires the client application to manage the hash algorithms for both memcached and MySQL, as well as all of the transactional consistency and reliability between the two systems and across the cluster.

VoltDB automates all of these functions with none of the penalties, while providing similar or better 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 performance.

2.3.

How does VoltDB differ from a Key-Value Store (such as Cassandra)?

 

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, reliability, and standard data access syntax through ANSI SQL. 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.

Last updated: April 8, 2010.