Quantcast
Channel: Ayende @ Rahien
Browsing latest articles
Browse All 166 View Live

Image may be NSFW.
Clik here to view.

Learning over the holidays: Yet Another Bug Tracker sample app

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...

View Article


Image may be NSFW.
Clik here to view.

RavenDB HTTP Compression: Bandwidth & Time reductions

I recently talked about how RavenDB is now using ZStd as the default compression algorithm for backups. That led to a reduction both in the amount of storage we are consuming for backups and a...

View Article


Image may be NSFW.
Clik here to view.

RavenDB, Raspberry Pi & Hugin Appliance: oh my!

RavenDB can run on the Raspberry Pi, it is actually an important use case for us when our users are deploying RavenDB as part of Internet of Things systems. We wanted to showcase RavenDB’s performance...

View Article

Recording: Technology & Friends - Oren Eini on the Corax Search Engine

When Oren Eini originally developed RavenDB, he used the Lucene library to implement indexing. Eventually, his team encountered limitations with this strategy, so they created the Corax search engine,...

View Article

Image may be NSFW.
Clik here to view.

RavenDB and Two Factor Authentication

RavenDB is typically accessed directly by your application, using an X509 certificate for authentication. The same applies when you are connecting to RavenDB as a user. Many organizations require that...

View Article


RavenDB’s storage engine: Voron–unlocking the secret

A couple of months ago I had the joy of giving an internal lecture to our developer group about Voron, RavenDB’s dedicated storage engine. In the lecture, I’m going over the design and implementation...

View Article

Image may be NSFW.
Clik here to view.

Vacations, leaky abstractions, and modeling concerns, oh my!

Our task today is to request (and obtain approval for) a vacation. But before we can make that request, we need to handle the challenge of building   the vacation requesting system. Along the way, I...

View Article

Image may be NSFW.
Clik here to view.

Corax Query Plan visualization

Corax is the new indexing and querying engine in RavenDB, which recently came out with RavenDB 6.0. Our focus when building Corax was on one thing, performance. I did a full talk explaining how it...

View Article


Reading unfamiliar codebases quickly: LMDB

Reading code is a Skill (with a capital letter, yes) that is really important for developers. You cannot be a good developer without it.Today I want to talk about one aspect of this. The ability to go...

View Article


Indexing only recent data - adventures with large datasets & archiving

We recently got a support request from a user in which they had the following issue:We have an index that is using way too much disk space. We don’t need to search the entire dataset, just the most...

View Article

Caching documents in RavenDB: The good, the bad and the ugly

RavenDB has a hidden feature, enabled by default and not something that you usually need to be aware of. It has built-in support for caching. Consider the following code:async...

View Article

Image may be NSFW.
Clik here to view.

Isn't it ironic: Money isn't transactional

I write a transactional database for a living, and the best example of why we want transactions is transferring money between accounts. It is ironic, therefore, that there is no such thing as...

View Article

Performance discovery: Managed vs. Unmanaged memory

When building RavenDB, we occasionally have to deal with some ridiculous numbers in both size and scale. In one of our tests, we ran into an interesting problem. Here are the performance numbers of...

View Article


Performance discovery: IOPS vs. IOPS

RavenDB is a transactional database, we care deeply about ACID. The D in ACID stands for durability, which means that to acknowledge a transaction, we must write it to a persistent medium. Writing to...

View Article

Partial writes, IO_Uring and safety

In my previous post, I discussed how Linux will silently truncate a big write (> 2 GB) for you. That is expected by the interface of write(). The problem is that this behavior also applies when you...

View Article


Image may be NSFW.
Clik here to view.

RavenDB 7.1: Next-Gen Pagers

Even though RavenDB 7.0 isn’t quite out of the gate yet (expect the release very soon), I want to start talking about the RavenDB 7.1 release. This release is going to represent the biggest change in...

View Article

RavenDB 7.1: Write modes

In the previous post, I talked about a massive amount of effort (2+ months of work) and about 25,000 lines of code changes. The only purpose of this task was to remove two locks from the system. During...

View Article


RavenDB 7.1: Reclaiming disk space

After describing in detail the major refactoring we did for how RavenDB (via Voron, its storage engine) has gone through, there is one question remaining. What’s the point? The code is a lot simpler,...

View Article

Image may be NSFW.
Clik here to view.

RavenDB 7.1: Shared Journals

I wrote before about a surprising benchmark that we ran to discover the limitations of modern I/O systems. Modern disks such as NVMe have impressive capacity and amazing performance for everyday usage....

View Article

Image may be NSFW.
Clik here to view.

On the role of design documents

When we build a new feature in RavenDB, we either have at least some idea about what we want to build or we are doing something that is pure speculation. In either case, we will usually spend only a...

View Article
Browsing latest articles
Browse All 166 View Live