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

QCon San Francisco Workshop: Building a database from the ground up

I’m going to QCon San Francisco and will be teaching a full day workshop where we’ll start from a C compiler and  an empty file and end up with a functional storage engine, indexing and more.Included...

View Article


Unhandled Exception Episode 55: RavenDB and Database Internals - with Oren Eini

You can listen to me talk with Dan in the Unhandled Exception podcast, where we dug deep into the internals of database engines.As usual, I would love your feedback.

View Article


Image may be NSFW.
Clik here to view.

Not all O(1) operations are considered equal

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

View Article

Image may be NSFW.
Clik here to view.

Optimizing a three-way merge

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

View Article

Image may be NSFW.
Clik here to view.

RavenDB Backups are now Faster & Smaller

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

View Article


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
Browsing latest articles
Browse All 161 View Live