DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

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.[01][04][06][07]

Source Code
https://github.com/VoltDB/voltdb[02]
Developer
Country of Origin
US
Start Year
2009 [24][25]
Project Type
Commercial
Written in
C++, Java
Supported Languages
C++, Erlang, Go, Java, PHP, Python
Derived From
H-Store, HyperSQL
Operating System
Linux
Twitter
@VoltDB[05]

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.[01][04][06][07]

History[04][08]


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.

The original source code was removed from GitHub is no longer available. The project is no longer considered open-source.

Checkpoints[09]


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

Concurrency Control[06][07][10]


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.

Data Model[11]


VoltDB is based on the standard relational model.

Foreign Keys[12][13]


FOREIGN KEY and CHECK are not currently supported.

Indexes[14]


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

Isolation Levels[06][07][10]


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

Joins[15][16]


Table joins are only supported if the result is smaller than 50MB. The join ordering must be specified if the query joins more than 6 tables.

Logging[17]


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.

Query Compilation[18][06]


Query Execution


Query Interface[18][11][19]


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

Storage Architecture[09]


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

Storage Model[20]


VoltDB is only designed for fast OLTP queries.

Stored Procedures[18][06]


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.

System Architecture[21][22]


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

Views[23]


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

Citations

25 sources
  1. Volt Active Data | Real-Time Decisioning Platform voltactivedata.com
  2. https://github.com/VoltDB/voltdb github.com Dead — Check Archive
  3. Volt Active Data Documentation voltdb.com
  4. VoltDB - Wikipedia wikipedia.org
  5. https://twitter.com/VoltDB twitter.com
  6. https://www.semanticscholar.org/paper/The-VoltDB-Main-Memory-DBMS-Stonebraker-Weisberg/e857a9909670b52184da9877efa207fbe2f99bcf?p2df= semanticscholar.org
  7. What's Really New with NewSQL? cmu.edu
  8. H-Store: Next Generation OLTP Database Research brown.edu
  9. Chapter 14. Saving & Restoring a VoltDB Database voltdb.com
  10. https://www.voltactivedata.com/blog/2016/02/acid-how-to-screw-it-up voltactivedata.com
  11. Using VoltDB voltdb.com Dead — Check Archive
  12. https://forum.voltdb.com/forum/voltdb-discussions/other/805-triggers-and-foreign-key-constraints voltdb.com Dead — Check Archive
  13. CREATE TABLE voltdb.com
  14. CREATE INDEX voltdb.com
  15. Guide to Performance and Customization voltdb.com
  16. SELECT voltdb.com
  17. Chapter 15. Command Logging and Recovery voltdb.com
  18. Part 5: Stored Procedures voltdb.com
  19. https://docs.voltdb.com/UsingVoltDB/DesignProcAnatomy.php voltdb.com
  20. 1.3. How VoltDB Works voltdb.com
  21. https://www.voltactivedata.com/wp-content/uploads/2017/03/hv-white-paper-voltdb-technical-overview.pdf voltactivedata.com
  22. VoltDB System Properties db-engines.com
  23. CREATE VIEW voltdb.com
  24. HPE Newsroom | HPE hpe.com
  25. On the Radar: VoltDB, Just the Latest Database Company from Mike Stonebraker - Innovation Economy - Boston.com boston.com
Revision #13