Ayende @ Rahien

My name is Oren Eini
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:


+972 52-548-6969

, @ Q c

Posts: 6,128 | Comments: 45,550

filter by tags archive

Looking at the RavenDB structure

time to read 1 min | 98 words

Originally posted at 3/15/2011

I am trying to explain how RavenDB is structured, and we finally generated the following diagram:


I was actually surprised, because I don’t generally think about it this way, but having the diagram in front of us was really helpful in explain where everything goes.

And, of course, the inevitable nitpick: OMG it takes a loooong time to layout the graph.


Yaron Wittenstein

What software did you use to show the dependencies graph?


That looks like the architecture feature in VS2010.


@Yaron: the software used is called Visual Studio 2010, you've probably hear about that.

Specifically, the version is Ultimate, wich is the only version w/ Architecture Explorer.


@Yaron: ooops, missing smiley face :-)


Nice looking graph.

Does the arrows indicate dependencies? So Raven.Storage.Managed.Dll depends on Raven.Munin.dll?

Vadim Kantorov

He-he. My friend in MS Research actually works on that graph drawing piece :) If you wish, I may connect you both.

Daniel Hoelbling

Why didn't you just use ndepend?

Besides a bunch of great features tha are handy when looking at other people's code, it's dependency graph is really nice..

Ayende Rahien

I have absolutely no idea...

Chris Lovett

"OMG it takes a loooong time to layout the graph"

Note that most of the time is spent analyzing the assemblies to find all the dependencies that are then rolled up on the graph. The final "layout" of the graph is pretty quick, as you can see when you change the layout to "Left To Right" which I think you will find is almost instant on this sized graph even though it actually contains a rollup of 21861 nodes and 63982 links.

If you only care about assembly dependencies you can use the "Custom" dependency graph dialog to select only "Assemblies" and not "Namespaces, Types and MEthods". This graph will be much smaller and faster with only 15 nodes and 30 links, but at the cost of not being able to expand and drill down to see any details.

Ayende Rahien


Remove an item from the graph (after it was already render), for example, if you don't care for a specific assembly.

It takes minutes to re-draw, on a fairly powerful machine

Chris Lovett

Ok, yes, you do have to watch out for graphs with this many hidden nodes and links. You can use the the "Custom..." dialog on the Generate Dependency Graph menu to ask for "Assemblies" only and not namespaces, classes & methods, then the graph will be vastly smaller and much easier to deal with.

PS: the number on the top left of the collapsed group node is a simple count of the number of nodes inside it. So it represents a namespace, then it is usually the number of classes inside, or if it represents a Class then it's the number of methods inside, etc. This helps give an idea of hidden complexity in your system. If the number is over 100 you might not want to think twice before expand that group, etc.

Comment preview

Comments have been closed on this topic.


  1. The worker pattern - 14 hours from now

There are posts all the way to May 30, 2016


  1. The design of RavenDB 4.0 (14):
    26 May 2016 - The client side
  2. RavenDB 3.5 whirl wind tour (14):
    25 May 2016 - Got anything to declare, ya smuggler?
  3. Tasks for the new comer (2):
    15 Apr 2016 - Quartz.NET with RavenDB
  4. Code through the looking glass (5):
    18 Mar 2016 - And a linear search to rule them
  5. Find the bug (8):
    29 Feb 2016 - When you can't rely on your own identity
View all series


Main feed Feed Stats
Comments feed   Comments Feed Stats