RavenDB: Setting Unrealistic Goals, Then Exceeding Them

DZone 's Guide to

RavenDB: Setting Unrealistic Goals, Then Exceeding Them

See how far RavenDB has come in terms of its latest release and some of its benchmarks, and find out where some of the biggest gains have been made.

· Performance Zone ·
Free Resource

One of the challenges in RavenDB 4.0 was the fact that I wanted to do something radically different. Over the past decade, every single release of RavenDB had improved the performance of the system, usually by some significant degree.

With RavenDB 4.0, I wasn’t willing to settle for improving performance by a few percentage points. I told my team that the goal is to improve RavenDB by an order of magnitude. In other words, I want to be 10x faster across the board.

I think that if I would have told them that I wanted 25% improvements, they would have tried very hard to get there, but a 10x perf boost was considered too out there, not possible, so not worth arguing with that crazy dude.

After the RC 2 release of RavenDB, we got the following message on the mailing list:

Lovin it :-) Just imported an old large database with insane indices (don't ask) and basically the time to import + all indices becoming none stale went from 52 min (Raven 3.5) to under 1 minute....insane.

So that is more than 52x faster, not in an arbitrary benchmark that we gamed, but a real production data and user scenario.

That single post made my day.

In a more concrete example, another user posted a comparison using Benchmark.NET of RavenDB 3.5 vs RavenDB 4.0.




LoadFullDatasets 47.535            11.38             418%
LoadDocumentsCollection 29.6 5.72 517%
LoadDocumentsCollectionFiltered             4.608 0.1604 2873%
StoreResults 8.578 2.32 370%

And any way you want to look at this, these are awesome numbers.

benchmarks ,database ,performance ,ravendb

Published at DZone with permission of Oren Eini , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}