Also looked at couch db and was impressed with it.
So, if I get this correct, you're using both a relational db and couch db? Does your relational model also keep the data in couch?
yep i am using both.
no my relational model doesn't keep data in couch.
i use standard sql via entity framework for my data.
so the site runs off of sql as standard.
but for reporting, and keeping track of whats happening on my site i use a couchdb instance.
i have a document "object" i call an activity.
an activity is a json structure that has a datetime, a name, a description, a type, a few other things and then it also has a payload. my payload is another json object, and its shape depends on whatever activity it is you're doing.
so when you perform a review, i might save the actual review object as my payload.
or when you perform a search, i might save the search queries (the words, the dropdown values etc) as the payload.
or when you view a particular tag, i might save the userID and the tagID as the payload.
the point is just this allows me to save anything really, along with the date and time it happened.
if i did this in sql, i would have to store these as blobs or something. which sucks ass coz you can't query it.
using couch i can write a query on the activity itself, so maybe view all activities on this date, or on this hour, or whatever.
or i can query all activities where the datetime is this, and the type is "search" and the payload.searchwords is something else.
i can query the payload directly.
also, querying your reporting db might have a negative performance impact, whereas couch i'm making async http posts or gets so sql isn't affected at all and all the other users on the site won't feel it.
you "use" couch through json.
because my couchdb is a hosted instance, i interact with it via async http calls.
its not the same as the way i interact with entityframework.
entity framework uses c# classes, whereas i do have one class for my activity table, but i tend to use a lot of dynamic objects when querying the payloads.