In our race to scale systems out to commodity clusters, sometimes efficiency per unit of hardware takes a backseat. Some systems are so focused on parallelism, that individual node performance is not exactly state of the art. “Just add nodes…” they say, until you’ve found yourself managing a 500 node cluster that requires constant attention.
Hundreds of thousands of durable ACID transactions, containing millions of queries and writes, run each and every second. And that’s just on our laptops.
Now take that per-machine performance and scale it to 3 nodes, or 9, or 27. Millions of transactions and tens of millions of queries per second on small clusters are achievable without extensive tuning, special hardware, or other tricks.
The techniques we use to accomplish this are described in the architecture section, but the main idea is to partition data to individual CPU cores, treat CPU cores as pipelines of single-threaded work, then work to keep the pipelines full. It’s not complex, but we’ve spent almost 10 years polishing and perfecting it.
Smarter — Not Just Faster
When many systems talk about throughput, they talk about gets and puts (and not always puts).
VoltDB assumes that most transactions are going to have multiple SQL statements. Most applications build with aggregations and atomic counters. Many need joins. Lots of apps use custom processing or complex math. A few use JSON/Geospatial/UDFs/etc.. These powerful features enable application developers to focus on their business, not in building new primitives on top of a simpler database.
Imagine you have a problem that requires 10,000 transactions per second, and generates $5,000,000 a month. To break even on the database alone, it must cost less than 0.002 US cents per transaction.
One VoltDB customer uses RFID to track the movement of every chip in a casino, looking for patterns in real time.
A second tracks mouse-movement over digital offers.
A third computes detailed request statistics for CDN traffic to enable fine-grained billing.
These use cases weren’t economical using traditional relational databases. NoSQL systems were considered, but none had the combination of strong consistency, operational simplicity, and raw hardware efficiency. VoltDB stood alone.