Relaxing the Database with CouchDB
One 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.
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!