Tracking down RavenDB I/O usage in Linux
Today I had to look into the a customer whose RavenDB instance was burning through a lot of I/O. The process is somewhat ingrained in me by this point, but I thought that it would make for a good blog...
View ArticleArchitectural optimizations vs the profiler
For the past couple of years, we had a stealth project going on inside of RavenDB. That project is meant to re-architect the internals of how RavenDB handles queries. The goal is to have a major...
View ArticleImporting the Stack Overflow dataset into RavenDB
Around 2017 we needed to test RavenDB with realistic datasets. That was the time that we were working hard on the 4.0 release, and we wanted to have some common dataset that was production quality (for...
View Articlere: How Discord supercharges network disks for extreme low latency
I read this blog post from Discord, which presents a really interesting approach to a problem that they run into. Basically, in the cloud you have the choice between fast and ephemeral disks and...
View ArticleOptimizing Corax: Optimizing tree operations
I love trees. Not the ones that produce oxygen, I mean, I guess they are nice too, but I’m talking about trees in software. To be rather more exact, I’m fascinated by B+Trees and all their...
View ArticleComparing SQLite WAL mode to Voron’s
There is a great article discussing how SQLite is handling transactions at fly.io. Which led me to the great documentation on the WAL mode for SQLite. And that led me to think about the differences...
View ArticleReducing complexity with a shift in thinking
I love B+Trees, but they can be gnarly beasts, with the number of edge cases that you can run into. Today’s story is about a known difficult place, page splitting in the tree. Consider the following...
View ArticleThe subtleties of proper B+Tree implementation
I mentioned earlier that B+Trees are a gnarly beast to implement properly. On the face of it, this is a really strange statement, because they are a pretty simple data structure. What is so complex...
View ArticleProduction postmortem: The missed indexing reference
RavenDB has a really nice feature, it allows you to index data from related documents. Consider the following document structure:We have tickets, vehicles, and users, and we want to issue a search on...
View ArticlePublished: Data Management in Complex Systems
My article about Data Management in Complex Systems was published in DZone as part of DZone's 2022 Database Systems Trend Report.I would love your feedback on it.
View ArticleProduction postmortem: Do you trust this server?
A customer called us with a problem. They set up a production cluster successfully, they could manually verify that everything is working, except that it would fail when they try to connect to it via...
View Article--- Article Not Found! ---
*** *** *** RSSing Note: Article is missing! We don't know where we put it!!. *** ***
View Article--- Article Not Found! ---
*** *** *** RSSing Note: Article is missing! We don't know where we put it!!. *** ***
View ArticleRavenDB 6.0: Sharding webinar
This Wednesday I’m going to be doing a webinar about RavenDB & Sharding. This is going to be the flagship feature for RavenDB 6.0 and I’m really excited to be talking about it in public...
View ArticleUsing client side encrypted fields in RavenDB
Sometimes, you need to hold on to data that you really don’t want to have access to. A great example may be that your user will provide you with their theme color preference. I’m sure you can...
View ArticleRavenDB Sharding Webinar recording
The recording of my webinar showing off the new Sharding feature in RavenDB 6.0 is now live. I’m showcasing the new technology preview of RavenDB 6.0 and we have a nightly build already available for...
View ArticleProduction postmortem: The heisenbug server
A user reported that they observed nodes in the cluster “going dark”. Basically, they would stop communicating with the rest of the cluster, but would otherwise appear functional. Both the internal and...
View ArticleProduction postmortem: The server ate all my memory
A customer reported a scenario where RavenDB was using stupendous amounts of memory. In the orders of tens of GB on a system that didn’t have that much load.Our first suspicion was that this is an...
View ArticleBackend API design principles: Don’t mirror your data
It’s very common to model your backend API as a set of endpoints that mirror your internal data model. For example, consider a blog engine, which may have:GET /users/{id}: retrieves information about a...
View ArticleLooking into Corax’s posting lists: Part II
In a previous post (which went out a long time ago) I explained that we have the notion of a set of uint64 values that are used for document IDs. We build a B+Tree with different behaviors for branch...
View Article