Tôi đã không sử dụng FME, nhưng tôi có một nhiệm vụ xử lý tương tự yêu cầu sử dụng đầu ra của công việc xử lý 5 giờ để xác định ba trường hợp xử lý có thể có cho cơ sở dữ liệu song song qua liên kết mạng băng thông thấp:
- Các tính năng mới sẽ được thêm vào
- Các tính năng hiện có sẽ được cập nhật
- Các tính năng hiện tại sẽ bị xóa
Vì tôi đã đảm bảo rằng tất cả các tính năng sẽ giữ lại các giá trị ID duy nhất giữa các lần vượt qua, tôi có thể:
- Chạy tập lệnh xử lý đã tạo một bảng gồm các cặp {uID, checksum} trên các cột quan trọng trong bảng được cập nhật
- Đã sử dụng các cặp {uID, checksum} được tạo trong lần lặp trước để truyền các bản cập nhật đến bảng đích với các hàng trong bảng được cập nhật trong đó uID nằm trong một truy vấn con trong đó tổng kiểm tra không khớp
- Truyền chèn từ bảng đã cập nhật mà truy vấn phụ tham gia bên ngoài được chỉ định có uIDs chưa từng có và
- Truyền danh sách các uID để xóa các tính năng trong bảng bên ngoài mà truy vấn phụ tham gia bên ngoài cho biết không còn có uID phù hợp trong bảng hiện tại
- Lưu các cặp {uID, checksum} hiện tại cho hoạt động của ngày hôm sau
Trên cơ sở dữ liệu bên ngoài, tôi chỉ cần chèn các tính năng mới, cập nhật deltas, điền vào bảng tạm thời các uID bị xóa và xóa các tính năng IN bảng xóa.
Tôi đã có thể tự động hóa quy trình này để tuyên truyền hàng trăm thay đổi hàng ngày cho bảng hàng 10 triệu với tác động tối thiểu đến bảng sản xuất, sử dụng ít hơn 20 phút thời gian chạy hàng ngày. Nó chạy với chi phí hành chính tối thiểu trong vài năm mà không mất đồng bộ hóa.
Mặc dù chắc chắn có thể thực hiện N so sánh trên các hàng M, sử dụng thông báo / tổng kiểm tra là một cách rất hấp dẫn để thực hiện thử nghiệm "tồn tại" với chi phí thấp hơn nhiều.