I'm toying with the idea to write another framework to make it easier to develop "bread'n'butter" applications (like create a class with N fields, get an editor for that for free plus the DB persistence).
All data models can be converted into the Entity-Attribute-Value form:
TYPE VARCHAR(32)
ID LONG INT
NAME VARCHAR(32)
VALUE VARCHAR(64000)
with maybe a second table for really large fields so I'd keep a reference in the VALUE column to the entry in the BLOB table. If I was in the mood, I could create one table per value type (so int would INTEGER, avoiding all the transformation problems) and I could use a table to define valid TYPEs, etc.
This would effectively free me from having to worry about the DB design since there isn't one. The database could adjust to any change in my model by using simple updates. I could even have instances of the same class with additional fields.
The drawback is that for each object, I need to read N rows or I need to start with building complex queries which contain N subqueries.
Does anyone have experience with this? Has anyone ever implemented a larger system this way? What other options are out there to persist data besides the normal SQL? I'd especially like to hear about agile systems which adopt easily to changes in the model or which allow to "patch" the model (usually, an instance will have a name but for some, I'd also like to add a comment). Or has anyone encountered something post-SQL? The next great thing?