Relaxing the Database with CouchDB

February 5, 2009

Couch DB - Relaxing the DatabaseOne of the most challenging (but enjoyable!) aspects of being an effective technology-driven services company is staying abreast of innovation. Yesterday I was able to spend some time with an open source software project called CouchDB that is shaking things up. Don't let the DB on the end of its name fool you: CouchDB is not your traditional database software.

Databases are strict. If you've ever worked with a database, whether MySQL or Microsoft Access, you've likely experienced their rigidity. "But there's no field to store that!" In a database table there are a fixed number of columns, or fields, for a given row. Database designers are able to create more complex data models by creating 'relationships' between tables. For example a Customers table will have a one-to-many relationship with an Orders table. This means one customer can have many orders. I'll spare any more detail here but the paradigm of "Relational Data Base Management Systems" (RDBMS) originated in academia in the 70s and has dominated commercial database software for the last 30 years.

CouchDB is breaking that model as a schema-free database meaning it has no tables, rows, columns, or relationships. If the database doesn't store tables, what does it store? CouchDB stores "Documents" which have an ID and can be arbitrarily structured. This is even more of a departure the traditional model than Google's own proprietary database BigTable which still employs a table with rows and columns but allows individual rows to have arbitrary columns. The sprawling nature of the internet and web applications are leading systems developers to rethink the barriers of the RDBMS model. Microsoft, Amazon, Facebook, and Yahoo all also have internet-purposed database technologies departing from the RDBMS model to achieve flexibility, scalability, and reliability.

RDBMS vs CouchDB

For us, and for many small, internet focused development teams, the industry's momentum in this space is really exciting because it is driving sponsorships of open-source projects like Apache & IBM's CouchDB, Yahoo's Hadoop + HBase, and Facebook's Cassandra. In the not-so-distant future, as these infrastructure projects mature out of incubation, we may very well move our own software away from the RDBMS to a platform like CouchDB. The increase in flexibility could translate into some very neat new possibilities for clients using our software! Incredible times to be at the forefront of software innovation!


 Jan's avatar

Hi Kris,

excellent article, thanks you!


 Kris Jordan's avatar
Kris Jordan

Its use of Javascript to perform incremental map/reduce over a database's document set is a very fun concept to bend your mind around and tinker with coming from SQL. By having a flat key space with multi-version concurrency control CouchDB is setting itself up for high scalability and redundancy. These new databases won't replace RDBMS for the traditional uses of RDBMS but do provide interesting new paradigms for web applications.

 Adam Covati's avatar
Adam Covati

Hmmm, this sounds pretty interesting. I'll have to dig into to see what it's all about. However, often times the rigidity of a db is what makes it so reliable and useable.

That being said, I'm sure this will open some doors that traditional DBs have barred shut. The fact that the primary access method is a RESTful HTTP interface (e.g. ajax) is fantastic and seems to be a huge boon for lowering infrastructure creation, setup time, and the general learning curve for new webapps.

Bravo to them for thinking outside the box.

Leave a comment