Hibernate’s Gavin King recently published A Defense of the RDBMS. He has several useful points about ORM and object databases and their as-yet lack of success. Perhaps the most salient point is in the conclusion, however.
If you think that relational technology is for persisting the state of your application, you’ve missed the point. The value of the relational model is that it’s democratic. Anyone’s favorite programming language can understand sets of tuples of primitive values. Relational databases are an integration technology, not just a persistence technology. And integration is important. That’s why we are stuck with them.
Every non-trivial project I’ve ever worked on that both used a database and was more than a startup’s website had multiple programs accessing the database.
Actually, that’s not true. They all accessed the data.
The features of the relational model–especially correctness, coherence, and lack of duplication–help preserve the integrity of that data across applications. Arguing that the application layer is the proper place to enforce constraints (as I’ve heard from some ActiveRecord proponents) is like arguing that wrapping binary data in a a pair of XML tags is advantageous for office documents.
If and only if your application is the only one that will ever access the data, perhaps that’s the right choice… though why are you using a relational database in that case?