Sobes.tech
Senior

Vertel over database-migraties: hoe hebben jullie ze uitgevoerd, hoe gingen jullie om met fouten tijdens de migratie?

sobes.tech AI

Antwoord van AI

Ik voerde meestal database-migraties uit met behulp van tools zoals Goose of Flyway, die het beheer van schema-versies mogelijk maken en wijzigingen sequentieel toepassen.

Migratieproces:

  1. Maakte migratiescripts met schemawijzigingen (tabellen maken, kolommen aanpassen, enzovoort).
  2. Testte de migraties in een testomgeving.
  3. Voerde de migraties uit op staging, en controleerde de correctheid.
  4. Voerde de migratie uit in productie met minimale downtime.

Foutafhandeling:

  • Gebruikte transacties in migraties om wijzigingen terug te draaien bij fouten.
  • Logde fouten en informeerde het team.
  • Bij kritieke fouten, rolde ik de migratie terug en analyseerde ik het probleem.
  • In complexe gevallen schreef ik scripts voor handmatige datacorrecties.

Voorbeeld van migratie van Goose naar 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
}

Deze aanpak biedt versiecontrole en veiligheid bij wijzigingen.