Ứng dụng
Tôi có một ứng dụng web mà hiện đang sử dụng cho các chức năng AppCache ẩn từ người dùng của hệ thống cần phải tạo ra các tài liệu ngoại tuyến. Tài liệu được tạo lần đầu tiên ngoại tuyến và khi truy cập internet khả dụng, người dùng có thể nhấp vào "đồng bộ hóa" sẽ gửi tài liệu tới máy chủ và lưu tài liệu dưới dạng bản sửa đổi. Cụ thể hơn, ứng dụng không lưu đồng bằng thay đổi dưới dạng bản sửa đổi (trường chính xác được sửa đổi) mà là toàn bộ tài liệu trong toàn bộ. Nói cách khác, một tài liệu "ảnh chụp" được lưu lại.Cải thiện client-server chức năng đồng bộ hóa dữ liệu với đồng bằng châu thổ
Sự cố
Người dùng có thể đăng nhập từ các trình duyệt và thiết bị khác nhau và làm việc trên tài liệu của họ. Khi họ nhấp vào "đồng bộ hóa", nếu tài liệu của máy chủ mới hơn, toàn bộ phiên bản của khách hàng sẽ bị ghi đè bởi máy chủ. Điều này dẫn đến một vấn đề chính được mô tả trong hình dưới đây.
Kịch bản trên xảy ra do việc thực hiện hiện tại mà không dựa vào đồng bằng châu thổ (thay đổi nhỏ) và thay vì dựa trên các phiên bản ảnh chụp.
Một số câu hỏi
1) Nghiên cứu của tôi cho thấy rằng tôi nên nâng cấp cơ chế "đồng bộ hóa" được thể hiện ở đồng bằng châu thổ (thay đổi nhỏ có thể được áp dụng một cách độc lập). Đây có phải là cách tiếp cận âm thanh không?
2) Mỗi delta có được áp dụng độc lập không?
2) Theo nghiên cứu của tôi, các bản sửa đổi có giá trị bằng số và không phải là dấu thời gian. Giá trị này sẽ chính xác như thế nào? Làm cách nào để đảm bảo cả máy chủ và khách hàng đều đồng ý về số lượng bản sửa đổi phải là gì?
stack thông tin
- góc trên frontend
- IndexedDB để lưu các tài liệu tại địa phương (chế độ offline)
- Postgres DB với JSONB trong backend
liên quan: http://stackoverflow.com/questions/28797992/best-practices-in-syncing-data –
Git đã làm điều này, có lẽ bằng cách nào đó sử dụng nó để hiển thị cho một sự khác biệt tài liệu người dùng. –
Câu trả lời của Jack Wade tổng hợp mọi thứ cho bạn. Với một công cụ/tập lệnh khác, bạn có thể nhận được các vùng đồng bằng, hầu hết trong số đó không có xung đột (ví dụ: các dòng tương tự đã chỉnh sửa), và sau đó bạn phải tìm ra cách tốt nhất để giải quyết bất kỳ xung đột nào (ví dụ: , chiến thắng mới nhất, v.v.). –