Articles

Learning over the holidays: Yet Another Bug Tracker sample app

3 minutes
If you are reading this blog, I assume that you are a like-minded person. My idea of relaxation is to sit and write code. Hopefully on something that I’m not familiar with. I have many such blog post series covering topics I care about. It’s my idea of meditation. For the end of 2023, I […]

RavenDB Backups are now Faster & Smaller

11 minutes
With the release of RavenDB 6.0, we are now starting to focus on smaller features. The first one out of the gate, part of RavenDB 6.0.1 release, is actually a set of enhancements around making backups faster, smaller and cheaper. I just checked, and the core backup behavior of RavenDB hasn’t changed much since 2010(!). […]

Production Postmortem: The Spawn of Denial of Service

6 minutes
A customer contacted us to complain about a highly unstable cluster in their production system. The metrics didn’t support the situation, however. There was no excess load on the cluster in terms of CPU and memory, but there were a lot of network issues. The cluster got to the point where it would just flat-out […]

.NET Rocks: Data Sharding with Oren Eini

1 minutes
You can listen to me talk to Carl & Richard on RavenDB Sharding here. What is data sharding, and why do you need it? Carl and Richard talk to Oren Eini about his latest work on RavenDB, including the new data sharding feature. Oren talks about the power of sharding a database across multiple servers […]

RavenDB version 6.0 is now live

16 minutes
Today marks a very long journey for RavenDB as we release version 6.0 into the wild. This completes a multi-year effort on our part, which I’m really excited to share with you. In version 6.0 the RavenDB team had a number of goals, with the primary one being, as always, providing a simple and powerful […]

Optimizing a three-way merge

8 minutes
Deep inside of the Corax indexing engine inside of RavenDB there is the notion of a posting list. A posting list is just an ordered set of entry ids that contains a particular term. During the indexing process, we need to add and remove items from that posting list. This ends up being something like […]

Not all O(1) operations are considered equal

5 minutes
At some point in any performance optimization sprint, you are going to run into a super annoying problem: The dictionary. The reasoning is quite simple. One of the most powerful optimization techniques is to use a cache, which is usually implemented as a dictionary. Today’s tale is about a dictionary, but surprisingly enough, not about […]

Using RavenDB from Cloudflare Workers

1 minutes
RavenDB is a multi-primary database, which means that it allows you to write to multiple nodes at the same time, without needing synchronization between them. This ability to run independently from the other nodes in the cluster (or even across clusters) makes RavenDB highly suitable for running on the edge. We have recently published a guide […]

A twisted tale of memory optimization

5 minutes
I was looking into reducing the allocation in a particular part of our code, and I ran into what was basically the following code (boiled down to the essentials): As you can see, this does a lot of allocations. The actual method in question was a pretty good size, and all those operations happened in […]