Les migracions de bases de dades són una part essencial del desenvolupament d'aplicacions modernes. Permeten gestionar els canvis en l'esquema de la base de dades de manera controlada i repetible. En aquest tema, aprendrem com utilitzar eines de migració en Go per gestionar aquests canvis.

Objectius d'Aprenentatge

Al final d'aquest tema, hauràs après:

  • Què són les migracions de bases de dades i per què són importants.
  • Com utilitzar una eina de migració popular en Go.
  • Com crear, aplicar i revertir migracions.

Què són les Migracions de Bases de Dades?

Les migracions de bases de dades són scripts que modifiquen l'esquema de la base de dades. Aquestes modificacions poden incloure la creació de taules, l'alteració de columnes, l'eliminació de taules, etc. Les migracions permeten:

  • Mantenir l'esquema de la base de dades sincronitzat amb el codi de l'aplicació.
  • Facilitar la col·laboració entre desenvolupadors.
  • Assegurar que els canvis en l'esquema es poden aplicar de manera controlada i repetible.

Eina de Migració: golang-migrate

Una de les eines més populars per gestionar migracions en Go és golang-migrate. Aquesta eina permet crear, aplicar i revertir migracions de manera senzilla.

Instal·lació de golang-migrate

Per instal·lar golang-migrate, pots utilitzar go get:

go get -u -d github.com/golang-migrate/migrate/cmd/migrate

Creació d'una Migració

Per crear una nova migració, utilitza la següent comanda:

migrate create -ext sql -dir db/migrations -seq create_users_table

Aquesta comanda crearà dos fitxers SQL a la carpeta db/migrations:

  • 000001_create_users_table.up.sql
  • 000001_create_users_table.down.sql

Exemple de Migració

Suposem que volem crear una taula d'usuaris. El fitxer 000001_create_users_table.up.sql podria contenir:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

El fitxer 000001_create_users_table.down.sql podria contenir:

DROP TABLE users;

Aplicació de Migracions

Per aplicar les migracions, utilitza la següent comanda:

migrate -path db/migrations -database postgres://user:password@localhost:5432/mydb?sslmode=disable up

Revertir Migracions

Per revertir l'última migració aplicada, utilitza la següent comanda:

migrate -path db/migrations -database postgres://user:password@localhost:5432/mydb?sslmode=disable down 1

Exercici Pràctic

Exercici 1: Creació d'una Taula de Productes

  1. Crea una nova migració per a una taula de productes.
  2. Defineix l'esquema de la taula amb les següents columnes: id, name, description, price, created_at.
  3. Aplica la migració a la teva base de dades local.
  4. Reverteix la migració.

Solució

  1. Crear la migració:
migrate create -ext sql -dir db/migrations -seq create_products_table
  1. Definir l'esquema de la taula en 000002_create_products_table.up.sql:
CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    price NUMERIC(10, 2) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
  1. Definir la reversió en 000002_create_products_table.down.sql:
DROP TABLE products;
  1. Aplicar la migració:
migrate -path db/migrations -database postgres://user:password@localhost:5432/mydb?sslmode=disable up
  1. Revertir la migració:
migrate -path db/migrations -database postgres://user:password@localhost:5432/mydb?sslmode=disable down 1

Resum

En aquest tema, hem après què són les migracions de bases de dades i com utilitzar l'eina golang-migrate per gestionar-les en Go. Hem vist com crear, aplicar i revertir migracions amb exemples pràctics. Les migracions són una eina poderosa per mantenir l'esquema de la base de dades sincronitzat amb el codi de l'aplicació i facilitar la col·laboració entre desenvolupadors.

© Copyright 2024. Tots els drets reservats