I’m happy to announce the release of V9.1. In this release, we’ve simplified the integration of VoltDB into your application stack by adding more functionality to streaming export. In addition, we’ve made VoltDB clusters easier to manage by allowing you to add or remove node “on the fly” without any downtime.
Adding VoltDB to your Application Stack — Improvements to Streaming Export
We know that VoltDB fits in a large infrastructure stack where it is not the only datastore. In this release, we’ve added support for common export patterns, making it simpler than ever to integrate VoltDB into your stack, speed up your development cycle and assure delivery of data to other systems.
MIGRATE Using Time To Live (TTL) — Move Data To Another System on Expiration
TTL plus MIGRATE allows you to stream rows that have expired to an external export target (such as another database, or HDFS). Once the migrated data is acknowledged by the downstream system, VoltDB automatically deletes the rows.
For example, you could keep 24 hours of data in VoltDB, set a TTL with MIGRATE to send the data out to your big data store, knowing that even if the network link goes down, or a system is down for maintenance, the data will not be lost “in flight”. Your data is always available for your application to query because VoltDB won’t delete it until it has safely arrived elsewhere.
Note: If you tried the V9.0 Beta of this feature, you will need to make adjustments to your DDL for V9.1. See the Release Notes for more information.
MIGRATE SQL statement — Move Data to Another System Whenever You Want
TTL is only one way to decide which data to migrate. With the new ‘MIGRATE FROM table’ statement, you can use any WHERE clause to initiate a migration with a filter of your choice. As in TTL, migrating data will be streamed to an external export target, then deleted once the data is acknowledged. You can even call this statement from within a stored procedure, utilizing the full power of both Java and SQL to write your application logic.
The MIGRATE SQL statement allows for logic that is much richer than a simple time-based TTL field. For example, a table tracking user sessions, could migrate user sessions that have not been used recently and are not part of a test data set:
MIGRATE FROM user_session WHERE session_end > ? AND user_role != ’TEST’ AND NOT MIGRATING;
Better yet, this statement can be used in a single-partition stored procedure that is called periodically with callAllPartitionProcedure() to run independently on each partition, incrementally and reliably cleaning up old records without interrupting ongoing transactions.
TABLE EXPORT – Export Information About Table Changes (Beta feature)
It is now possible to directly connect a table to an export target using “EXPORT TO TARGET” when creating a table. This sets up a stream in the background that can get information about table changes and be configured to trigger on inserts, updates (both before and after records) and deletes. By default, only INSERT statements will be streamed.
This can simplify application development. Many customers have asked for a way to INSERT into a STREAM and a TABLE with a single SQL statement. With TABLE EXPORT, you no longer need to write a stored procedure to do this.
You can also stream more complex information. For example, another system, could be notified of new or deleted user records.
CREATE TABLE user EXPORT TO TARGET useraudit ON INSERT, DELETE ( username VARCHAR(128), id BIGINT, lastlogin TIMESTAMP );
See the description of the CREATE TABLE statement in the Using VoltDB manual for more information about associating tables with export targets.
Elastic Cluster Shrink — Reduce the Size of a Running Cluster
VoltDB now allows both elastic expansion and reduction of a cluster. This enables you to resize your cluster while staying operational. During an elastic operation, VoltDB will add or remove partitions and move data seamlessly while staying online and handling ongoing transactions.
Download VoltDB V9.1
We continue to enhance VoltDB streaming to handle the use cases of the future, and improve the flexibility, reliability, and security of VoltDB. V9 delivers high-performance with predictable low-latency on a range of streaming and transaction processing workloads to help our customers meet the needs of an ever-connected world.
I encourage you to take a look at the release notes to get a full view of the improvements delivered in V9.1. Please download VoltDB V9.1 and give it a try. If you have any questions about VoltDB, send us a note via the email address: info [at] voltdb.com.