Articles

Recording: Build your own database at Cloud Lunch & Learn

1 minutes
I spoke at Cloud Lunch & Learn about the basics of building a database from scratch. We took a storage engine and created a simple database within the span of an hour. Covered in the talk are the details of how you can build the database, using indexes to speed up queries and the manner […]

Production postmortem: Efficiency all the way to Out of Memory error

7 minutes
RavenDB is written in C#, and as such, uses managed memory. As a database, however, we need granular control of our memory, so we also do manual memory management. One of the key optimizations that we utilize to reduce the amount of overhead we have on managing our memory is using an arena allocator. That is […]

Benchmarking: Slow is fast, fast is slow

6 minutes
I’m trying to compare indexing speed of Corax vs. Lucene. Here is an interesting result: We have two copies of the same index, running in parallel on the same data. And we can clearly see that Lucene is faster. Not by a lot, but enough to warrant investigation. Here is the core of the work […]

When debugging, assume an unreliable narrator

8 minutes
When we are handling a support call, we are often working with partial information about the state of the software at the customer site. Sometimes that is an unavoidable part of the job. When troubleshooting a system with patients’ records, I can’t just ask the customer to schlep the data to my laptop so I […]

High performance .NET: Building a Redis Clone–Analysis II

11 minutes
I’m going to go back a few steps and try to see where I should be looking at next, to see where I should pay the most attention. So far in this series, I mostly focused on how we read and process the data. But I think that we ought to take a step or […]

Production postmortem: Broken networks and compressed streams

6 minutes
RavenDB introduced a TCP compression feature in version 5.3. The idea is that all internal communication in the cluster (as well as subscriptions), will use the Zstd compression format to reduce the overall bandwidth utilization by RavenDB. We have always supported HTTP compression, and that closed the circle. The fact hat we are using Zstd […]

Recording: Non relational data modeling & Database engine internals

1 minutes
A few days ago I talked for close to three hours discussing RavenDB, modeling data in a non relational world and diving very deep into the internals of database engines in the .NET Zurich users group. You can watch the recording here.  As usual, any and all feedback is welcome.

Upcoming webinar: Involving RavenDB in your Messaging Transactions

1 minutes
Next week I’ll be presenting a new major feature for the new RavenDB 5.4 release. Built-in ETL for Kafka and RabbitMQ. Instead of your documents just sitting there in your database, you can involve them in your messaging transactions. You can register for the webinar here… Please register, I would love to hear your feedback […]

Production postmortem: The data corruption in the node.js stack

4 minutes
A customer called us, complaining that RavenDB isn’t supporting internationalization. That was a big term to unpack. It boiled down to a simple issue. They were using Hebrew text in their system, consuming us from a node.js client, and they observed that sometimes, RavenDB would corrupt the data. They would get JSON similar to this: […]