Làm cách nào để bạn quản lý đồng bộ hóa hai chiều giữa máy chủ cơ sở dữ liệu 'chính' và nhiều máy chủ 'phụ', đặc biệt là giải quyết xung đột, giả sử không phải lúc nào cũng có kết nối?
Ví dụ: tôi có một ứng dụng di động sử dụng CoreData làm 'cơ sở dữ liệu' trên iOS và tôi muốn cho phép người dùng chỉnh sửa nội dung mà không cần kết nối Internet. Đồng thời, thông tin này có sẵn trên một trang web mà các thiết bị sẽ kết nối. Tôi phải làm gì nếu / khi dữ liệu trên hai máy chủ DB bị xung đột?
(Tôi gọi CoreData là máy chủ DB, mặc dù tôi biết rằng nó hơi khác một chút.)
Có bất kỳ chiến lược chung nào để xử lý vấn đề này không? Đây là các tùy chọn tôi có thể nghĩ đến:
1. Luôn sử dụng dữ liệu phía máy khách là mức ưu tiên cao hơn
2. Tương tự cho phía máy chủ
3. Cố gắng giải quyết xung đột bằng cách đánh dấu dấu thời gian chỉnh sửa của từng trường và thực hiện chỉnh sửa mới nhất
Mặc dù tôi chắc chắn tùy chọn thứ 3 sẽ mở ra cơ hội cho một số tham nhũng dữ liệu tàn phá.
Tôi biết rằng định lý CAP liên quan đến điều này, nhưng tôi chỉ muốn sự nhất quán cuối cùng, vì vậy nó không loại trừ hoàn toàn, phải không?
Câu hỏi liên quan: Các mẫu thực hành tốt nhất để đồng bộ hóa dữ liệu hai chiều . Câu trả lời thứ hai cho câu hỏi này có lẽ không thể thực hiện được.