We are hard at work on VoltDB and are pleased to release V9. This release focuses on new ways to work with the torrents of streaming data that VoltDB can ingest, making VoltDB the best technology for real-time intelligent decisions on streaming data. We also improved usability, resilience, and security, because we know that the data you store or stream in VoltDB is critical to your organization. Our customers use VoltDB to gain competitive advantage, building reliable low-latency, high-throughput applications that operate in always-on environments. We know you’ll like the new features in V9.
Features and Improvements to Help You Manage Your Unbounded and Streaming Data
Since the beginning, VoltDB has been a great fit for workloads sized to fit in memory (that is, bounded data). VoltDB’s distributed architecture also scales easily to multiple servers, allowing many customers to store terabytes on VoltDB clusters. But not all workloads fit in memory; many businesses have unbounded data streaming through their systems that need fast, complex, ACID-compliant (i.e. correct in the moment) decisions that return immediate results back to the application. For example, some customers use VoltDB for fraud prevention, where a decision to drop a call or reject a credit-card swipe must be made in milliseconds.
Handling unbounded data in VoltDB used to require developing your own deletion applications and procedures to remove expired data. In V9, VoltDB introduces two new ways to manage an unbounded input stream. The new TTL and MIGRATE features automate the deletion and migration of expired data, freeing developers to spend time on the code to run their business.
Automatic Data Deletion with Time to Live (TTL)
In V9, you can set a “Time to Live”, or TTL policy for a table, instructing VoltDB to delete data that has exceeded that lifetime in a way that has minimal impact on the incoming data stream. With this simple feature, you set TTL on a table and tell it the timestamp column to use. In the background VoltDB nibbles away at expired data in small transactions, guaranteeing consistency with your application transactions, and having minimal impact on the performance of your application. The timestamp used for TTL is fully under your control, allowing your application logic to make updates to “refresh” the lifespan. This powerful new feature makes it easier than ever to convert your datastream into a cache of your most recent decisions, or a session store keeping a series of session operations and states.
Automatic Data Migration – Using TTL to Move Data Out to Another System (Beta Feature)
What if you don’t want data to just go away? V9.0 has a new Beta feature, TTL plus MIGRATE, which extends the TTL policy by streaming the 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” when you go to find it, since VoltDB won’t delete it until it has safely arrived. Give it a try and let us know what you think.
Improved Visibility, Resilience and Usability for Streaming Export
As part of the new streaming export features, we’ve made a lot of changes to help you operate and manage your streaming applications.
- ALTER STREAM.
Previously you had to drop your stream and create a new one. Now you can easily make changes to a stream using ALTER – the command that makes the most sense for the changes you want to make.
- EXPORT statistics.
Monitoring export streams used to be difficult. The new EXPORT @Statistics selector now exposes row counts, block counts, status, latencies – everything you need to understand each stream and target.
- Improved fault tolerance of the export stream.
We’ve improved the resilience and durability to accommodate a wider range of system errors and make sure that your export streams always get to their destination. This includes hardening of the export overflow files, introducing gap detection and recovery in case a replica with export data crashes.
Operational Improvements in V9
In V9, VoltDB improves other parts of the system in order to make the database easier to use. You can find the details in the release notes, but here are some of the highlights that make VoltDB easier to use in more environments.
Improved Uptime During Schema Change in DR/XDCR Systems
Making schema changes when running XDCR used to interrupt client applications and require pausing the input stream. So it is possible to update the schema without interrupting ongoing transactions.
JSON API V2.0 – A Simplified JSON Data Structure
A new version of the VoltDB JSON API, version 2.0, is now available. The 2.0 API returns a compact result set that is easy for most JSON libraries to interpret.
More Places and Better Ways to Operate VoltDB
We’ve added support for deploying and running on Java 11, scripts for use in Kubernetes, an upgrade to our New Relic plugin and a whole host of other goodies to make VoltDB usable in more places.
Download VoltDB V9
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 transactional processing workloads to help our customers meet the needs of an ever-connected world.
I encourage you to take a look at our release notes to get a full view of the improvements delivered in V9. Please download VoltDB V9 and give it a try. If you have any questions about VoltDB, send us a note at email@example.com.