couchdb: All content on NoSQL databases and projects about couchdb, featuring the best daily NoSQL articles, news, and links on couchdb
Thursday, 2 September 2010
CouchDB: A CouchApp Project Structure ☞
If you learned about CouchApp, now it is time to see the most detailed description of a CouchApp project structure:
his is my current (3 day) understanding of the way it works. I could be totally/probably wrong but I am sure someone will help and point that out. […] The order of the document is based on the layout of the files in TextMate while examining the Pages project.
A good reference point for those building CouchApp based apps.
Original title and link for this post: CouchDB: A CouchApp Project Structure (published on the NoSQL blog: myNoSQL)
CouchDB and MongoDB: Querying ☞
Andrew Glover:
Both MongoDB and CouchDB are document-oriented datastores. They both work with JSON documents. They both are usually thrown into the NoSQL bucket. They’re both hip. But that’s where the similarities, for the most part, stop.
When it comes to queries, both couldn’t be any more different.
They differ even in the implementation and behavior of MapReduce.
Original title and link for this post: CouchDB and MongoDB: Quering (published on the NoSQL blog: myNoSQL)
CouchDB Tips & Tricks: Loading DNS data into CouchDB
Not sure how many need it, but still an interesting trick:
Probably this one is a nicer trick though.
Original title and link for this post: CouchDB Tips & Tricks: Loading DNS data into CouchDB (published on the NoSQL blog: myNoSQL)
Wednesday, 1 September 2010
CouchDB Security ☞
Recently, Jeff Darcy has brought up the discussion of NoSQL databases security. A recent post on Couchio blog is covering in detail the CouchDB security aspects like authentication and authorization, “admin party”, access control lists and roles, validation functions:
The CouchDB security model is based around the premise that Rebecca can control who can create documents of what form into which database inside CouchDB. It does not try to make CouchDB and all the data she and others put in is absolutely water-tight and doesn’t leak any information. Although you can lock CouchDB as much down as you need, open and sharable databases are the default and it is a good thing.
Original title and link for this post: CouchDB Security (published on the NoSQL blog: myNoSQL)
CouchDB: What is CouchApp? ☞
I’ve asked for it, now I’ve found it:
A CouchApp is just a JavaScript and HTML5 app that can be served directly to the browser from CouchDB, without any other software in the stack. There are many benefits (and some constraints) to doing it this way.
Leaving aside the sometimes overly zealous comments, it is the intro material about CouchApp I was asking for. There are a few more resources about CouchApp available ☞ here.
A CouchApp that got some press lately is afgwardiary which can be found on ☞ GitHub. Created by Benoit Chesneau it is meant to analyze the Wikileaks data dumps.
Original title and link for this post: CouchDB: What is CouchApp? (published on the NoSQL blog: myNoSQL)
Monday, 30 August 2010
CouchDB BigCouch: Cloudant Open Sourcing their CouchDB Scaling Project ☞
I’ve covered the Cloudant solution for CouchDB horizontal scalability and mentioned that’s probably the most interesting one for scaling CouchDB. Now Cloudant has open sourced it under the name BigCouch and the code is available on ☞ GitHub.
What does it do? Think of BigCouch as a set of Erlang/OTP applications that allow you to create a cluster of CouchDBs that is distributed across many nodes/servers. Instead of one big honking CouchDB, the result is an elastic data store which is fully CouchDB API-compliant.
[…]
The clustering layer is most closely modeled after Amazon’s Dynamo, with consistent hashing, replication, and quorum for read/write operations. CouchDB view indexing occurs in parallel on each partition, and can achieve impressive speedups as compared to standalone serial indexing.
Let’s see if BigCouch is better than CouchDB with a Riak backend.
Original title and link for this post: CouchDB BigCouch: Cloudant Open Sourcing their CouchDB Scaling Project (published on the NoSQL blog: myNoSQL)
Saturday, 28 August 2010
CouchDB Users: The Large Hadron Collider ☞
Couchio announced another user[1]
of CouchDB: the European Organization for Nuclear Research (CERN) — responsible for the Large Hadron Collider — in the Compact Muon Solenoid experiment:
The DMWM team has issues that don’t fit well into standard relational databases or files in a filesystem. Being able to easily access and consolidate data from distributed locations with minimal latency is required routinely. Typically, external access to a site is limited, so incoming connections to a database aren’t possible. The team often doesn’t have clear requirements to address, which means metadata is either not collected or not effectively used. Generally, the team members must prototype tools quickly and be able to demonstrate that they are ready to go into production.
In case you missed it, back in June, the same project ☞ announced the usage of MongoDB. So, wouldn’t it be interesting to hear why MongoDB was replaced by CouchDB? (in case that’s true and the two are not in fact used in parallel).
Update: according to @LusciousPear the two projects are used side-by-side.
- Couchio people call these case studies, but I’d say they are only success stories or “who’s using” lists. A case study usually answers the questions: what, why, how, with a bonus part on lessons learned. Like Netvibes using Tokyo Tyrant or Adobe using HBase or Twitter looking into using Cassandra. (↩)
Original title and link for this post: CouchDB Users: The Large Hadron Collider (published on the NoSQL blog: myNoSQL)
Friday, 27 August 2010
CouchDB Tips & Tricks: List Functions for Sorting Map/Reduce Results by Value ☞
Nice CouchDB trick from Arbo von Monkiewitsch:
I just found out, that it is possible to sort the result of Map/Reduce with a list function.
curl http://.../design-doc/_list/sort/count?group=true
Original title and link for this post: CouchDB Tips & Tricks: List Functions for Sorting Map/Reduce Results by Value (published on the NoSQL blog: myNoSQL)
Wednesday, 25 August 2010
CouchDB and Node.js: Couch Client ☞
MongoDB is not the only one getting Node.js attention:
This wrapper/driver implements some nice things like request batching and automatic revision and key generation. Usage should be simple and straight-forward. For anything advanced, a simple http client is exposed that already connected to the couch server.
Original title and link for this post: CouchDB and Node.js: Couch Client (published on the NoSQL blog: myNoSQL)
Tuesday, 24 August 2010
CouchDB: The Definitive Guide
The Creative Commons licensed CouchDB book: “CouchDB: The definitive guide” has changed (in good) its online face:
You can find it ☞ here.
Original title and link for this post: CouchDB: The Definitive Guide (published on the NoSQL blog: myNoSQL)
Friday, 20 August 2010
CouchDB Case Study: CouchDB at BBC presented by Enda Farrell
Presented at QCon London 2010:
Enda Farrell discusses how CouchDB is used by BBC for some of its websites, presenting the context it is deployed in, the operations performed against it, how replication and compacting works, some statistics, and how it is used at scale.
BBC is probably the most often mentioned CouchDB case study. You’ll learn a couple of very interesting tricks of running CouchDB at large scale.
Original title and link for this post: CouchDB Case Study: CouchDB at BBC presented by Enda Farrell (published on the NoSQL blog: myNoSQL)
Thursday, 19 August 2010
Document Databases Compared: CouchDB, MongoDB, RavenDB
Brian Ritchie has two posts (☞ here and ☞ here) covering three document databases: CouchDB, MongoDB, and RavenDB concluding with the matrix below:
But before using this as a reference material there are a couple of corrections needed:
They have some special characteristics that make them kick some serious SQL.
- Objects can be stored as documents: The relational database impedance mismatch is gone. Just serialize the object model to a document and go.
- Documents can be complex: Entire object models can be read & written at once. No need to perform a series of insert statements or create complex stored procs.
- Documents are independent: Improves performance and decreases concurrency side effects
- Open Formats: Documents are described using JSON or XML or derivatives. Clean & self-describing.
- Schema free: Strict schemas are great, until they change. Schema free gives flexibility for evolving system without forcing the existing data to be restructured.
- Built-in Versioning: Most document databases support versioning of documents with the flip of a switch.
- Judging by the growing number of document database mapping tools, I’m not sure impedance mismatch is really gone (related to 1st point above)
- Using embedded format is not always the best solution for mapping relationships and other more complex data structures. (related to 2nd and 3rd points above)
- Versioning is an extra-feature that is not fundamental to document databases. MongoDB and CouchDB do not support it by default, but there are different solutions available
Related to the matrix comparison:
- Versioning is not supported by either MongoDB and CouchDB. MVCC should not be confused for document versioning
- Sharding: CouchDB doesn’t support sharding out of teh box. There are different solutions for scaling CouchDB, using Cloudant Dynamo-like scaling solution for CouchDB, or even running CouchDB with a Riak backend
- Replication: both MongoDB and CouchDB support master/master and master/slave
- Security: check firstly the NoSQL databases and security post and decide for yourself and the “basic” level is enough for your app
Original title and link for this post: Document Databases Compared: CouchDB, MongoDB, RavenDB (published on the NoSQL blog: myNoSQL)


