Sto cercando di progettare un sistema in cui gli utenti costruiscono un oggetto modello e quindi creano molte istanze basate su questo modello. Devono quindi essere in grado di personalizzare ogni istanza, ma ho anche bisogno che siano in grado di apportare modifiche al modello e avere tutte le istanze aggiornate. Questi elementi sono abbastanza complessi, ciascuno costituito da molti componenti che verranno archiviati in numerose tabelle di database.
Vedo due percorsi di implementazione.
- Conserva copie complete dei modelli per creare le istanze e migrare gli aggiornamenti alle istanze.
- Archivia i record solo per le modifiche e crea ciascuna istanza da una combinazione del modello e delle modifiche all'istanza.
Credo che la prima opzione creerebbe molti dati extra non necessari, tuttavia la seconda strada introduce complessità nella ricerca dei dati.
Sembra che sia stato probabilmente implementato molte volte prima, ma ho difficoltà a trovare molto materiale di lettura. Ci sono nomi comuni per modelli di dati o opzioni di pattern utilizzati nelle implementazioni di tali sistemi?
Sarebbe anche utile qualche consiglio su vantaggi o insidie di ciascuna opzione, altre opzioni o indicazioni sull'implementazione.
modifica
Mi dispiace che non sia stato chiaro. Stavo cercando un nome per l'architettura generale, non un modello di design. Sono gli utenti finali che creano istanze non sviluppatori.
Ad esempio, il sistema potrebbe consentire agli utenti di definire modelli per modellare i processi di produzione di molti articoli. Quindi, in diversi siti in cui le strutture o i requisiti sono diversi, l'utente finale userebbe uno di questi modelli per definire un processo specifico per quel sito. Le cose verranno aggiunte, rimosse e modificate per ciascun sito.
Credo che andrò con l'opzione due sopra menzionata, memorizzando solo le modifiche delta, non le copie complete.