VoltDB 6.0 is a major release incorporating features from recent point releases plus several entirely new capabilities. The major new features in V6.0 include:
Geospatial support — New datatypes and functions to natively store and operate on geospatial locations and regions. See the chapter on "Creating Geospatial Applications" in the VoltDB Guide to Performance and Customization for details.
Cross Datacenter Replication (XDCR) — full two-way replication between databases in different locations, cities, or even countries. See the chapter on "Database Replication" in Using VoltDB for details.
"Hot" software upgrades — the ability to upgrade across two clusters using passive database replication (DR) to move the data to a new version of the VoltDB software while the database is in use. See the section on "Upgrading VoltDB Software" in the VoltDB Administrator's Guide for details.
Built-in importers and exporters — full integration of the data pipeline through use of importers for ingestion and exporters for archiving old data, all starting and stopping automatically and integrated with VoltDB's durability processes.
Improved "out of the box" experience — avoiding common first-time performance and memory glitches through new defaults and safeguards against runaway queries and unexpected memory growth.
The new features and capabilities in VoltDB V6.0 should not impact existing applications. However, there are a few changes to existing functionality that could impact applications when upgrading from earlier versions. Existing customers should take note of of the following changes:
New default query timeout
By default, VoltDB now sets a system-wide timeout for read-only queries of 10 seconds. Previously, there was no default timeout. As a result, applications that ran successfully in the past may encounter timeout errors for long-running queries.
If the new default is causing problems, you can change the default timeout in the deployment file when starting the database (or by updating a running database). Alternately, you can set a query-specific timeout by using the Java method callProcedureWithTimeout when invoking problematic queries. See the section on "Query Timeout" in the VoltDB Administrator's Guide for details.
New default memory resource limit
VoltDB also now sets a default resource limit on memory usage of 80%. If memory usage exceeds this limit, the database is set to read-only mode. The resource limit is designed to avoid the server process running out of memory and crashing. You can set a different default memory resource limit in the deployment file using the <resourcemonitor> element under <systemsettings>. However, setting a higher memory limit is not recommended. See the section on resource monitoring in the VoltDB Administrator's Guide for details.
New guard against ambiguous column references in SQL queries
Previously, it was possible to define queries with ambiguous column references — where columns from different tables or subqueries have the same name but do not include an explicit table prefix. The VoltDB planner no longer allows such ambiguous queries. You must include a table prefix for any columns that could come from more than one of the joined tables. This change is compliant with the SQL standard and consistent with other database vendors.
If your application includes queries with ambiguous column references, you will need to rewrite the queries to be unambiguous before they can be executed (or stored procedures loaded) in VoltDB 6.0 and later. See the note later in the release notes for more details about correcting ambiguous column references.