VoltDB Enterprise Edition
3.3
May 22, 2013
This document provides information about known issues and limitations to the current release of the VoltDB Enterprise Edition. If you encounter any problems not listed below, please be sure to report them to support@voltdb.com. Thank you.
The Enterprise Edition contains all of the capabilities and components available in the Community Edition, plus additionally licensed features designed for enterprise customers. In particular, the Enterprise Edition includes:
VoltDB Enterprise Manager, a web-based management console for creating and managing VoltDB database clusters
A REST API for managing databases programmatically
Command logging
Database replication
Live rejoin
The VoltDB Enterprise Edition installs in the same way the VoltDB Community Edition installs, by unpacking a tar/gz
archive. The Enterprise Edition tar file is LINUX-voltdb-ent-3.2.1.tar.gz and unpacks into a folder
called voltdb-ent-3.2.1. For example:
$ tar -zxvf LINUX-voltdb-ent-3.2.1.tar.gz -C $HOME
Note that the Enterprise Edition is self-contained; you do not need to install the the Community Edition first.
The VoltDB Enterprise Edition is commercially licensed software. When you purchase the Enterprise Edition, you will be provided with a license file that must be installed before you can use the Enterprise Manager. See the section called "Applying Your Enterprise License" in the VoltDB Management Guide for instructions on how to apply the license you receive.
The recommended platform for production use of VoltDB is CentOS 5.8 or later, CentOS 6.3 or later, Ubuntu 10.4 or 12.4, and Sun JDK 6 Update 21 or later. Macintosh OSX 10.6 and later is supported as a development platform. However, there are certain configuration options in the base platforms that are important when running VoltDB.
When upgrading from a previous version of VoltDB — especially with an existing database — there are a number of important notes that you should be aware of. Some changes to the structure and syntax of the VoltDB schema and deployment files may make old application catalogs and configuration files incompatible with newer versions.
Although incompatible changes are avoided wherever possible, some changes are necessary to add new features. It is always recommended that applications catalogs be recompiled when upgrading the VoltDB version. It is also important to note that the catalog is saved as part of snapshots and command logging. As a consequence, you must be careful to ensure an incompatible catalog is not loaded accidentally by starting a database with the recover action after an upgrade.
The process for upgrading VoltDB for a running database is as follows:
Place the database in admin mode using the @Pause system procedure (or VoltDB Enterprise Manager).
Perform a manual snapshot of the database (using @SnapShotSave).
Shutdown the database (using @Shutdown).
Upgrade VoltDB.
Recompile the application catalog using the new version of VoltDB.
Restart the database using the create option, the new catalog, and starting in admin mode (specified in the deployment file).
Restore the snapshot created in Step #2 (using voltadmin restore).
Return the database to normal operations (using voltadmin resume).
When using the Enterprise Manager, it is also recommended that you delete the Enterprise Manager configuration files
(stored by default in the .voltdb subfolder in the home directory of the current account) when performing
an upgrade.
Users of previous versions of VoltDB should take note of the following changes that might impact their existing applications.
All existing VoltDB users are strongly recommended to upgrade to version 3.2.0.1 or later at their earliest possible convenience. These releases contain two major fixes:
A race condition was discovered as part of our ongoing internal stress tests. The issue, which could impact procedure invocation and exists in all versions prior to 3.2, is not known to have been encountered "in the wild". However, the potential consequences are severe enough that we recommend all users upgrade as soon as possible.
A problem exists in previous releases related to the use of live schema updates. If the new schema adds or removes columns from a unique index, the update can cause the database to stop running and make the command logs unusable for recovery.
For users of pre-3.0 releases of VoltDB who cannot or do not wish to upgrade to the latest version, a patch, version 2.8.4.5, correcting these issues will be made available shortly. The patch will be announced on the VoltDB web site in the news & announcements forum.
1. Release V3.3 | |
1.1. | Non-Blocking Statistical System Procedures |
Previously all VoltDB system procedures operated as database transactions. That is, system procedures executed as multi-partition transactions with two consequences:
Since statistical procedures do not change the state of the database, they are now executed separately from database transactions. This applies to the system procedures @Statistics, @SystemInformation, and @SystemCatalog. The consequences of this change are that the statistical system procedures have significantly less impact on database performance and, although the resulting statistics are not transactionally exact, they are an accurate reflection of overall database performance at the time the procedure executes. More importantly, it is now possible to get information about database operations even when an errant stored procedure or server is blocking other database operations. | |
1.2. | Outer and Explicit Joins |
VoltDB now supports outer and explicit joins. Previously, all joins were implicitly inner joins (using a comma-separated list of table names). You can now use explicit join syntax to specify either inner or outer joins on specific columns using the ON or USING clause. The new syntax for the SELECT statement is as follows:
For this initial release, outer joins support the joining of two tables only. Explicit and implicit inner joins support joining more than two tables. | |
1.3. | Improved String Parsing in Web Studio |
Web Studio allows you to invoke stored procedures on a running database, entering procedure arguments as text. Previously, Web Studio had some difficulty parsing strings containing multiple embedded quotation marks. Argument parsing has been enhanced to support arbitrarily complex strings. | |
1.4. | Planner Improvements |
This release includes a number of improvements to the planning of SQL statements. In particular, improvements have been made to how indexes are applied under various conditions. | |
1.5. | VoltDB Enterprise Manager Network Interface |
For systems with multiple network interfaces, the VoltDB Enterprise Manager automatically listens to the specified
port on all interfaces. You can now tell Enterprise Manager to use only one interface by specifying the IP address on
the command line with the $ ./enterprise_manager.sh -p 8989 -a 10.12.14.16 | |
1.6. | Security Settings in VoltDB Enterprise Manager |
To enable security using VoltDB Enterprise Manager, you must check the "Enable Security" checkbox on the Create/Edit Database dialog and you must upload a deployment file containing user account definitions. In previous versions, any subsequent changes to the database configuration would silently remove the user definitions. You had to upload the user definitions every time you modified the configuration to keep the user definitions active. This bug has been fixed. Enterprise Manager now maintains the last uploaded user definitions when other configuration changes are made. To change the user definitions after they have been uploaded you must explicitly upload a new deployment file containing only the user definitions that you want to use. | |
2. Release V3.2.1 | |
2.1. | @SnapshotStatus Reports on all Cluster Nodes |
Previously, the @SnapshotStatus system procedure only returned results for the server processing the request, not all nodes in the cluster. Starting with this release, a call to @SnapshotStatus returns status information for all nodes in the cluster. | |
2.2. | Obfuscating Passwords in the Deployment File |
By default, when enabling security the deployment file contains definitions of users and passwords. These definitions are included as plain text. If your environment or operating procedures require the deployment file to be secured against observation, you can preprocess the file to obscure the passwords using the voltdb mask command. These processed deployment files can then be used to start the VoltDB database. The syntax for the voltdb mask command is as follows: $ voltdb mask deployment-file [new-deployment-file] If you specify one file name, the file is processed in place. If you specify two file names, the first is used as the input file and the second as the output file. The processed deployment file contains an additional attribute on the <user> tag, plaintext="false" indicating to the VoltDB server that the passwords have been obscured. | |
2.3. | Improved Compiler Annotations |
When VoltDB compiles the database schema, it displays a summary of the stored procedure queries as part of the compiler output. This output includes annotations identifying the type of procedure (read vs. write and single vs. multi-partitioned), potentially slow queries due to a sequential table scan, and possible dangers introduced by non-deterministic output. Several of these annotations have been changed to improve readability. The read/write annotation has been changed to [READ] and [WRITE] and [Seq] has been changed to [TABLE SCAN]. | |
2.4. | Improved Catalog Difference Report |
When replacing the catalog on an existing database, the VoltDB Enterprise Manager displays a list of differences between the two catalogs to help you verify the changes are correct. Previously, the report only identified added or removed tables and procedures. The report now also identifies tables and procedures that have been modified, changes to security settings, and the requirements for the update. That is, whether the database must be stopped and restarted or the update can be done while the database is running. | |
3. Release V3.2.0.1 | |
3.1. | Correct Live Schema Updates that Change Unique Indexes |
This release fixes a critical bug where updating the schema "on the fly" could cause the database to stop and make the command logs unusable for recovery. The issue only affects application catalogs that change a unique index by either adding or removing columns from the unique index (or primary key). Because of the seriousness of this bug, all users are strongly urged to upgrade to the latest version at their earliest possible convenience. Until you upgrade, avoid updating the database catalog while the database is running if the update changes unique indexes. Note this issue only affects live updates. You can still update the schema using a maintenance window by performing the following sequence of commands: save, shutdown, create and restore. | |
4. Release V3.2 | |
4.1. | Enhanced Support for Live Schema Updates |
It is now possible to make many more changes to the schema "on the fly" — while the database is running — than in previous versions. You can now add, delete, or modify columns and indexes as well as tables. The only remaining limitations are that you cannot add a new constraint to an existing column or index and you cannot modify the definition of an existing view. (However, you can add and remove views.) With this new functionality, the ability to perform line schema changes becomes a commercial feature. In other words, starting with V3.2 the @UpdateApplicationCatalog system procedure and the voltadmin update command are available in the Enterprise Edition only. | |
4.2. | Improved Performance and Resilience of Catalog Updates |
In addition to new capabilities in live schema updates, the updates themselves have been improved in terms of performance and resilience to node failures. Updates to large catalogs, especially those with many stored procedures, are significantly faster than in previous versions. In addition, the update process has been hardened to avoid problems if a node fails during an update. Warning concerning previous versions: If you perform catalog updates using previous versions of VoltDB, it is recommended that you take a snapshot prior to and immediately after the update as a precaution in case of database failure. Command logs and other durability features may be in an inconsistent state following a catalog update and before a new snapshot is taken. This issue is corrected in the current release. | |
4.3. | New Return Status for Snapshot Restore |
It is possible for a snapshot restore (using the voltadmin restore command or @SnapshotRestore system procedure) to partially succeed. For example, if the schema has changed since the snapshot was created or some snapshot files are missing, only part of the data may be restored. Previously, this condition was reported as success with details about what succeeded and what failed in the VoltTable response. To avoid confusion with a complete and successful restore, this function has been changed to report an error, OPERATIONAL_FAILURE, if one or more tables or partitions are not restored. | |
4.4. | Change to the Default Heartbeat Timeout |
The default heartbeat timeout has been increased from 10 seconds to 90 seconds. In production, it has been found that network and process contention issues can make VoltDB mistakenly exceed the 10 second timeout, resulting in still functioning nodes being timed out. As a result, the default has been increased. A consequence of this change is that it will now take longer for actual node failures to be recognized by the rest of the cluster, potentially stalling transactions until the failure is detected. You can change the timeout period using the <heartbeat> element in the deployment file or in the configuration dialog of the VoltDB Enterprise Manager. See the appendix on server configuration options in the VoltDB Management Guide for details. | |
4.5. | Bug Fixes |
The following issues have been fixed:
| |
5. Release V3.1 | |
5.1. | Database Replication Support. |
V3.1 includes production-ready support for Database Replication (DR). The changes to transaction coordination introduced in V3.0 required a significant rewrite of the DR functionality. As a result, the initial V3.0 release included a beta release of DR only. This release returns DR to full operational status. Users who stayed with earlier VoltDB releases to use DR in production are now encouraged to upgrade to V3.1. | |
5.2. | New CAST() Function |
V3.1 introduces a new function, CAST(), that lets you convert the datatype of an expression. CAST() can be very useful when performing operations on column values or function results that are not in the appropriate datatype. For example, you can use CAST() to convert the results of the FIELD() function, which always returns a string, to a numeric datatype. See Using VoltDB for more information. | |
5.3. | Additional JSON Functions |
V3.1 also includes additional functions for traversing JSON data. The ARRAY_LENGTH() and ARRAY_ELEMENT() functions return the number of elements in a JSON array and a specific element from that array, respectively. These functions can be combined with other functions to retrieve specific items within the JSON structure. For example, to following SQL fragment retrieves the first element of an array in the JSON field named "options" from the column JSONDATA: SELECT ARRAY_ELEMENT(FIELD(JSONDATA,"options"),0) AS first_option See Using VoltDB for more information on using these functions. | |
5.4. | Changes to Log4J Components |
The Log4J messages generated by VoltDB have been reorganized. Messages previously logged under the JOIN component are now logged under REJOIN and a new logger, SNAPSHOT, has been added for logging snapshot activity. | |
6. Release V3.0 | |
6.1. | New Transaction Coordination Architecture |
VoltDB 3.0 includes a new transaction coordination architecture that reduces latency and improves transaction throughput. Some of the benefits of VoltDB 3.0 include lower overall latency, higher throughput, and reduced dependency on NTP. | |
6.2. | Simplified Design and Development Process |
V3.0 integrates much of the database configuration information into the schema, eliminating the need for a separate project definition file. Features that can now be defined in data definition language (DDL) include:
In addition, several new command line tools make the development process simpler and more consistent. New shell commands for compiling, starting, and managing VoltDB databases include voltdb, voltadmin and sqlcmd. | |
6.3. | Other New Features |
In addition to improvements in transaction coordination and the development process, a number of new functional capabilities have been added. New features include:
| |
6.4. | Special Considerations for Existing Customers |
Users of earlier versions of VoltDB should be aware of the following changes in behavior that could impact their applications:
| |
The following are known limitations to the current release of VoltDB. Workarounds are suggested where applicable. However, it is important to note that these limitations are considered temporary and are likely to be corrected in future releases of the product.
The following notes provide details concerning how certain VoltDB features operate. The behavior is not considered incorrect. However, this information can be important when using specific components of the VoltDB product.
The Tao of VoltDB
The 5 Principles of VoltDB
VoltDB Technosphere
Products and Solutions
Technical Support
Key Features
Download VoltDB
No Limits
VoltDB Application Gallery
Infinite Possibilities
VoltBuilder Program
