100%
← Quay lại

Database Migration

AI bổ sung
Khái niệmDữ liệu

Nó 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.