Một cách sử dụng khác mà dường như chưa có câu trả lời nào đề cập đến là việc triển khai các thay đổi cấu trúc bảng dễ dàng hơn.
Giả sử, bạn muốn gỡ bỏ một bảng ( T_OLD
) chứa dữ liệu cho người dùng đang hoạt động và thay vào đó sử dụng một bảng mới có dữ liệu tương tự (được đặt tên T_NEW
) nhưng một bảng có dữ liệu cho cả người dùng đang hoạt động và không hoạt động, với một cột bổ sung active
.
Nếu (các) hệ thống của bạn có các truy vấn gazillion SELECT whatever FROM T_OLD WHERE whatever
, bạn có hai lựa chọn để triển khai:
1) Cold Turkey - Thay đổi DB, đồng thời thay đổi, kiểm tra và phát hành nhiều đoạn mã chứa truy vấn đã nói. RẤT khó thực hiện (hoặc thậm chí phối hợp), rất rủi ro. Xấu.
2) Dần dần - thay đổi DB bằng cách tạo T_NEW
bảng, bỏ T_OLD
bảng và thay vào đó tạo một CHẾ ĐỘ XEM được gọi là T_OLD
bắt chước T_OLD
bảng 100% (ví dụ như truy vấn chế độ xem SELECT all_fields_except_active FROM T_NEW WHERE active=1
).
Điều đó sẽ cho phép bạn tránh phát hành BẤT KỲ mã nào hiện đang chọn từ đó T_OLD
và thực hiện các thay đổi để di chuyển mã từ đó T_OLD
sang T_NEW
khi rảnh rỗi.
Đây là một ví dụ đơn giản, có những người khác tham gia nhiều hơn.
PS Mặt khác, có lẽ bạn nên có một API thủ tục được lưu trữ thay vì các truy vấn trực tiếp từ T_OLD
, nhưng không phải lúc nào cũng vậy.