RavenDB – What’s the difference?

What we we comparing against?

One of the most oft-asked questions on Twitter, the RavenDB mailing list and other such methods of communication, is what are the differences between RavenDB and <insert currently preferred NoSql solution>.

The two main contenders are probably CouchDB and MongoDB – MongoDB in particular has been gathering a lot of momentum in the .NET space recently thanks to efforts such as NoRM and such.

Personally, I think that comparisons against MongoDB should stop after one question, “Is your application read or write heavy?”, comparing overall performance and functionality is completely redundant because the two pieces of software are, in my mind at least, geared for completely different scenarios. True you can create indexes to make read operations light, but then you need to make sure that your indexes fit in memory and etc etc.

I’ll stop there unless anyone complains notably, because trying to describe the differences between Couch and Mongo is a big enough task in itself, in fact you can read more about this here, and note for yourself that they really are entirely different animals.

CouchDB and RavenDB on the other hand are both geared very much towards read-heavy applications, providing up front map/reduce indexes (or materialised views) on data, scaling horizontally via replication (although Raven supports this and sharding), and they both use REST as their method of access to the data store.

There are other document databases out there, and they all do things differently, but these are the two getting the most traction from the developer eco-system that I am familiar with. Thus, I shall be comparing RavenDB against CouchDB in this series of blog entries.

So, they’re the same right?

No, not really – and to be honest I thought that aside from the major differences that RavenDB contains such as transactions, sharding, linq-based-indexes, full text search, extensibility that this was the case!

Okay, that’s a fairly big list of differences already, but the features that are additions over CouchDB are primarily candy for developer use

Disclaimer: Until last week, I hadn’t properly touched CouchDB, and it was only at a workshop ran by DevTank in London that I realised quite how different the two databases were in functionality, use and design. However – while I’m about to launch into a series of posts about this topic, I might well be wrong about a few things (due to lack of exposure), and I’ll be happy to update my blog posts and admit that I am wrong when it is pointed out to me :).

Where are we going with this?

Obviously I have next to me a massive list of differences between CouchDB and RavenDB, and it really is a big list. I’ll be splitting it out over the coming days into a series of blog entries exploring these differences in detail and giving my opinions on them.



   


Print | posted on Monday, May 31, 2010 5:04 PM

Feedback

# re: RavenDB – What’s the difference?

Left by musicalbox at 6/3/2010 10:50 AM
Gravatar well it seems more or less like a marketing RavenDB talk, that's why you've chosen CouchDB as an opponent.

if you would kept MongoDB (asynch indexes built in background are comming soon in 1.6 released in a month) and NoRM, Raven would not be such a clear winner, and remember, they ARE the same docs dbs, only you don't want to see it.

for whatever the reason, maybe the added cost of RavenDB

MongoDB is one hell of a nice doc database, no wonder Rob Conery is so happy with it, and with NoRM adding momentum as the best C# driver the development is very friendly and more, it is for free!

I don't know of _any_ C# developer that likes to write javascript (even JQuery doesn't do much help here) so continuing your articles with javascript couchDB API is absolute loss of time...

hope you're not finding this post offensive, but MongoDB would definitely be a better RavenDB opponent

# re: RavenDB – What’s the difference?

Left by robashton at 6/3/2010 11:09 AM
Gravatar RE Marketing: I've got nothing to lose/gain through pushing RavenDB, so I'd like to think that's not the case.

Getting onto the technology, which is what I *am* interested in:

Mongo is currently a *very* different system to Couch + Raven, and my initial statement on read vs write is still a valid one alongside all the other major usage differences.

This: www.mongodb.org/.../Comparing+Mongo+DB+and+Couc... is still what I am going off here, the crossover between Couch and Raven as a *lot* larger than Couch and Mongo (or Mongo and Raven).

JavaScript vs C# is not the point of this entry (or future entries), the differences between how you *use* them *is*.

If in 1.6 my "completely different use cases" statement becomes an invalid one, then I shall do a RavenDB vs Mongo series - but there are currently *so many differences* between them it's like comparing apples and steak.

# re: RavenDB – What’s the difference?

Left by robashton at 6/3/2010 11:11 AM
Gravatar And no, of course I don't find it offensive - I am writing the series in the knowledge that there are large gaps in my knowledge and I am happy to take all input on board.

# re: RavenDB – What’s the difference?

Left by musicalbox at 6/5/2010 3:55 PM
Gravatar fair enough, I've just went a bit more deep into MongoDB and now I can see the differences, even Oren mentioned them in his NoSQL cast.

the point was, comming from O/RM world, Mongo seemed to be a complete difference (although still a tiny bit like rdbms like) to the way I used to do things, so another doc database (Raven for that matter) looked very similar to "Mongo world" (and absolutely different from MsSQL), mainly from developer point of view...that I could not see that *BIG* difference.

but I still believe that doc dbs will be very similar in the future in .NET world for the developer, LINQ as an API (NoRM is being actively developed), repository/uow as a data access layer and then you don't really care much about the internals, be it Mongo or RavenDB... (except for additional bonuses like full text search and so on)

Your comment:





 
Please add 5 and 3 and type the answer here:

Copyright © Rob Ashton

Design by Rob Ashton, Based On A Design By Bartosz Brzezinski