VoltDB has just released V10 – a momentous milestone in our evolution from a very fast, highly-available ACID database to a complete fast data solution. Built to handle the streaming use cases of today and the future, V10 delivers high-performance with predictable low-latency on a range of streaming and transactional processing workloads. A stable, scalable platform for millisecond decisions driving real-time actions, V10 continues our commitment to helping customers meet the needs of an ever-connected world.
Kubernetes Operator for VoltDB
VoltDB Operator for Kubernetes and VoltDB Enterprise Container – VoltDB built a custom Kubernetes Operator and Helm charts that can configure and start a cluster, recover nodes and recover clusters. With these pieces, you can easily deploy VoltDB into a variety of cloud or on-premises Kubernetes environments. Helm allows for easy configuration management for a single cluster, or for 2 or more clusters connected using Cross-DataCenter Replication (XDCR).
The VoltDB Operator supports XDCR with two networking options: node ports or a service mesh. Kubernetes Node Port is a convenient method for allowing two clusters in different data centers to talk to each other. Most customers will not do this in production, as it bypasses some security settings. The VoltDB Operator also supports using a Service Mesh to allow each VoltDB cluster to route to the other data center. In this mode, a Service Mesh product, such as Consul is used to find the routes – and once established, all VoltDB XDCR traffic is direct between the data centers.
VoltDB Prometheus Agent and VoltDB Prometheus Container. VoltDB has added a Prometheus monitoring agent. Many customers have settled on Prometheus or compatible time-series databases to collect statistics about their servers and services. VoltDB now ships an agent that can be launched manually, or a containerized version that you can easily deploy into Kubernetes.
Improved Streaming Scalability and Stability
We’ve re-engineered the Streaming Export subsystem in order to improve its reliability and performance. With all the new streaming features introduced in earlier versions (TTL Migrate, Export Tables, Alter Stream, configurable flush intervals, configurable thread pools), it was time to overhaul the foundations for the real-time streaming of your fast decisions in VoltDB . As part of this overhaul we greatly increased throughput by improving the efficiency of thread management. These improvements to streaming are also available in the V9.3 LTS release.
Improved Uptime when Transactions Result in Differences between Replicas
VoltDB is designed to be highly-available with synchronous replication within a cluster (k-safety) and will always maintain data consistency. That is, in the CAP Theorem, a single VoltDB cluster is a CP system: partition-tolerant and always consistent. In other words, prior to V9.3, when VoltDB detected a consistency error, it could stop the database to avoid data corruption.
In V10, VoltDB will no longer shut down automatically when inconsistency is detected. If you’ve ever seen the dreaded “FATAL: Hash Mismatch” error you know what this is. VoltDB checks a hash of all the SQL queries, inputs, and results for transactions run on the partition replicas. When divergence is detected, previous versions of VoltDB brought down the whole database in order to preserve data consistency. In V9.3, VoltDB now closes extra data replicas, keeping the database running in a degraded, single-replica state. Availability is preserved, with no compromise to durability, performance, or consistency. This gives your team the ability to fix the non-deterministic code and restore the database to high-availability on your timetable. This improvement to VoltDB is also available in the V9.3 LTS release.
Automate From Within VoltDB: Scheduled Tasks and Directed Procedures
Many applications and business processes require regularly scheduled jobs to run: to do cleanups, expirations, run reports, update external systems etc. This is not hard to do in VoltDB, but could require a developer to write a separate program to complete the task. Or perhaps an operator-scheduled a cron job to call a stored procedure through the REST interface. VoltDB makes this much, much easier by introducing two new features:
- Scheduled Tasks – a way to call a stored procedure at regular intervals, with fixed delays between runs, or by specifying a cron-style schedule.
- Directed Procedures – a new type of procedure that runs as a separate transaction on each VoltDB partition without having to specify a partition key in the call.
With these two new features, you can have VoltDB schedule and manage tasks. And, like everything in VoltDB it guarantees high-availability; if a node goes down, the schedule will continue running from another node.
The task scheduler is also fully programmable. Custom task schedulers allow you to create flexible logic for repetitive tasks. A customized task schedule can use the results of the last run(s) to influence future decisions, allowing creation of complex workflows by customizing the schedule, the procedure calls, or the parameters.
Try V10 and the new VoltDB Operator for Kubernetes
We continue to improve the flexibility, reliability, and security of VoltDB, to help our customers automate real-time decision making, based on the insight derived from a wide variety of fast data. V10 delivers high-performance with predictable low-latency on a range of streaming and transactional processing workloads.