So after 3-4 days of research and study I’m compiling a list of links that helped me finally understand couchdb. Still bunches to learn, but hopefully it will save others from 4 days of googling.
Start
The very first thing you should read is the work in progress online couchdb book:
Relax with CouchDB [http://books.couchdb.org/relax/]
Now that your started
The following sections are grouped by what I left the article better understanding. They may cover other areas, but then again more knowledge leads to better understanding right?
JSON
Just in case you don’t understand json:
http://webt.wordpress.com/2007/10/01/json/
Couch MapReduce
fyi: hashes
Depending on what language your coming from you may know hashes as arrays or associative arrays. When they say reduce returns a single value, they are referring to the hash value it returns (scratched my head for a while)
If your coming from php an easy way to connect the dots is to think of how serialize creates a string that represents your object. Only in couchDb this is a json string
I had my eureka moment here:
http://www.ibuildings.com/blog/archives/1291-Some-thoughts-on-CouchDB.html
Just in case you didn’t eureka:
http://rrees.wordpress.com/2008/03/09/couchdb-querying-data/
Damien Katz explains more on couch’s mapreduce ( check the part 2 near the end as well ):
http://damienkatz.net/2008/02/incremental_map.html
MapReduce Method
In case you didn’t know mapreduce isn’t something couch invented, you can learn more about mapreduce below.
explains the mapreduce method in detail:
http://code.google.com/edu/parallel/mapreduce-tutorial.html#MapReduce
the mapreduce white paper:
http://labs.google.com/papers/mapreduce.html
mapreduce lecture (didn’t watch, but it was recommended by google, so why not):
http://www.youtube.com/v/-vD6PUdf3Js
using couchdb
blog db example / couchdb “joins”:
http://www.cmlenz.net/archives/2007/10/couchdb-joins
user permissions system example / offers rdbms comparison:
http://kore-nordmann.de/blog/couchdb_a_use_case.html
aimee’s 8+ couchdb on rails series (links to part 1, but your good from there):
http://aimee.mychores.co.uk/2008/09/07/post/320/
couchdb internals
Ricy ho’s overview:
http://horicky.blogspot.com/2008/10/couchdb-implementation.html
Related discussion where btrees are further discussed (as well as some decent bantering):
http://www.reddit.com/r/programming/comments/792hf/couchdb_implementation/
Ayende Rahien has an indepth series on couch db called: reading erlang
http://ayende.com/Blog/archive/2008/09/24/reading-erlang-inspecting-couchdb.aspx
http://ayende.com/Blog/archive/2008/09/24/more-couchdb-reading-btreelookup.aspx
http://ayende.com/Blog/archive/2008/09/24/more-couchdb-reading-btreequery_modify.aspx
http://ayende.com/Blog/archive/2008/10/04/reading-erlang-couchdb-from-rest-to-disk-in-a.aspx
http://ayende.com/Blog/archive/2008/10/04/erlang-reading-couchdb-digging-down-to-disk.aspx
http://ayende.com/Blog/archive/2008/10/06/reading-eralng-couchdb-streams.aspx
The most important part
Use it damn it! get planning, hacking, pop locking and start playing with couch
sources
Sources not referenced already:
http://damienkatz.net/2008/09/peek_into_couchdb.html
http://jan.prima.de/plok/