Todo esto depende de su aplicación. ¿Es una aplicación distribuida, donde las aplicaciones antiguas pueden encontrar nuevos objetos de datos de una base de datos central u otra fuente? (Al igual que las versiones anteriores de aplicaciones de oficina necesita tener algunas maneras de tratar con formatos de documentos más recientes.)
Si es así, la serialización y deserialización de encargo con el esquema de numeración explícita versión, yo diría. Pondría metadatos explícitos en cada elemento y atributo, indicando si un lector debe entender el elemento/atributo (y los valores predeterminados si no). Por supuesto, esto puede consumir bastante espacio e incrementar la complejidad del código ...
Pero la respuesta realmente depende de por qué está serializando en una base de datos. ¿No estás interesado en usar la base de datos para sus capacidades relacionales? De lo contrario, una solución de mapeo O/R podría ser de interés.
Creo que esta es la solución más flexible. –