Migrazione ricorrente del database

0

Importo i dati dal vecchio sito Web a quello nuovo utilizzando le migrazioni del database. Ho creato prima come uno dei primi passi della fase di sviluppo del nuovo sito. Poi ho pianificato di crearne un altro, che eseguirà l'importazione dei dati finali alla fine del processo di sviluppo.

Allora mi sono trovato di fronte alla domanda, cosa succederà se verrà richiesta un'altra importazione un po 'più tardi?

Poiché (per molte ragioni) non possiamo permetterci una soluzione migliore (come un programma di installazione completo, in grado di migrare corrente dati in qualsiasi punto nel tempo) e poiché tale la situazione ha piccoli cambiamenti e non si ripeterà più. Ho suggerito che in questo caso dovremmo copiare la migrazione di importazione su tutti gli altri e eseguirla ancora una volta.

In risposta mi è stato suggerito di creare piuttosto una migrazione ricorrente. Cioè quello che aggiorna la tabella di migrazione nel database al termine del processo di migrazione, modifica il proprio timestamp e quindi costringe il sistema di migrazione a "pensare", che c'è sempre una nuova migrazione da applicare a tutti gli altri.

Sono rimasto un po 'sorpreso da tale suggerimento. È saggio e sicuro creare una cosa del genere?

    
posta trejder 24.03.2015 - 07:30
fonte

1 risposta

2

Se ti ho preso correttamente, devi migrare solo i dati da un database di produzione uno a un database di sviluppo e potresti dover ripetere tale processo alcune volte. Quindi, se implementi la migrazione in modo ripetibile e idempotente, questo non dovrebbe essere un problema. La soluzione più semplice potrebbe essere quella di cancellare tutti i dati precedentemente migrati dal tuo database di sviluppo prima di una nuova migrazione, ma potresti non essere soddisfatto per motivi di prestazioni o perché nel database di sviluppo sono presenti alcuni dati che potrebbero essere conservati lì. In questo caso, dovrai progettare un meccanismo di sincronizzazione tra questi due database, o almeno un meccanismo per conservare o ricreare i dati nel DB di sviluppo che non vuoi eliminare.

Ciò che non ti posso dire è se giocare con i timestamp della tua tabella di migrazione sarà un problema - per questo è necessario conoscere i dettagli cruenti del tuo framework.

    
risposta data 24.03.2015 - 10:49
fonte

Leggi altre domande sui tag