Foto Francisca Ulloa.

During my many years of development using Java, .NET, vb, etc., the “recommended” way of storing data was always through a “Relational Database”

Well, that was great for the most part, but when you start to develop Object Oriented structures, things start to break down. The world is not “table oriented” and real world relations cannot be embedded naturally in “relational databases”.

Every day the Agile world needs flexible data modeling. The developer has to design and optimize data (objects), not the dba (king of tables status quo). How many of us have to explain how an ORM works to a DBA, while the DBA backpedals, not wanting to lose control over his database?

The DBA is only doing his job because of relational database design. The design is the problem, not the DBA.

The web is the clearest example where table oriented design lacks flexibility. You have to practically design and develop with one hand tied behind your back.

These limitations have spurred several people think and create alternatives to this big problem in web development, resulting in the availability of Document Oriented databases like CouchDB and MongoDB

Maybe you’re a diehard relational database developer, but I suggest you “think out of the table” and give these new tools a try.

The new concept of document against table will let you represent richer objects, and design and embed the right things in the right place.

All the data is represented in JSON. That makes our JavaScript code very happy.

The bonus of this new document oriented databases is that they were build from the ground up for web environment, so replication, distribution, and availability is ready right out of the box, and is easy to use.

This is the beginning of a new and powerful way to develop, removing the limitations of structured table designed data.

Actually I’m developing a new project in Rails using CouchDB as the only storage for objects using “CouchRest”. The experience is awesome.

4 Responses to “Thinking out of the Table”

  1. Luis Lavena Says:
    Nice writeup, Peter :-) Been playing with MongoDB and MongoMapper for the past days and enjoying it. Even better, works on Windows, out of the box. It definitely require a change of mindset and approach to relational problems. One thing to mention is that while relational databases approach the problem to reduce duplication, and paying the price in expensive and complex inter-table-joins. document databases are more duplication friendly. Just a random thought :-D Cheers!
  2. Pedro Visintin Says:
    Thanks for commenting, and you are right, duplication is another issue that document oriented database handles better. ;-)
  3. Diego Algorta Says:
    Hey Pedro (and Luis)! It's been long my friends... I've been reading about this subject (relational vs. document vs. keystores, etc) since long but never really tested them yet. I think my worst concern is about how to administrate atomic transactions and complex relationships between objects. Do you have any good source to learn by example on how to attack those issues with document oriented databases? Also, here's a nice link on the subject: http://cacm.acm.org/blogs/blog-cacm/32212-the-end-of-a-dbms-era-might-be-upon-us/fulltext
  4. Pedro Visintin Says:
    Hey Diego, thanks for comment! I'm not sure if this kind of databases or storage will replace all RDBMS, and one size does not fits all, but at this point what I recommend is the experience of "think out of the table". I believe that couchdb and mongodb fits in several cases (most web or may be desktop?), but in other cases RDBMS cannot be replaced easily, specially with legacy systems.
© copyright. All rights reserved. Pedro Visintin