We’re happy to announce the release of VoltDB V9.2. In this release, we introduce features that will speed up your development and deployment cycle and give you even more flexibility in application development.
Automate From Within VoltDB: Scheduled Tasks and Directed Procedures (Beta)
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. In V9.2 we make 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.
For example, to create an hourly report of users’ funds in their active accounts, you could schedule a task to run on each partition to write the totals to an export stream.
Step 1: Create a directed procedure that can roll up the account totals
CREATE PROCEDURE AccountRollupExport DIRECTED AS INSERT INTO user_totals_stream (status, userid, accounts_total) SELECT CAST(? AS VARCHAR(2)), userid, sum (account_balance) FROM bank_accounts WHERE account_status = ? GROUP BY userid;
Step2: Create an hourly task to run that procedure
CREATE TASK ReportTask ON SCHEDULE EVERY 1 HOURS PROCEDURE AccountRollupExport WITH ('A','Active') ON ERROR LOG RUN ON PARTITIONS;
Coming Soon: Customizable Scheduling
In the next release we will introduce customized scheduling that allows for more flexible logic for schedules. A customized task schedule can use the results of the last run(s) to influence future decisions. Customizations fall into three areas:
- Customize the schedule.
The cron-type scheduling is very flexible, but sometimes you need something more. For example, you could write a custom scheduler that has a ‘holidays list’ and will postpone jobs by a day if they fall on a holiday.
- Customize the procedure calls.
The built in schedulers will always use the same procedure and call it with the originally specified inputs, but you might want to check the return values from previous procedure calls to change inputs to the next run or change the procedure that gets run. As an example, a ‘batchupdater’ task could check the number of rows that were updated in the last call and make subsequent calls with a larger or smaller ‘batchsize’ input for the next run.
- Customize both schedule and procedure calls.
You can fully customize both schedule and calls in order to implement sophisticated workflows and schedules. With full customization, the ‘batchupdater’ task could vary both the batch size and frequency of the call. It could even implement a full workflow to call multiple stored procedures.
If you would like early access to the customization functionality or a demo, please email us at support [at] voltdb.com.
Other v9.2 Features
- TABLE EXPORT – General Availability – streaming export of table updates, deletes and inserts.
- Scheduled Tasks (Beta) – run stored procedures on a schedule.
- Directed Procedures – partitioned procedures that can be called by Scheduled Tasks to run on each partition.
- User-defined Aggregate Functions (Beta) – define your own function that can process data on multiple rows and return aggregated values.
- SQL Queries on Statistics (Beta) – Filter, group and join your @Statistics calls using the power of SQL.
For a full list of V9.2 features and fixes, visit our Release Notes. If you have questions or feedback, drop a note to info [at] voltdb.com.
Download VoltDB V9.2
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.
We encourage you to take a look at the release notes to get a full view of the improvements delivered in V9.2. Download VoltDB V9.2 and give it a try. If you have any questions about VoltDB, send us a note at support [at] voltdb.com.