VoltDB

VoltDB is a commercial in-memory DBMS that is scalable and ACID-compliant. VoltDB is designed to be a NewSQL relational database to work with mainly OLTP queries. It is designed to be a distributed database with sharding and data replication. It has both a commercial version and an open-source community version.

History

VoltDB originated from H-Store, a research project from Brown U and MIT under Michael Stonebraker, Samuel Madden, Andy Pavlo, etc. In 2009, it started as a spinoff in Boston, MA.

Query Interface

SQL Stored Procedures

Apart from supporting most of the standard SQL statements, VoltDB also allows the user to define pre-compiled stored procedures.

Concurrency Control

Deterministic Concurrency Control

VoltDB schedules transactions deterministically on each partition of the data in the cluster. For transactions that span across partitions, a global serial order controller is responsible for determining the execution order. MVCC mode is only used when taking snapshots.

Indexes

B+Tree Hash Table

Apart from the default tree index, VoltDB also supports hash index.

Isolation Levels

Serializable

VoltDB supports serializable isolation level with ACID guarantee. The deterministic ordering of transactions is achieved by controllers at each data partition.

Views

Materialized Views

Views in VoltDB are materialized to improve read speed, and all updates to the original table will have a performance impact.

Stored Procedures

Supported

The stored procedure in VoltDB allows the user to define a transaction once and to be invoked later with given parameters. Stored procedures are pre-compiled to reduce execution time. Temporary queries are automatically comipled and executed as a stored procedure. VoltDB supports stored procedures written in SQL or Java.

Storage Model

N-ary Storage Model (Row/Record)

VoltDB is only designed for fast OLTP queries.

Data Model

Relational

VoltDB is based on the standard relational model.

Storage Architecture

In-Memory

VoltDB is designed to be an in-memory relational DBMS. Its data persistence is achieved by snapshots stored on disk.

Logging

Command Logging

VoltDB supports transaction-level logging for all the stored procedures that are invoked. By command logging, the amount of memory overhead is minimized since a single stored procedure invocation could contain arbitrary number of SQL statements. Only logs after the latest snapshot are kept, and the logs are flushed to the disk at a regular interval. This feature is only available in the enterprise edition.

System Architecture

Shared-Nothing

VoltDB runs on a sharded DBMS cluster. Data partitioning and replication is done automatically across the cluster

Query Execution

Tuple-at-a-Time Model

Checkpoints

Non-Blocking Blocking

The snapshot creation could either block all the other transactions or be done in a non-blocking way (e.g. Copy-On-Write).