Alex Popescu, who is InfoQ.com's chief architect, makes a case for using a relational database without schemas:
By now the solution should become quite obvious: instead of persisting the object by storing it field by field, we would just serialize the whole object with all its properties. Basically, the table will need just 2 fields: an ID and a field that can store our serialized object.
I'm usually a big fan of Alex's work and agree with almost everything he writes – but this time I couldn't disagree more: Using an RDBMS in this way is an abuse IMO, and in fact one of the examples I use as an anti-pattern when I rent about HTTP abuse. I know it's in no way cool to say so, but I'm in fact a big fan of relational databases. As with any technology, they're not always a good match, but in very many cases they are. (You might think you need a fast reliable replicated high-performance clustered key-value storage engine, but you're probably wrong as long as your app doesn't have a few hundred thousand users. [Which I admit InfoQ.com has, but I'm not sure that was Alex's context here.])
Relational databases make sense when I can actually use them the way they were supposed to be used - namely, with the flexibility to select, filter, combine, update and delete available information in tabular form. If you can't do meaningful SELECTs anymore, why would you want to use a relational database?
i agree that this is a Bad Idea. if you want a key/value store, use a key/value store and get the simplicity, scalability, and performance gains that come with it. i guess this is a good example of “if all you’ve got is a hammer, everything looks like a nail”. it reminds me of the early papers about XML storage that proposed the same idea: have a generic table for the nodes and a generic table for the edges of the XML tree. it works in theory, but it’s a serious metamodel mismatch and almost useless when you want to start working with your actual model, the XML tree.