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.
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
Comments
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!
Watched this at work today, it's great, it cleared up quite a for things i didn't fully understand about RavenDB.
public static IList<T> ToRandomList<T>(this IList<T> source, int numberOfItems) { if (numberOfItems <= 0) { throw new ArgumentOutOfRangeException("numberOfItems"); }
btw, maybe uint better instead int?
Random question - what is that little stop sign next to your page refresh button in google chrome?
Awesome! Great stuff.
Great video, but is there any ETA for the update on the git repo?
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.
Rafal, That is why we are doing those customers videos.
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?
Paul, I am not a real good person to ask that question, you do realize that? Maybe for heavy dynamic reporting, OLAP stuff, etc.
What keystroke do you use to show Resharper templates (like add new class) in Solution Explorer?
Alexander, Alt+Insert
@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 :) :)
Insanely awesome :-)
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.
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
Comment preview