Oren Eini is a senior developer / architect, focusing on architecture, data access and best practices. Most often, he is working on building complex business systems using .Net 2.0, NHibernate and Castle's Frameworks, providing training and guidance for the use of Object Relational Mapping, Inversion of Control, Domain Driven Design and other exciting topics. Oren is an active member in several leading Open Source projects, including (but not limited :-) ) NHibernate, Castle and Rhino Mocks.
Ayende @ Rahien | 27 Jun 2016 09:00
Oren Eini writes "....I have talked before about the roles of logs (for debug statements) in RavenDB. In this post, I want to start talking about the actual concrete design we have of them. Overall guidelines (in no particular order): As little configuration as..."
Read more » Designing RavenDB’s debug log system
Ayende @ Rahien | 26 Jun 2016 06:20
Oren Eini writes "....The following code has just been written (never run, never tested). It’s purpose is to serve as a high speed, no locking transport between two threads, once of them producing information, the other consuming it, in a bounded, non blocking manner...."
Read more » Code review: The bounded queue
Ayende @ Rahien | 21 Jun 2016 09:00
Oren Eini writes "....Greg Young has an interesting reply to my post here. I’m going to reply to it here. RavenDB nor EventStore should be written in C#. That may be true for the EventStore, but it isn’t true for RavenDB. Being able to work with the .NET framework makes..."
Read more » On why RavenDB is written in C#
Ayende @ Rahien | 16 Jun 2016 05:55
Oren Eini writes "....In my previous post, I talked about B+Trees and how they work. Unfortunately, just having a B+Tree isn’t enough. A B+Tree allows you to do queries (including range queries) over a single dimension. In other words, in the case of our users’ data, we..."
Read more » The Guts n’ Glory of Database Internals: Seeing the forest for the trees
Ayende @ Rahien | 15 Jun 2016 07:09
Oren Eini writes "....This post is in reply to Rob’s post, go ahead and read it, I’ll wait. My answer to Rob’s post can be summarize in a single word: In particular, this statement: it is impossible to be a good .NET developer. To work in a development shop with a team..."
Read more » re: Why you can't be a good .NET developer
Ayende @ Rahien | 14 Jun 2016 09:00
Oren Eini writes "....The absolute worst thing about B+Trees is their name. It is like someone maliciously considered all the possible names and then selected the most confusing one. A B+Tree is a very different animal from a binary tree, in particular. In the previous..."
Read more » The Guts n’ Glory of Database Internals: B+Tree
Ayende @ Rahien | 13 Jun 2016 09:00
Oren Eini writes "....The title of this post reminds me of a Bones episode. This blog post is actually from an internal mail made by Federico Lois, as part of bigger perf work.
Here is the calling code, note that this is typically called many times, and _pageStates is a..."
Read more » The HashSet in the Hot Spot
Ayende @ Rahien | 10 Jun 2016 09:00
Oren Eini writes "....Here is the original post, and now let us get down to solving it… The key part of solving this issue is knowing that if you wait for the actual cluster change, there is very little that you can do. Technically speaking, if you have the keys, you can..."
Read more » The high level interview question: Proposed solution
Ayende @ Rahien | 09 Jun 2016 09:00
Oren Eini writes "....So far, we looked at naïve options for data storage and for building indexes, and we found them lacking. The amount of complexity involved was just too much, and the performance costs were not conductive for good business. In this post, I want to..."
Read more » The Guts n’ Glory of Database Internals: The LSM option
Ayende @ Rahien | 08 Jun 2016 09:00
Oren Eini writes "....In the previous post, I showed how we can use a simple text based format to store records, and what it means for reading / writing those records. Searching in such a system means that you have quite a bit of work to do, since you need to scan the..."
Read more » The Guts n’ Glory of Database Internals: Searching information and file format