Database Migrations¶
Gestione delle migrazioni dello schema database tramite Liquibase.
Strumento di Migrazione¶
Il progetto utilizza Liquibase (non Flyway) per le migrazioni database. Le tabelle di tracking sono:
| Tabella | Descrizione |
|---|---|
databasechangelog |
Log di tutte le migrazioni eseguite |
databasechangeloglock |
Lock per prevenire esecuzioni concorrenti |
Queste tabelle sono presenti sia in own_c_a662 (278 migrazioni) che in own_generale.
Stato Attuale Migrazioni¶
Database c_a662 (schema own_c_a662)¶
278 changeset eseguiti. Le migrazioni gestiscono:
- Creazione tabelle
vv_*,vf_*,vp_* - Aggiunta colonne per nuove funzionalita
- Creazione indici e vincoli
- Inserimento dati di lookup nelle tabelle
vf_* - Aggiornamenti parametri in
vp_*
Database generale (schema own_generale)¶
Migrazioni per le tabelle di configurazione globale vg_*.
Regole per Nuove Migrazioni¶
Non modificare migrazioni gia eseguite
Le migrazioni gia presenti in databasechangelog non devono MAI essere modificate. Il checksum MD5 cambierebbe causando un errore al prossimo avvio. Per correzioni, creare sempre una nuova migrazione.
Convenzioni¶
- Formato file: XML Liquibase
- Naming: Seguire la numerazione progressiva esistente
- Author: Nome sviluppatore
- Changeset ID: Univoco e descrittivo
Esempio Changeset¶
<changeSet id="add-column-vv-verbale-new-field" author="developer-name">
<addColumn tableName="vv_verbale" schemaName="own_c_a662">
<column name="new_field" type="varchar(50)">
<constraints nullable="true"/>
</column>
</addColumn>
</changeSet>
Workflow¶
- Creare il changeset XML nel file di migrazione appropriato
- Testare in locale contro il database di sviluppo
- Verificare che
databasechangelogregistri il nuovo changeset - Committare il file di migrazione nel branch
- La migrazione viene eseguita automaticamente al deploy dell'applicazione
Rollback¶
Liquibase supporta il rollback automatico per operazioni standard (addColumn, createTable). Per operazioni piu complesse, definire esplicitamente il rollback: