2016-05-23 20 views
66

Ho bisogno di utilizzare uno strumento/framework di migrazione del database per le mie applicazioni basate su Spring Boot/Node.js. Dopo aver esplorato le funzionalità di Liquibase e Flyway, sono un po 'confuso su quale usare. Mentre il supporto per il rollback, il changeset neutrale rispetto al database, ecc. Mi attrae verso Liquibase, d'altra parte la semplicità (basata su SQL), la procedura migliore e il supporto PL/SQL mi stanno spingendo verso Flyway.Liquibase vs Flyway quale usare?

Abbiamo bisogno di più punti di dati concreti qui prima di decidere finalmente su questo.

+3

Hai creato una domanda alla quale solo tu puoi rispondere in base al tuo ambiente e ai piani di progetto. Liquibase - supporto per il rollback, changeset neutrale rispetto al database, ecc. Flyway: semplicità (basata su SQL), procedura migliore e supporto PL/SQL. –

+0

Roger hai altro nella tua mente? Come ogni caratteristica importante fornita da uno di loro ma non da altri? – Tanmoy

+0

Sono strumenti diversi e quindi è necessario mappare le loro funzionalità a ciò che si vuole fare durante lo sviluppo. La risposta di cralfaro espande l'elenco delle differenze, ma non hai elencato ciò che miri a ottenere con una soluzione, quindi è difficile per chiunque fornire una risposta diretta. –

risposta

97

Ho già utilizzato entrambi gli strumenti e, quindi, queste sono le principali differenze.

Flyway

  1. facile da configurare - è sufficiente un percorso di cartella e mantenere un nome sintassi V1__file.sql, ...
  2. basato su SQL, ma è necessario scrivere il diritto sintassi del tuo motore di database specifico (Mysql, DB2, ...)
  3. È basato su Java, quindi aggiungere una configurazione personalizzata per pulire, eseguire ecc. è più semplice.

Liquibase

  1. Bisogno di un file principale "changelog" per tenere traccia di tutti eseguiti di modifiche.
  2. È basato su XML, quindi è necessario utilizzare tag specifici di liquibase per creare il codice SQL . Questo è perfetto per migrare il codice su un diverso motore DB : non sarà necessario modificare nulla, e solo il driver DB dirà a liquibase come tradurre da tag XML alla sintassi SQL corretta.
  3. Se si utilizza il tag sql di liquibase, non si utilizzerà il punto 2, quindi sarebbe preferibile utilizzare Flyway.
  4. Liquibase fornisce un jar per migrare automaticamente un DB esistente in tutti i file XML necessari, quindi non è necessario lavorare manualmente su di essi. Abbastanza utile

Ora spetta a voi decidere che cosa avete bisogno per il vostro progetto, se è necessario migrare a un diverso motore di DB in futuro ecc

+7

Le versioni più recenti di Liquibase supportano semplici changeset SQL con metadati come commenti SQL –

+2

Penso che valga la pena aggiungere che Liquibase può generare comandi di rollback automatici per molte modifiche DDL. – Kafkaesque

+0

Flyway supporta anche le migrazioni basate su Java vedere https://flywaydb.org/getstarted/java –

24

ho usato Liquibase. Per applicazioni di livello enterprise (dove si collaborano team diversi), Liquibase è molto adatto a voi. Mi piace la funzione di rollback.

Per le piccole applicazioni Flyway sarà utile per la semplicità.