Dbmate è uno strumento Open Source per la migrazione di database che ha il vantaggio di garantire la sincronizzazione a livello di schema tra server di produzione e sviluppatori coinvolti nel medesimo progetto. Si tratta nello specifico di un tool da linea di comando che può essere utilizzato con diversi linguaggi e framework tra cui Go, PHP, Python, Node.js, Ruby e qualsiasi altra soluzione utilizzabile per la realizzazione di applicazioni costruite intorno alle basi di dati.
Le funzionalità di Dbmate
Dbmate risulta particolarmente utile quando si devono realizzare più servizi in linguaggi differenti. Sono supportati alcuni dei Database engine più popolari tra cui MySQL, PostgreSQL ed SQLite. Gli schemi di migrazione vengono realizzati utilizzando SQL e il versionamento basato sui timestamp impedisce che si verifichino conflitti tra i numeri delle release rilasciate dai vari sviluppatori. A livello tecnico ciascuna migrazione viene eseguito all'interno di una transaction.
Con Dbmate si possono sia creare che cancellare database, è supportata la lettura delle variabili di ambiente dal file .env
e si possono salvare file schema.sql
per effettuare diff
tramite git con cui evidenziare e verificare le modifiche apportate. Gli URL per le connessioni ai database vengono definite utilizzando un variabile d'ambiente. Quest'ultima è DATABASE_URL
come impostazione predefinita ma può essere specificata anche tramite linea di comando.
Installazione di Dbmate
Dbmate può essere installato in vari modi, ad esempio attraverso un'immagine Docker con il comando:
$ docker run --rm -it --network=host ghcr.io/amacneil/dbmate --help
In Linux l'installazione può essere effettuata sfruttando il binario per le architetture a 64 bit:
$ sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
$ sudo chmod +x /usr/local/bin/dbmate
In Windows è possibile utilizzare Scoop, un command-line installer appositamente dedicato ai sistemi operativi di Microsoft:
scoop install dbmate
Mentre su macOS basta sfruttare il Package Manager Homebrew:
$ brew install dbmate
La pagina ufficiale del progetto pubblicata su GitHub presenta una documentazione completa con tutte le opzioni da linea di comando utilizzabili.