Database Migration
AI bổ sungNó là gì?
Cơ chế quản lý thay đổi cấu trúc database (schema) theo phiên bản, cho phép áp dụng, rollback và theo dõi lịch sử các thay đổi (tạo bảng, thêm cột, index, constraint, seed data) một cách có kiểm soát, lặp lại được và an toàn cho production.
Dùng để làm gì?
Đồng bộ schema giữa các môi trường (dev, staging, prod), cho phép team triển khai thay đổi DB tự động trong CI/CD, hỗ trợ rollback khi có lỗi, tránh việc chỉnh sửa DB thủ công gây mất dữ liệu hoặc lệch môi trường.
Chạy ở đâu?
Chạy như script/cli trong pipeline CI/CD hoặc lệnh migrate của framework (Node: Knex/Prisma/TypeORM, Python: Alembic, Go: golang-migrate, Java: Flyway/Liquibase, PHP: Doctrine Migrations, .NET: EF Core Migrations).
Nó thường đi với gì?
ORM (Prisma, TypeORM, Sequelize, EF Core, Hibernate, SQLAlchemy), CI/CD (GitHub Actions, GitLab CI, Jenkins), Database (PostgreSQL, MySQL, SQL Server, SQLite), Version control (Git).
App của mình khi nào cần?
Khi dự án có nhiều developer, cần deploy liên tục, schema thay đổi thường xuyên, cần rollback nhanh, hoặc phải tuân thủ audit trail thay đổi DB.
Khi nào không cần?
Dự án nhỏ, schema cố định, chỉ một người dev, hoặc dùng database schema-less (MongoDB) mà không cần migration chính thức (dù vẫn có thể dùng migration cho index/validation).
Từ khóa lỗi thường gặp
migration failed, checksum mismatch, dirty database, lock timeout, foreign key constraint fails, duplicate column, migration already applied, rollback failed
Một câu để nhớ
Schema version control — như Git cho database.