I have to say, I love the reactions to the first post. I also expected them. People arguing about the merits of RDBMS, personal attacks, supporting comments… Its great. A few people did however actually understand the meaning of my post.
The whole point behind my post is … There are many factors in selecting a data store some functional, some non-functional. We need to actually be doing analysis of these requirements and leave behind the viewpoint of the RDBMS being the default. Examples of technical factors would be how well they match up with our functional specifications, examples in organizational factors might be what resources are currently available, whether we are fitting into a larger scheme of things, and of course cost.
Its also important to note that I never intended to speak out against the RDBMS but the storing of a relational model within one. One could as a commenter pointed out implement a non-relational model in a relational model. As an example I actually show people how to build an event storage system within a relational database quite often, it is not however a relational model.
ORMs have become the default architecture without people spending the time to actually analyze other technical and organizational needs. Frankly ORMs are highly inefficient when dealing with OLTP scenarios. Other systems have long since been shown to be an order of magnitude more efficient. They are not only more efficient but they also lower development costs significantly because there is not an impedance mismatch between the object model and the relational model (again non-functional requirements). If we are in say a service oriented system where data models are private, one can make a relatively good argument for not using a relational backing store, of course its rare that people actually make decisions like this.
For some antidotal evidence, I regularly when talking with groups of developers and architects ask them to raise their hands if they are using a relational data model. I then ask them to put their hands down if there was any actual analysis done to come to that decision. Significantly less than 1% will keep their hands up. I see the same trend in organizations that i work with, there is no rational thought process being performed. Its like people have ended up in that dreaded position where they have become comfortable with something so they just fall back on it for every problem, hammer anyone?
One of the largest things people should be looking at is using multiple models. Many people in comments talked about reporting, why not have a separate reporting model? There is a reason why there are the terms OLTP and OLAP, they are very different concepts and have drastically different needs. May this increase costs on your application? Of course, but decisions should be made based on rational discourse about your situation including both systemic and organizational needs.
To me, the blame is mainly with the vendors, spraying their kool-aid high and low throughout organizations. Organizations and developers are all too happy to accept the one size fits all answer as it allows the creation of cookie cutter systems which can be a good thing but is not always.
A RDBMS is a bad fit for many situations and a good fit for many scenarios … which is it in yours? Performing actual analysis could not really hurt could it?
Posted
Fri, Feb 19 2010 11:02 AM
by
Greg