Explaining things like Erlang, CouchDB, and Mnesia, to people can be trying sometimes. Explaining why anyone should bother to look at them even more so. So, when I read a blog entry at Racklabs that is sponsoring a talk by Jan Lehnardt that has quite a nice summary of what CouchDB is written by Jan I thought I would pass it along as a giant quote since it was said so well. Of course, if I had known all along that all I needed to say was that CouchDB is a, "super-duper thingymajong" then my life would have been so much more simple!
Most data is not inherently relational. CouchDB takes this idea and provides a data storage model that easily accommodates modern applications’ needs. Instead of doing the equivalent of manual memory management in a database, splitting all data up carefully in predefined, inflexible schemata, CouchDB stores records of data in independent ‘Documents’. They can be easily replicated to other instances of CouchDB for high availability and load balancing reasons.
Efficient retrieval of Documents is realized with map-reduce based ‘Views’. They allow aggregating and reporting as well as defining sub-sets of documents and expression of relations where needed. JavaScript is used to define Views and JSON to transport data.
Traditional database systems get pushed to their limits by modern web applications. The practices applied to gain speed and availability work often against the original design of a database. Common techniques like denormalization, partitioning and replication are central to CouchDB. Further, CouchDB is implemented in Erlang/OTP, a language and platform that is targeted at highly concurrent and fault tolerant systems.
This presentation explains the mind-set behind the Open Source database CouchDB. It explains scenarios where CouchDB’s features provide elegant solutions to problems where traditional database systems struggle. Even without knowing much about data storage, you will gain some insight about what is possible.
Original Blog Entry: