NoSQL Benchmarks NoSQL use cases NoSQL Videos NoSQL Hybrid Solutions NoSQL Presentations Big Data Hadoop MapReduce Pig Hive Flume Oozie Sqoop HDFS ZooKeeper Cascading Cascalog BigTable Cassandra HBase Hypertable Couchbase CouchDB MongoDB OrientDB RavenDB Jackrabbit Terrastore Amazon DynamoDB Redis Riak Project Voldemort Tokyo Cabinet Kyoto Cabinet memcached Amazon SimpleDB Datomic MemcacheDB M/DB GT.M Amazon Dynamo Dynomite Mnesia Yahoo! PNUTS/Sherpa Neo4j InfoGrid Sones GraphDB InfiniteGraph AllegroGraph MarkLogic Clustrix CouchDB Case Studies MongoDB Case Studies NoSQL at Adobe NoSQL at Facebook NoSQL at Twitter



ravendb: All content tagged as ravendb in NoSQL databases and polyglot persistence

RavenDB: Emulating Group By Using MapReduce

Basic, but clear example with everything you need to get this working:

RavenDB is a document database, and unlike a relational database (like say Microsoft SQL Server) – you can’t do your usual group-by type queries quite as simply. […] For RavenDB instead I need to use a Map-Reduce query. The basics of this are that the first part (the Map) runs over the documents, and finds the matches. The reduce then takes the found matches, and summarises (reduces) the result set.

Original title and link: RavenDB: Emulating Group By Using MapReduce (NoSQL databases © myNoSQL)


RavenDB and HTTP Caching

Ayende writing about choosing between implementing RavenDB cache similar to Hibernate second level cache1 or HTTP caches:

RavenDB is an HTTP server, in the end. Why not use HTTP caching? […] HTTP Caching is a somewhat complex topic, if you think it is not, talk to me after reading this 24 pages document describing it. But in essence, I am actually using only a small bit of it.

Firstly, if you really want to understand web caches I strongly recommend Mark Notthingham’s Caching tutorial for web authors and webmasters.

Getting back to Ayende’s post, a couple of comments

  1. the mechanism described in the post is called conditional GET. According to the HTTP/1.1 RFC:

    The semantics of the GET method change to a “conditional GET” if the request message includes an If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. A conditional GET method requests that the entity be transferred only under the circumstances described by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network usage by allowing cached entities to be refreshed without requiring multiple requests or transferring data already held by the client.

  2. an HTTP caching mechanism should also consider reversed proxies’ behavior. For these to work freshness (Expires) and cache-control (Cache-control) headers must be used

  3. without reversed proxies, query caching based only on ETags will in most cases just reduce the bandwith (by not sending back a response), but will continue to fetch the data for calculating the query ETag. Basically, the benefits are smaller.

On the topic of HTTP-based caching, you should also check the article CouchDB and Varnish caching .

  1. I’m still confused why he mentiones Hibernate’s second level caching as that is related to caching query results, while the post focuses on single value access caching. Thanks to ewhauser this was clarified.  

Original title and link: RavenDB and HTTP Caching (NoSQL databases © myNoSQL)


RavenDB, Attachments, and Raven Apps

Looks like RavenDB took a lot of inspiration from CouchDB and CouchApp:

The only reason RavenDB has attachments support is that we wanted to support the notion of Raven Apps (see Couch Apps) which are completely hosted in RavenDB. That was the original impetus. Since then, they evolved quite nicely. Attachments in RavenDB can have metadata, are replicated between nodes, can be cascade deleted on document deletions and are HTTP cacheable.

I didn’t even know RavenDB has something like CouchApps RavenApps.

Original title and link: RavenDB, Attachments, and Raven Apps (NoSQL databases © myNoSQL)


Amazon SimpleDB, MongoDB, CouchDB, and RavenDB Compared

I wanted to share this before the weekend is over: Jesse Wolgamott’s video: “Battle of NoSQL starts: Amazon’s SDB vs MongoDB vs CouchDB vs RavenDB” from September’s Lone Star Ruby Conference.

You can download the video from the Confreaks site for watching offline.

Original title and link: Amazon SimpleDB, MongoDB, CouchDB, and RavenDB Compared (NoSQL databases © myNoSQL)

RavenDB: Run as an IIS Application

A very detailed (and full of screenshots) tutorial on setting up RavenDB as an IIS application[1]:

We successfully installed and set up Raven DB to run in IIS.  Just navigate to http://localhost:8080 url or in IIS Manager make sure the new web site is selected and click on “Browse *:8080 (http)” link in Action section.  Rave DB page should be opened in your favorite browser.

  1. As someone that did not spend time in the MS world, it’s not very clear what running RavenDB as an IIS app means, but by reading the tutorial I got the feeling that it is setting up RavenDB as a shared managed resource.  ()

Original title and link: RavenDB: Run as an IIS Application (NoSQL databases © myNoSQL)



Very basic intro to RavenDB and ASP.NET MVC:

If you do a quick search on the web you will discover that there are many document databases to choose from. Some of the most popular options today are MongoDB, CouchDB and RavenDB. For whatever reason I was attracted to RavenDB because I knew it would seamlessly integrate with the .NET/windows platform. As always, the best way to learn something is to jump in head first. So the following article is a step-by-step tutorial on how I built an MVC 2 web app using RavenDB as the backend.

Even if not windows or .NET native, I think MongoDB with NoRM will work well. And even if some cry after a kickass .NET API for CouchDB there are quite a few CouchDB .NET libraries.

Original title and link: RavenDB and ASP.NET MVC (NoSQL databases © myNoSQL)


First Look at RavenDB UI for Desktop

They said they are looking for a desktop app for RavenDB, so now when mostly every NoSQL database has a web based “tool”, RavenDB is getting a desktop management client:

More screenshots are available ☞ here.

Original title and link: First Look at RavenDB UI for Desktop (NoSQL databases © myNoSQL)

Intro to RavenDB

This weekend is the time to watch Oren Eini (aka Ayende Rahien), creator of RavenDB, talk about RavenDB.

NHDay - RavenDB [Ayende]

Original title and link: Intro to RavenDB (NoSQL databases © myNoSQL)

RavenDB and CouchDB Compared

A fair emphasis on what differentiates RavenDB from CouchDB (nb coming from RavenDB creator). Just to mention the most interesting ones:

  • transactions: support for single document, document batch, multi request, multi node transactions […]
  • set based operations: update active = false where last_login < '2010-10-01'
  • includes and live projections (local data only)

Original title and link: RavenDB and CouchDB Compared (NoSQL databases © myNoSQL)


RavenDB: An Example of Polymorphic Collections

Mike Hadlow trying out RavenDB for dealing with inheritance and polymorphic queries:

The model has a concept of Parent and Child both of which inherit a User abstract base class. One of the first things I wanted to check was that the Raven can return a polymorphic collections of Users. […] For this to work, you have to configure Raven to understand that the type ‘User’ is represented by documents with ids that look like ‘users/xxx’

Original title and link: RavenDB: An Example of Polymorphic Collections (NoSQL databases © myNoSQL)


RavenDB Looking for a UI

Probably inspired by the ☞ Redis logo contest, RavenDB is looking for help to create its management UI:

Another problem is that the UI is already becoming cluttered, and we can’t really offer high end UX with the type of options that we have in a web interface without a ridiculously high investment in time and effort. But I still want the no-deploy option, so the next UI for RavenDB is going to be done in Silverlight. For example, giving syntax highlighting for editing index definitions would be trivial in Silverlight and very hard in HTML/JS.

Original title and link: RavenDB Looking for a UI (NoSQL databases © myNoSQL)


RavenDB: New Features

RavenDB, the .NET document database, seem to be very active these days. While still pretty young, RavenDB seems to be adding a lot of features lately to catch up with the other, better known, document databases like CouchDB or MongoDB.

The latest added (or just documented[1]) features include:

  • Replication Bundle: master slave, master multi slaves, and multi master
  • Versioning Bundle – seamless audit trails for document changes.
  • Spatial queries – for geo location searches.
  • Authorization Bundle – per document authorization.
  • Document metadata – manipulating the document metadata at the client side.
  • Patching documents – avoid having to send the entire document on the wire, send just the changes.
  • Custom serialization – control how the client API serializes your documents.

While all these sound like good additions to RavenDB, I must confess that there are a couple of questions that I’d like answered:

  • how battle tested is RavenDB? are there any production deployments?
  • how many developers are behind RavenDB?
  • what support can you get for RavenDB?

Many of these questions do apply to other NoSQL databases too though.

  1. I enjoyed Ayende’s remark: “I am rapidly coming to the realization that if it isn’t documented, it doesn’t exist”.  ()

Original title and link: RavenDB: New Features (NoSQL databases © myNoSQL)