Looking for a Developer Advocate for RavenDB
We are looking to hire another Developer Advocate for RavenDB. The position involves talking to customers and users, help them build and design RavenDB based solutions. It requires excellent written...
View ArticleA tale of eventually consistent ACID model
I recently had a conversation about ACID, I don’t think it would surprise anyone that I’m a big proponent of ACID. After all, RavenDB was an ACID database from the first release.When working with...
View ArticleUsing RavenDB for data aggregation from dynamic sources
I got an interesting question from a customer recently and thought that it would make for a fun blog post. The issue the customer is facing is that they are aggregating data from many sources, and they...
View ArticleWebinar next week: Clean Architecture with RavenDB
Next week I'll be talking how you can utilize RavenDB to create a clean architecture for your systems.You can register in the following link
View ArticleOn fixing a bug (and all its siblings) with a forward looking view
We run into a strange situation deep in the guts of RavenDB. A cluster command (the backbone of how RavenDB is coordinating action in a distributed cluster) failed because of an allocation failure....
View ArticleRavenDB at Rakuten Kobo recording is now available
I had a great discussion with Trevor, the CTO of Rakuten Kobo about their use of RavenDB, you can watch it here:
View ArticleCloud security and college assignment
I’m teaching a college class about Cloud Computing and part of that is giving various assignments to build stuff on the cloud. That part is pretty routine.One of my requests for the tasks is to...
View Articlere: BonsaiDb performance update: A deep-dive on file synchronization
I run into this fascinating blog post discussing the performance of BonsaiDb. To summarize the post, the author built a database and benchmarked it, but wasn’t actually calling fsync() to ensure...
View ArticleHigh performance .NET: Building a Redis Clone–naively
I run into this project, which aims to be a Redis clone with better performance and ease of use. I found it interesting because one of the main selling points there was that it is able to run in a...
View ArticleHigh performance .NET: Building a Redis Clone–Analysis
In the previous post, I wrote a small Redis clone using the most naïve manner. It was able to hit nearly 1M queries per second on our test instance (c6g.4xlarge, using 16 cores and 64 GB of memory)....
View ArticleHigh performance .NET: Building a Redis Clone–Architecture
My previous attempts to write a Redis clone were done in about as straightforward a way as possible. Open a socket to listen on, have a separate Task for each client that reads from the network, parse...
View ArticleHigh performance .NET: Building a Redis Clone–separation of computation & I/O
After achieving 1.25 million ops/sec, I decided to see what would happen if I would change the code to support pipelining. That ended up being quite involved, because I needed to both keep track of all...
View ArticleThe value of self contained diagnostics
I’m inordinately fond of the Fallacies of Distributed Computing, these are a set of common (false) assumptions that people make when building distributed systems, to their sorrow.Today I want to talk...
View ArticleHigh performance .NET: Building a Redis Clone– the wrong optimization path
Now that I’m done with the low hanging fruits, I decided to shift the Redis implementation to use System.IO.Pipelines. That is a high performance I/O API that is meant specifically for servers that...
View ArticleHigh performance .NET: Building a Redis Clone – skipping strings
One of the high costs that we have right now in my Redis Clone is strings. That is actually a bit misleading, take a look here:Strings take 12.57% of the runtime, but there is also the GC Wait, where...
View ArticleRecording: Non relational data modeling & Database engine internals
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...
View ArticleHigh performance .NET: Building a Redis Clone–Analysis II
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...
View ArticleProduction postmortem: Efficiency all the way to Out of Memory error
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...
View ArticleRecording: Build your own database at Cloud Lunch & Learn
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...
View ArticleWebinar Recording: RavenDB & Messaging Transactions
In RavenDB 5.4, we’re introducing new ELT features for Kafka and RabbitMQ. Now, instead of your documents just sitting there in your database, you can involve them in your messaging transactions. In...
View Article