Come mantenere una struttura di database quando ci sono più istanze del DB?

2

Ho creato un'applicazione in grado di creare e aggiornare documenti. Un documento è un database relazionale (è un database SQLite).

Ho intenzione di aggiornare la struttura del database (aggiungere campi, aggiungere relazioni, aggiungere tabelle)

Il database memorizza database_version di per sé. Ho intenzione di integrare gli script SQL di aggiornamento nel software e applicarli in base alla versione del database caricato. Nota Non aggiornerò o rimuoverò mai tabelle o campi poiché desidero la piena compatibilità retroattiva

È una buona soluzione o ce n'è una migliore?

    
posta JiBéDoublevé 23.09.2016 - 13:42
fonte

2 risposte

1

In pratica stai rotolando a casa uno strumento di migrazione del database. Mentre l'approccio è corretto, sono riluttante a proporre che tu lo scriva da solo. Ci sono un certo numero di strumenti là fuori che possono gestire questo per voi che sono temprati dalla battaglia e sono stati testati accuratamente attraverso centinaia (se non migliaia) di applicazioni. Ti consiglio di esaminarli.

    
risposta data 27.09.2016 - 10:04
fonte
0

Lascia che ti dica come è fatto dove lavoro:

  1. Sviluppiamo il nostro database ( Firebird ) con un IDE ( IB Expert ).
  2. Quando arriviamo a un punto in cui le modifiche sono considerate complete, creiamo uno script di differenza strutturale con l'IDE fornendo il vecchio e il nuovo database.
  3. Estendiamo manualmente lo script diff con le istruzioni DML, se necessario.
  4. Quindi, viene rilasciata una nuova versione della nostra applicazione client. Al suo avvio, controlla la versione del database (salvata nel database) e - se la versione è precedente - applica lo script al database. Quando lo script è stato applicato correttamente, la versione del database nel database viene aggiornata.

Questo dipende completamente dalle capacità del nostro IDE del database. SQLite fornisce uno strumento sqldiff.exe per diffondere due database.

    
risposta data 27.09.2016 - 10:35
fonte

Leggi altre domande sui tag