So sánh và merge model
Khi data model sống đủ lâu, sẽ luôn có nhiều “phiên bản sự thật” cùng tồn tại: bản thiết kế chuẩn của team architect, bản đã chỉnh của team dev, và schema đang chạy thật trên production. Tính năng Compare and Merge Models của Hackolade Studio giúp bạn đặt hai phiên bản cạnh nhau, nhìn thấy từng khác biệt và quyết định giữ gì, bỏ gì — thay vì dò bằng mắt qua hàng trăm entity.
Mở tính năng và chọn hai model
Phần tiêu đề “Mở tính năng và chọn hai model”Bạn có thể khởi động việc so sánh theo hai cách: từ trang Welcome khi chưa mở model nào, hoặc qua menu Tools > Compare and Merge Models. Sau đó chọn hai file model để so sánh — cả hai phải là data model Hackolade hợp lệ và cùng một target (cùng loại database/công nghệ đích).
Quy ước quan trọng: model bên trái là bản gốc (baseline), model bên phải là bản tiến hóa. Trong các kịch bản merge nâng cao, việc đặt model nào bên phải có thể ảnh hưởng kết quả — vì khi hai bên xung đột, giá trị mặc định được lấy từ model bên phải.
So sánh model với database thực tế thì sao?
Phần tiêu đề “So sánh model với database thực tế thì sao?”Hackolade không so sánh trực tiếp model với một database đang chạy. Cách làm chuẩn là hai bước: reverse engineering (đọc ngược cấu trúc từ database instance thành một model) database thực tế thành một file model, rồi so sánh file đó với model baseline. Kết quả là bạn vẫn trả lời được câu hỏi “tài liệu thiết kế và thực tế trên prod lệch nhau chỗ nào” — đây chính là use case “Compare a baseline model with schema in prod” trong tài liệu hãng.
Đọc kết quả diff
Phần tiêu đề “Đọc kết quả diff”Màn hình so sánh hiển thị mọi loại object — container, entity, view, relationship, definition, attribute — cùng các property của chúng, với mã màu kèm biểu tượng badge:
| Màu | Ý nghĩa |
|---|---|
| Xanh nhạt (pale blue) | Thêm mới — chỉ có ở model bên phải |
| Vàng | Sửa đổi — cùng object nhưng property hai bên khác nhau |
| Xanh lá | Di chuyển — cùng object nhưng vị trí khác |
| Đỏ | Xóa — chỉ có ở model bên trái |
Về cách ghép cặp object giữa hai bên: nếu hai model có chung nguồn gốc (ví dụ một file được copy ra rồi chỉnh sửa), Hackolade khớp bằng ID nội bộ. Nếu hai model đến từ nguồn khác nhau — điển hình là baseline so với model vừa reverse-engineer từ database — công cụ tự động chuyển sang khớp theo technical name (hoặc business name), và bạn có thể chỉnh tay cách ghép cặp khi cần.
Merge có chọn lọc
Phần tiêu đề “Merge có chọn lọc”Thao tác merge không sửa đè lên hai model gốc — nó tạo ra một model thứ ba là kết quả merge. Màn hình merge gồm ba khung: model trái, kết quả merge ở giữa, model phải. Bạn kiểm soát kết quả bằng:
- Nút thao tác toàn cục ở phía trên để bật/tắt cả nhóm khác biệt.
- Checkbox trên từng khác biệt để nhận hoặc bỏ riêng lẻ.
- Thao tác hàng loạt: check/uncheck theo loại khác biệt (tất cả phần thêm, tất cả phần sửa…).
Hai điểm cần nhớ khi thao tác:
- Khi hai bên xung đột, mặc định lấy giá trị của model bên phải.
- Với khác biệt loại “xóa”, mặc định object vẫn được giữ lại trong kết quả merge — bạn phải chủ động uncheck nếu thật sự muốn loại bỏ nó.
Xong xuôi, bạn lưu model merge thành file mới hoặc ghi đè một file có sẵn, và có thể mở nó ngay trong một cửa sổ ứng dụng riêng để rà lại.
Use case thực tế
Phần tiêu đề “Use case thực tế”Phát hiện schema drift giữa các môi trường. Một ngân hàng có schema chạy trên dev, test và prod. Sau vài tháng hotfix, không ai dám chắc ba môi trường còn giống nhau. Reverse-engineer từng môi trường thành model rồi so sánh từng cặp: mọi cột bị thêm tay, index bị xóa, kiểu dữ liệu bị đổi hiện ra thành từng dòng diff có màu — thay vì chờ sự cố mới biết.
Đối chiếu tài liệu với thực tế. Đặt model thiết kế (baseline) bên trái, model reverse-engineer từ prod bên phải. Phần màu xanh nhạt là những gì prod “tự mọc thêm” ngoài thiết kế; phần màu đỏ là những gì thiết kế có mà prod chưa triển khai. Từ đó bạn chọn: merge thay đổi hợp lệ ngược về baseline để tài liệu phản ánh đúng thực tế, hoặc lập kế hoạch đưa prod về đúng thiết kế.
Hợp nhất thay đổi về model cha. Với tổ chức dùng polyglot data model (một model logic dùng chung, sinh ra nhiều model vật lý cho các công nghệ khác nhau), tài liệu hãng mô tả use case “Convert merged changes into the parent polyglot model” — đưa các thay đổi phát hiện được ở model con trở lại model cha để giữ một nguồn sự thật duy nhất.
Nguồn tham khảo
Phần tiêu đề “Nguồn tham khảo”BSD Insight là đối tác triển khai Hackolade tại Việt Nam — liên hệ tư vấn.
Bài tiếp theo
Phần tiêu đề “Bài tiếp theo”Sau khi model đã “sạch” và thống nhất, hãy để Hackolade tự sinh tài liệu cho bạn: Sinh tài liệu tự động.