Skip directly to content

Building VoltDB Apps

Announcing VoltDB v3.0 – Preview Release

Thursday, September 27, 2012 - 12:00am

written by John Piekos on September 27, 2012

Announcing VoltDB v3.0 – Preview Release

The next major release of VoltDB, version 3.0, is right around the corner.  In anticipation of this release, we’re announcing a preview release of the v3.0 offering, available immediately.  A brief overview and details on how you can preview this exciting release is found below.
What is VoltDB v3.0?

The VoltDB v3.0 release includes a set of user-visible features, including new SQL (specifically column functions), ad hoc SQL execution performance, Export enhancements, online schema changes, and a more

Building A High Throughput Web App with Spring-MVC and VoltDB

Thursday, June 21, 2012 - 12:00am

Written by Andrew Wilson

 

My last few posts have discussed parts of a web application that integrate VoltDB into a Spring web application. Today I will show how all the pieces are put together to build a low latency, high throughput Spring-MVC application. Much of my focus will be on the data layer where VoltDB resides, but I will go all the way up to the browser too.

 

The application is simple. It has two main parts. The first is a scheduled process that casts votes into VoltDB. Those votes simulate people calling in and voting for their favorite contestant in a talent show.

JSON in VoltDB

Tuesday, February 5, 2013 - 12:00am

VoltDB 3.0 introduces the use of JSON-encoded columns to allow more flexibility in how you structure and interact with your data. New SQL functions and index capabilities let you work more naturally with JSON data while maintaining the efficiency and transactional consistency of a relational database.

How? A VoltDB JSON Example

Let’s assume that you want to implement a single sign-on (SSO) application using VoltDB.  You wish to store the login session for a set of different online sites under a common username.

Leaderboards: Optimization for Ranking-Related Queries

Friday, October 5, 2012 - 12:00am

written by Douglas Patten on October 5, 2012

My name is Xin Jia and I was one of the student interns at VoltDB this summer. For one of my projects, I worked on a feature that greatly improved the performance of ranking-related queries.

Finding the rank of an entry in a sorted list of data is a common operation in a lot of applications. Take a leaderboard within gaming application as an example: it is common to have a scoreboard that keeps track of users’ scores. Questions like, “what are the top-n users and their corresponding scores?”, or “what is the rank of a certain user?” are often

Making an Impact: VoltDB Engineering Interns

Friday, September 21, 2012 - 12:00am

written by John Piekos on September 21, 2012

Making an Impact: VoltDB Engineering Interns

Summer went by too fast in New England!  We are already missing our two engineering internship students, Xin Jia from Brown University and Zheng li from University of Massachusetts, Lowell.

During their internship, Xin and Zheng worked on numerous projects, explored new ideas, and helped accelerate the launch of product features. In short, they were big contributors to VoltDB.

MySQL to VoltDB: Experiences from the field

Tuesday, September 4, 2012 - 12:00am

Written by Andrew Wilson

 

Francis Pelland is the Technical Lead for Social Game Universe developing the next generation of The Lightning Platform. The Lightning Platform lets developers build high performance, scalable data platform and provides the management, analytics and the tools to promote and grow social games. He wrote a short guide to help his team get through the transition for PHP developers moving from MySQL to VoltDB. Here’s an excerpt:

Is there PhpMyAdmin or similar?

Yes there is! This tool is called Web Studio.

Picture it: Three Nodes, Highly Available Cluster, ~1 Million Transactions/second – with VoltDB

Tuesday, June 4, 2013 - 12:00am

written by Philip Rosegay on June 4, 2013

You’ve probably heard about the VoltDB, the super fast distributed ACID SQL RDBMS for OLTP, but you might not be aware of its throughput capabilities in detail. VoltDB achieves its high throughput by eliminating the locking and latching of conventional databases. It’s also distributed and can automatically shard your data, and it has a bunch of other really cool features that make transaction processing a snap.

We took a key­-value application and implemented it in VoltDB (the app is available with the distribution if you want to try it). We set the

Programming VoltDB – Easy, Flexible and Ultra-fast!

Monday, August 6, 2012 - 12:00am

You may believe that the only way to interact with VoltDB is through Java stored procedures. To achieve maximum throughput, VoltDB stored procedures is the way to go. You can achieve upwards of 100,000 transactions per second on a single node.  However, you can also achieve significant throughput by interacting with VoltDB conversationally, through ad hoc SQL statements, avoiding the need to pre-compile stored procedures.

 

This blog will discuss several approaches to interacting with VoltDB programmatically and cover the performance, in terms of transaction throughput, that you should expect

Recap of VoltDB for SQL Devs Webinar

Tuesday, July 31, 2012 - 12:00am

written by Ben Ballard on July 31, 2012

We had a great turnout for the VoltDB for SQL Developers webinar on July 19th. The audience was engaged and asked many good questions.  We had attendees from all over the US, Canada and Germany.  I’d like to thank all those who attended and asked questions, and those who have contacted us since then with additional questions and feedback.

There were several questions in particular about partitioning and working with stored procedures, which hit upon what I think are the two most important concepts.

Partitioning enables scalability and throughput, by

Scaling with VoltDB: The Clustered Database

Wednesday, January 9, 2013 - 12:00am

This is part 2 (of 2) of my Programming VoltDB – Easy, Flexible and Ultra-fast series. Blog post, part 1, showed how to build a VoltDB application using ad hoc queries and achieving thousands of transactions a second. It also showed how converting that logic to use VoltDB stored procedures allowed you to parallelize query execution and achieve 100,000+ transactions a second on a single node. In this blog post I’ll talk about scaling beyond 100,000 transactions per second by creating a VoltDB clustered database.

 

There are primarily two reasons why you would want to run VoltDB as a clustered

Simplify Your Stored Procedure Logic with Expectations

Monday, December 3, 2012 - 12:00am

written by Andrew Wilson on December 3, 2012

John Hugg was talking with me today about a way to reduce the complexity of error checking in a stored procedure and how rarely it is used. VoltDB’s stored procedures let you set “expectations” on each SQL statement. Those expectations can eliminate several lines of code leading to shorter, readable and more reliable stored procedures.

Consider the following sample:

Example.DDL

CREATE TABLE user_table (

user_name        varchar(200)        UNIQUE NOT NULL,

  password         varchar(100)        NOT NULL,

  CONSTRAINT user_name_idx PRIMARY KEY

 

Stonebraker Live! – Tonight!

Tuesday, January 29, 2013 - 12:00pm

written by VoltDB Team on January 29, 2013

Register nowto join us via live streaming!

Can’t make it to Santa Clara tonight? That doesn’t mean you can’t attend Stonebraker Live!

 

Join us via live stream at 6:30 p.m. Pacific to hear from database legend Mike Stonebraker, as well as VoltDB’s VP of Market Strategy, Mark Hydar, and Co-founder, Scott Jarr.

 

Upserts in VoltDB

Friday, November 16, 2012 - 12:00am

written by Andrew Wilson 

 

The idea behind an upsert is that you try an update or an insert query first and if it fails, you then do the other query.

Why do an upsert? Upserts tend to be very fast in traditional databases because they can execute in as little as one query or as many as two. Consequently, a good upsert strategy has only two defined queries (insert and update) rather than three (insert, update and select). More importantly, “upsert” itself can be a keyword in which the database understands that it is responsible for figuring out whether to update or insert a record.

Using the Spring @Schedule Annotation

Wednesday, May 30, 2012 - 12:00am

Written by Andrew Wilson

 

In a previous life I had a requirement that a web application scanned the expiration date of purchased content and sent one of three emails letting the user know that the item would expire soon, was going to expire very soon and that the item has expired. It fired up at early in the morning when the server had the lowest utilization. Later, I had to write a similar feature that would run every couple of minutes. It wasn’t terribly hard to implement the logic, but the scheduler was an external component that required much more work to configure than I would have liked.

Using the Spring Converter API with VoltDB Data Objects

Wednesday, June 20, 2012 - 12:00am

Written by Andrew Wilson

 

Mapping one type to another is a pretty common task. Hibernate and other ORM’s map a result from a data source’s native representation to an application specific representation. In English, I want to convert a JDBC result set, or data objects, into a collection of POJOs (plain old Java objects) using some kind of data mapping tool or API.

VoltDB client for the Go Language

Monday, October 29, 2012 - 12:00am

written by Ryan Betts on October 29, 2012 

A while ago I published my Go VoltDB driver to github (https://github.com/rbetts/voltdbgo).  I wrote the driver for three reasons: to learn and write a little go; to be able to test and script against VoltDB using go; and to experiment with some different VoltDB client patterns.

We, and the community, have written several production quality drivers for VoltDB (available at https://www.voltdb.com/download). The go driver, however, has not been tested for production use.

With caveats complete, what’s up with voltdbgo?

Firstly, it only supports

VoltDB Explain Plan Command and Planner Testing Tool

Wednesday, September 12, 2012 - 12:00am

written by Douglas Patten on September 12, 2012

My name is Zheng Li, a UMass Lowell graduate student. I spent the summer as an internship at VoltDB. Over the summer, I primarily worked on two VoltDB features, both related to query plans. The features are:

  1. Explain plan command
  2. Planner testing tool

query plan is an ordered set of steps used to access or modify information in a SQL relational database management system (see http://en.wikipedia.org/wiki/Query_plan).  Understanding query plans is important because the first plan chosen to execute will directly affect the query execution

VoltDB in-memory database achieves best-in-class results, running in the cloud, on the YCSB Benchmark

Wednesday, May 7, 2014 - 9:00am

The development team at VoltDB recently ran VoltDB v4.2 against the Yahoo Cloud Serving Benchmark (YCSB), an industry-standard performance benchmark for cloud databases. We ran our test on as realistic a cluster setup as possible: commodity hardware that we could easily book as spot instances on EC2, with features like durability and high availability enabled. And we ran a varied mix of workloads with realistically sized, 1 KB rows, rather than focusing on a specific, overly favorable use case.

VoltDB – Simplified CSV Loader

Thursday, August 23, 2012 - 2:30pm

written by Douglas Patten on August 23, 2012

My name is Xin Jia, a Brown University student, and I’ve spent the summer interning at VoltDB. One of the first projects that I worked on this summer was a CSV Loader with fellow intern Zheng Li.

Prior to VoltDB 2.8, loading data from CSV files into the database could be a challenging task, especially for newcomers. There were a few steps that needed to be taken: you would need to write a client program to parse the CSV data, handle errors and ultimately invoke a stored procedure to insert the data into the database.

What’s the plan?

Tuesday, May 7, 2013 - 12:00am

written by Ruth Morgenstein on May 7, 2013

“Why is this so slow?” Have you put your application into testing (you did this before going to production, right?) and wondered why you’re not getting VoltDB’s world-class performance? The problem might be with the SQL execution plan.

This article shows you how to look at the SQL execution plans and use the information to tune your application.

Getting the plans at compile time

In VoltDB, you can get execution plan information when you compile your stored procedures or later, when the database is up and running. When you build the application

Writing VoltDB Apps in Java Q & A

Friday, October 5, 2012 - 12:00am

written by Andrew Wilson on October 5, 2012

NewSQL and NoSQL databases present developers with a new and interesting programming model where there are fewer connections to the database, query parallelism, partitions and an easy model for supporting new clusters. Last month I presented a webinar introducing the basics of application development using VoltDB. We had a lot of great questions and I thought it would be handy to write them up and share the answers with everyone.

Q: Can you address how you would handle joining tables that have different partition keys?