A Transactional NoSQL Database That’s Blazing Fast
by Oren Eini
RavenDB is a Transactional NoSQL Database That’s Blazing Fast
A database without transactions is… not much of a database. ACID requirements are the gold standard for transactions and for over a decade RavenDB has offered ACID guarantees without having to sacrifice performance. An ACID Document Database is the ideal way to crunch today’s masses of complex data.
RavenDB is one the first nonrelational databases to offer ACID not just on a single value, but on multiple values throughout your database. RavenDB is a distributed database so it also offers ACID guarantees throughout your database cluster.
Your developers don’t need to carefully code around limitations in the system. They can keep using the transactional model and focus on building robust applications, delivering value to the business and not dealing with the intricacies of data storage.
RavenDB is commonly used for point of sale applications, trading systems, order fulfillment, inventory tracking, ERP applications and more.
Transactional NoSQL Database that’s Blazing Fast
Just having transactions isn’t enough if it’s at the cost of performance. In today’s environment of Big Data, consistent results that are too late are of little use. Trading algorithms need to update aggregate figures in real time, processing petabytes of trading data each moment.
Health care applications need to rapidly track test results over time and compare them to millions of similar cases to enable the doctor to best decide the next course of action. Point of sale applications need to update inventory totals, regional sales, and purchasing needs on the hour.
This requires a database that can handle massive amounts of data in real time while guaranteeing its integrity for every transaction. It must accomplish this while using up as little resources as possible to enable teams with aging hardware to be able to run this enterprise software.
In some cases, data is coming from edge points consisting of small sensors in machinery, clothing, even inside our bodies. The data is relayed to smaller servers for immediate processing. On a Raspberry PI, a $25 machine running on low powered ARM chips and a mere 1 GB of RAM, RavenDB can handle over 13,000 reads per second and over 1,000 writes per second. This is more than enough for most small to medium applications.
For larger options, whether on-premises, in the cloud, or a hybrid of both, a single machine with a price tag of less than $1,000 running RavenDB can handle over 150,000 writes per second and over million reads per second.
How RavenDB Gives You ACID Consistency with Superior Performance
Improving performance within the limits of keeping ACID consistency is just enough a challenge to get us really creative.
One of the latest improvements we made was to develop Voron, our custom-made storage engine designed specifically to maximize RavenDB performance. An in-house engine eliminates all integration issues. If something doesn’t fit right, we can remake it to fit perfectly. If the database has too much of a sharp edge, we can even tweak the database itself to make sure everything fits just right.
We took it to the next step with the transactional merger. In bundling multiple transactions to persist all at once, latency is reduced and performance zooms up by orders of magnitude.
But how can it be done while keeping Atomic promises?
We will take multiple transactions and bundle them up into a “cab.” That cab will carry your transactions to the disk as a single operation. If one part were to fail, then all the other transactions will be sent to disk individually, insuring that the failed transaction doesn’t get written to disk while all the others do. This insures atomicity while reducing the time it takes to write all the transactions to disk.
Voron and transactional mergers are a small sample of the things we have done over the years to make RavenDB both fast and ACID, enabling you to keep the best of the relational databases while moving forward to conquer today’s world of nonrelational data.