Definire uno schema DB e avere lo schema esistente conforme ad esso? [chiuso]

-1

Vedo molti strumenti di migrazione dei DB con funzioni su / giù che implementano / ripristinano le modifiche allo schema DB. Non ho mai visto uno strumento di migrazione in cui si definisce semplicemente lo schema e si modifica lo schema DB attuale per adattarlo alla nuova definizione.

I vantaggi:

  • Semplicità, non c'è bisogno di gestire un mucchio di alti / bassi
  • Collega facilmente lo schema con il tuo codice e mantieni entrambe le versioni controllate

Svantaggi:

  • Può far cadere i dati rimuovendo le colonne; dipende da come l'implementazione si occupa della rimozione delle colonne

Sto davvero male a Binging? Questo esiste già? In caso contrario, quali sono le ragioni? Se esiste, c'è un motivo per cui le applicazioni preferiscono un modello su / giù?

    
posta deadghost 09.04.2016 - 13:47
fonte

1 risposta

1

Questa sarebbe una bella caratteristica, e forse c'è un mercato per questo se scrivi il tuo.

Tuttavia, è una sfida molto complessa. Ad esempio, se lo schema di destinazione rinominerebbe una tabella o una colonna, lo strumento prenderà il nuovo schema con nuovi elementi, troverà lo schema esistente e li confronterà entrambi. Ma come potrebbe identificare in modo sicuro la ridenominazione e non confonderla con la goccia di una colonna obsoleta e la creazione di una nuova? In alcune circostanze, potrebbe formulare un'ipotesi plausibile (se la colonna viene utilizzata in chiavi o indici esterni).

Detto così brevemente, questa automazione funzionerebbe solo per semplici cambiamenti. Ma per modifiche semplici non hai davvero bisogno di uno strumento automatico. E c'è un alto rischio di database dannosi collegandosi a quello sbagliato.

Tuttavia il mercato è pieno di strumenti di modellazione, che possono reverse engineer ( questo è il termine per goolgle ) un database esistente per costruire un modello logico, ti permettono di aggiornare il modello e quindi generare script di aggiornamento ( oracolo , powerdesigner , ecc. ...). Quindi non l'automazione completa, ma con una certa saggezza umana nel processo.

C'è anche questo dbshema strumento che ha una funzionalità chiamata schema sincronizzazione , che assomiglia a quello che stai cercando, utilizzando lo schema corrente per effettuare la trasformazione. Non l'ho ancora usato, quindi ti permetterò di indagare ulteriormente (e forse condividi le tue conclusioni qui?).

    
risposta data 09.04.2016 - 17:13
fonte

Leggi altre domande sui tag