• I worked on a project for about three years (it was supposed to take 18 months) that still wasn't done when I left the company. They too had jumped on the premature optimization band wagon taking it to mean, as many do, that you don't have to design anything, ever. They primarily used nHibernate as the means of ignoring the database (instead of ORM, they made it into OOM, Object-to-Object-Mapping). It completely eliminated the database and DBAs from their development process...

    Now, 4.5 years into the project (again, it was only going to be 18 months long, eliminating the DBAs is part of what makes it so much faster to deliver...) they still haven't delivered and they're finding HUGE performance issues. Plus, here's a shocker, people actually expect to be able to run reports on the data, but since it's stored as objects, you can't easily cut across it. They are throwing money at the problem currently. They've implemented Availability Groups to create a read-only mirror of the database so that they can remove reporting from the production system, but that didn't fix the performance issues. Now, they're working on a full-blown database design and will build a load process to go from the object model to a relational model, but only for reporting. It's a nightmare. What's more, it's a nightmare that I predicted, in a detailed report, written 4.5 years ago when the project started.

    You're not alone.

    What I'd say is happening is that developers seem to be more and more frustrated with the persistence of data. Combine this with a lack of understanding of data systems and you get ORM tools, No-SQL movements, pre-mature optimization as a design paradigm, etc.. It's all an attempt to bypass the thing that is hard for them. Unfortunately for all these guys, the core mechanisms of relational storage, either in OLTP normalized systems or Star schema's or whatever, still works. But it only works when you do it correctly.

    By the way, I'm not against ORM tools. I think they're great. But you still need a database design. I'm not against MongoDB or any of the other NoSQL databases, but when you have to do reporting against them, you're going to relational storage again. The simple fact is, the relational model is a good one and nothing has yet come along that will completely replace it. Not yet.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning