Rhino Divan DB reboot idea
Divan DB is my pet database. I created it to scratch an itch [Nitpickers: please note this!], to see if I can create Couch DB like system in .NET. You can read all about it in the following series of posts.
It stalled for a while, mostly because I run into the hard problems (building map/reduce views). But I think that I actually have a better idea, instead of trying to build something that would just mimic Couch DB, a .NET based Document DB is actually a very achievable goal.
The way it would work is actually pretty simple, the server would accept Json-formatted documents, like those:
[
{
"id": 153,
"type": "book",
"name": "Storm from the Shadows",
"authors": [
"David Weber"
],
"categories": [
"SciFi",
"Awesome",
"You gotta read it"
],
"avg_stars": 4.5,
"reviews": [13,5423,423,123,512]
},
{
"id": 1337,
"type": "book",
"name": "DSLs in Boo",
"authors": [
"Ayende Rahien",
"Oren Eini"
],
"categories": [
"DSL",
".NET",
"You REALLY gotta read it"
],
"avg_stars": 7,
"reviews": [843,214,451]
}
]
Querying could be done either by id, or using a query on an index. Indexes can be defined using the following syntax:
var booksByTitle = from book in docs where book.type == "book" select new { book.title };
The fun part here is that this index would be translated into a Lucene index, which means that you could query the index using a query:
Query(“booksByTitle”, “title:Boo”) –> documents that match this query.
As well as apply any & all the usual Lucene tricks.
You don’t get Map/Reduce using this method, but the amount of complexity you have is quite low, and the implementation should take only several days to build.
Thoughts?

Comments
Comment preview