Immagina questo caso d'uso:
Ho una classe con 50 attributi di cui 10 sono relazioni più 100 metodi che eseguono calcoli e restituiscono un valore.
Ho bisogno di salvare quei dati (comprese le relazioni e i valori di ritorno del metodo) in un database per un successivo recupero. L'idea è di avere un'istantanea dello stato corrente dell'istanza dell'oggetto .
Attualmente ho solo bisogno dei dati di 20 di tali attributi e 25 valori di ritorno del metodo, ma in futuro sarà necessario recuperarne altri. Probabilmente non userò mai alcuni dei dati salvati.
Potrei facilmente salvare e recuperare i dati da un JSON.
Ora immagina che dopo 3 mesi dopo aver generato e salvato 1.000.000 di istanze di questa classe, ho bisogno di iniziare a cambiare le cose alla fine, ad esempio:
- Cambia il nome di 2 attributi e 3 metodi
- Elimina una relazione
- Dividi il valore di un attributo in 2 parti (ad esempio object.name in object.first_name object.last_name)
- Aggiungi 5 nuovi metodi e attributi
Sebbene non sia necessario interrompere il recupero dei dati per i dati storici (vale a dire, aggiorna i registri o procedo di conseguenza sul recupero).
Avendo preso in considerazione quel caso d'uso:
Qual è l'approccio migliore per la conservazione, la manipolazione e il recupero dei dati? (parlando in termini di database, schemi di progettazione e altri mezzi tecnici)