Sobes.tech
Senior

Cuéntenos sobre las migraciones de bases de datos: cómo las llevaron a cabo, cómo manejaron los errores durante la migración?

sobes.tech AI

Respuesta de la IA

Normalmente realizaba migraciones de bases de datos utilizando herramientas como Goose o Flyway, que permiten gestionar las versiones del esquema y aplicar cambios de manera secuencial.

Proceso de migración:

  1. Creaba scripts de migración con cambios en el esquema (crear tablas, modificar columnas, etc.).
  2. Probaba las migraciones en un entorno de prueba.
  3. Aplicaba las migraciones en staging, verificando su correcta ejecución.
  4. Ejecutaba la migración en producción con el mínimo tiempo de inactividad.

Manejo de errores:

  • Utilizaba transacciones en las migraciones para revertir cambios en caso de error.
  • Registraba errores y notificaba al equipo.
  • En errores críticos, revertía la migración y analizaba el problema.
  • En casos complejos, escribía scripts para correcciones manuales de datos.

Ejemplo de migración de Goose a Go:

package main

import (
    "database/sql"
    "github.com/pressly/goose/v3"
)

func Up(tx *sql.Tx) error {
    _, err := tx.Exec(`ALTER TABLE users ADD COLUMN age INT;`)
    return err
}

func Down(tx *sql.Tx) error {
    _, err := tx.Exec(`ALTER TABLE users DROP COLUMN age;`)
    return err
}

Este enfoque garantiza el control de versiones y la seguridad en los cambios.