Just some feedback on ORM vs NoSQL.
I don’t disagree with a lot of your argument in favor of RDBMSes, but there are a few points that I have personally encountered that I would like to bring up.
First, Relational and ORM systems certainly provide a flexibility of use for data the NoSQL lacks. I think a lot of your points boil down to up front design of the data space for an application. If you do this work diligently, there is a lot of flexibility that comes with it.
However, having dealt with Google App Engine and porting applications, you get an intimate detailed account of how your ORM interacts with a large NoSQL database in a way that you rarely see with RDBMSes. ORM becomes, in the traditional sense, a layer of abstraction, that you have to understand in order to effectively develop an app. With less structured , or object oriented databases, you understand it at a more fundamental level. And “queries” mean more what they mean in real world cost than in an ORM system.
Systems like GAE which attach a real monetary cost to calls disillusion a lot of programmers about not just what the trivial cost of their queries are, but what the mapping costs are in CPU time.HIbernate or TopLink are great for bootstrapping an application. Yes, you can tweak them for performance. But something like App Engine with its mapping of traditional ORM to a NoSQL system can expose performance problems the traditional developer might not see.