What is a recommended architecture for providing storage for a dynamic logical database schema?
To clarify: Where a system is required to provide storage for a model whose schema may be extended or altered by its users once in production, what are some good technologies, database models or storage engines that will allow this?
A few possibilities to illustrate:
- Creating/altering database objects via dynamically generated DML
- Creating tables with large numbers of sparse physical columns and using only those required for the 'overlaid' logical schema
- Creating a 'long, narrow' table that stores dynamic column values as rows that then need to be pivoted to create a 'short, wide' rowset containing all the values for a specific entity
- Using a BigTable/SimpleDB PropertyBag type system
Any answers based on real world experience would be greatly appreciated