Process · Migration
Đổi tên cột bằng expand-contract
Expand-contract qua bốn lần deploy
Đổi tên cột Email thành ContactEmail không downtime: thêm cột mới, backfill và chuyển đọc sang cột mới, bỏ ghi cột cũ, rồi sau ít nhất một chu kỳ phát hành mới xoá cột Email.
≥ 1 CHU KỲ PHÁT HÀNH
DEPLOY 1
Expand
ADD ContactEmail NULL
DEPLOY 2
Backfill
UPDATE theo lô
DEPLOY 3
Bỏ cột cũ khỏi code
chỉ dùng cột mới
DEPLOY 4
Contract
DROP COLUMN Email
Email
ContactEmail
Email
ContactEmail
Email
Email
ContactEmail
Email
ContactEmail
ContactEmail
Email
ContactEmail
ContactEmail
ContactEmail
Email
ContactEmail
ContactEmail
ContactEmail
SCHEMA
cột trong bảng
CODE GHI
cột được ghi
CODE ĐỌC
cột được đọc
ContactEmail còn rỗng
đã chép dữ liệu sang
Email vẫn còn trong bảng
Email đã bị xoá
THỜI GIAN
Mỗi lần deploy đều rollback được độc lập: schema luôn chạy được với cả code cũ lẫn code mới.
CHÚ GIẢI
Cột cũ Email
Cột mới ContactEmail
Cột đã xoá
Bước phá huỷ: sao lưu trước
© tiennhm