Ayende @ Rahien

Sleep as currency? I would buy some...

RavenOverflow - building a StackOverflow clone with RavenDB

Another in our series of videos of customer interactions. This time, we take a look at the challenges involved in building a RavenDB powered Stack Overflow site. I think you’ll find it very interesting.

Building StackOverflow clone with RavenDB

In this webcast Ayende works with Justin on modeling a StackOverflow website clone with RavenDB. The topics discussed in this 1hr video are:

  • Map/Reduce indexes
  • Modeling tags
  • Root aggregates
    • Metadata
    • Active tags
    • Facets
    • The suggest feature
  • Performance:
    • Built-in caching
    • Lazy loading
    • Aggressive caching
  • RavenDB profiler

The new RavenDB beta docs: http://docs.ravendb.net

The project we are talking about: https://github.com/PureKrome/RavenOverflow


Posted By: Ayende Rahien

Published at

Originally posted at


Demis Bellot
10/05/2011 04:48 AM by
Demis Bellot

Interesting to see how this compares with my Redis StackOverflow mini clone I created over a year ago at: http://www.servicestack.net/RedisStackOverflow/

I found Redis was a good fit for this as the entire Redis repository fits into 1 class: https://github.com/ServiceStack/ServiceStack.Examples/blob/master/src/RedisStackOverflow/RedisStackOverflow.ServiceInterface/IRepository.cs

Best thing about using Redis is you rarely need to ever cache since its so fast!

Phillip Haydon
10/05/2011 07:50 AM by
Phillip Haydon

Watched this at work today, it's great, it cleared up quite a for things i didn't fully understand about RavenDB.

10/05/2011 08:41 AM by

public static IList ToRandomList(this IList source, int numberOfItems) { if (numberOfItems <= 0) { throw new ArgumentOutOfRangeException("numberOfItems"); }

btw, maybe uint better instead int?

10/05/2011 10:50 AM by

Random question - what is that little stop sign next to your page refresh button in google chrome?

Alexei K
10/05/2011 07:46 PM by
Alexei K

Great video, but is there any ETA for the update on the git repo?

10/05/2011 10:16 PM by

Very interesting and encouraging demonstration of Raven's capabilities, but I think the tool will always be effective and easy to use in the hands of its creator. I'd love to read about all these cases when someone hit a wall trying to use Raven for some task - performance limits, unexpected difficulties and side-effects, unforeseen use cases and quirks - you know, everything that you didn't expect and that has blown into your face and then how you dealt with that.

Ayende Rahien
10/06/2011 10:57 AM by
Ayende Rahien

Rafal, That is why we are doing those customers videos.

10/06/2011 04:25 PM by

Hi Ayende, I know this is off topic. But with the re-resurgence of NoSQL databases, it is getting harder to think of scenarios under which I would want to use a relational database.

If you had full control over the design, can you now think of cases when you would want to use a relational database?

Ayende Rahien
10/06/2011 04:34 PM by
Ayende Rahien

Paul, I am not a real good person to ask that question, you do realize that? Maybe for heavy dynamic reporting, OLAP stuff, etc.

10/06/2011 08:17 PM by

What keystroke do you use to show Resharper templates (like add new class) in Solution Explorer?

Justin Adler
10/11/2011 04:48 AM by
Justin Adler

@Alexei K - heya mate :) The git repo is mine (right now) and literally a few hours after Ayende hit the stop button, I jumped on a plane with my family and hit the beach for a well deserved break.

I'm back at work today (read => no kids == I have energy and can actually turn on a computer) so i'll be updating the repo on git hub tonight :)

@ScottH - whoa! this got on your radar! Totally awesome-sauce :)

And big ups to Ayende for doing this, of course :) :)

Micha Schopman
10/12/2011 08:31 AM by
Micha Schopman

I would love to see how you keep document values synchronized between multiple documents where each document contains the denormalized same values and you are doing updates (or deletes) on those values.

I have a specific modelling case where I just can't seem to figure out how to achieve this because the document's presented are personalized and targetted for each visitor, and the information presented in the document changes alot so the result would be that all documents are changed constantly.

This also seems the case in StackOverflow where vote changes would mean that all documents with summarized vote information should also changed.

Ayende Rahien
10/12/2011 09:16 AM by
Ayende Rahien

Micha, You can either link (and then Include) that data, or you can just update it. I am not sure that I understand the problem

Comments have been closed on this topic.