Vì vậy, tôi nghĩ tóm lại câu hỏi của bạn liên quan đến đồng bộ hóa bị ngắt kết nối.
Vì vậy, đây là những gì tôi nghĩ nên xảy ra:
Sync Initial Bạn lấy dữ liệu và các thông tin liên kết với nó (phiên bản liên tiếp, tổng kiểm tra tập tin vv). điều quan trọng là bạn lưu trữ thông tin này và để nó nguyên sơ cho đến khi đồng bộ hóa thành công tiếp theo. Các thay đổi phải được thực hiện trên COPY của dữ liệu này.
Theo dõi thay đổi Nếu bạn đang xử lý các hàng cơ sở dữ liệu, ý tưởng là, về cơ bản bạn phải theo dõi các hoạt động chèn, cập nhật và xóa. Nếu bạn đang đối phó với các tập tin văn bản như xml, sau đó nó hơi phức tạp hơn. Nếu có khả năng nhiều người dùng sẽ chỉnh sửa tệp này cùng một lúc, thì bạn sẽ phải có công cụ khác, do đó xung đột có thể được phát hiện ở cấp độ chi tiết hơn (thay vì toàn bộ tệp).
Kiểm tra xung đột Một lần nữa nếu bạn chỉ xử lý các hàng cơ sở dữ liệu, các xung đột dễ phát hiện. Bạn có thể có một cột khác tăng bất cứ khi nào hàng được cập nhật (tôi nghĩ rằng mssql có nội trang này không chắc chắn về mysql). Vì vậy, nếu bản sao bạn có một số khác với số trên máy chủ thì bạn có xung đột. Đối với các tệp hoặc chuỗi, tổng kiểm tra sẽ thực hiện công việc. Tôi cho rằng bạn cũng có thể sử dụng ngày sửa đổi nhưng hãy chắc chắn rằng bạn có một phép đo rất chính xác và chính xác để ngăn chặn việc bỏ lỡ.ví dụ: cho phép nói rằng tôi lấy một tập tin và bạn lưu nó ngay sau khi tôi lấy nó. Giả sử thời gian chênh lệch là 1 mili giây. Sau đó tôi thực hiện các thay đổi đối với tệp sau đó tôi cố gắng lưu nó. Nếu thời gian sửa đổi cuối cùng được ghi lại chỉ chính xác đến 10 mili giây, thì có khả năng tệp tôi đã truy xuất sẽ có ngày sửa đổi giống như ngày bạn đã lưu để chương trình cho rằng không có xung đột và ghi đè thay đổi của bạn. Vì vậy, tôi thường không sử dụng phương pháp này chỉ để được ở bên an toàn. Mặt khác cơ hội của một cuộc kiểm tra/băm va chạm sau khi một sửa đổi nhỏ là gần không.
Giải quyết xung đột Bây giờ đây là phần khó khăn. Nếu đây là một quá trình tự động, thì bạn sẽ phải đánh giá tình hình và quyết định xem bạn có muốn ghi đè các thay đổi, mất các thay đổi hoặc truy xuất lại dữ liệu từ máy chủ và cố gắng làm lại các thay đổi. May mắn cho bạn, có vẻ như sẽ có sự tương tác của con người. Nhưng nó vẫn còn rất nhiều đau đớn để mã. Nếu bạn đang xử lý các hàng cơ sở dữ liệu, bạn có thể kiểm tra từng cột riêng lẻ và so sánh nó với dữ liệu trong máy chủ và trình bày nó cho người dùng. Ý tưởng là trình bày xung đột với người dùng theo cách rất chi tiết để không bị áp đảo họ. Hầu hết các xung đột có sự khác biệt rất nhỏ ở nhiều nơi khác nhau để trình bày cho người dùng một sự khác biệt nhỏ tại một thời điểm. Vì vậy, cho các tập tin văn bản, nó gần như giống nhau nhưng nhiều hơn một trăm lần phức tạp hơn. Vì vậy, về cơ bản, bạn sẽ phải tạo hoặc sử dụng công cụ khác (So sánh văn bản là một chủ đề hoàn toàn khác và quá rộng để đề cập ở đây) cho phép bạn biết những thay đổi nhỏ trong tệp và vị trí của chúng giống như trong cơ sở dữ liệu: nơi văn bản được chèn, xóa hoặc chỉnh sửa. Sau đó, trình bày cho người dùng theo cùng một cách. về cơ bản đối với mỗi xung đột nhỏ, người dùng sẽ phải chọn loại bỏ các thay đổi của họ, ghi đè các thay đổi trong máy chủ hoặc thực hiện chỉnh sửa thủ công trước khi gửi đến máy chủ.
Vì vậy, nếu bạn đã làm đúng, người dùng sẽ được cung cấp danh sách các xung đột nếu có. Những xung đột này nên đủ chi tiết để người dùng quyết định nhanh chóng. Vì vậy, ví dụ, xung đột là sự thay đổi chính tả, người dùng sẽ dễ dàng chọn từ cách viết ngược lại để cho người dùng toàn bộ đoạn văn và nói với anh ta rằng có sự thay đổi và họ phải quyết định phải làm gì , người dùng sau đó sẽ phải tìm kiếm lỗi chính tả nhỏ này.
Cân nhắc khác: Xác thực dữ liệu - hãy nhớ rằng bạn phải thực hiện xác thực sau khi giải quyết xung đột vì dữ liệu có thể đã thay đổi So sánh văn bản - như tôi đã nói, đây là chủ đề lớn. vì vậy google nó! Đồng bộ hóa bị ngắt kết nối - Tôi nghĩ có một số bài viết ngoài đó.
Nguồn: https://softwareengineering.stackexchange.com/questions/94634/synchronization-web-service-methodologies-or-papers
Cảm ơn phản hồi của bạn. Tôi nghĩ rằng vấn đề bạn đã đưa ra về thời gian nghiêng là quan trọng. Niềm hy vọng ban đầu của tôi là giữa NTP trên máy chủ và các dịch vụ đồng bộ hóa thời gian của iPhone/Touch với nhà cung cấp dịch vụ/máy tính - các vấn đề thời gian lệch sẽ được giảm nhẹ. Giả định này có quá nguy hiểm không? – hyuan
Thật mỏng manh theo nhiều cách - ví dụ, đồng hồ được đặt lại ngược có thể gây ra các cập nhật bị nhỡ, và các cập nhật bị mất có thể dẫn đến các xung đột chỉnh sửa không bị phát hiện. Sao chép đa chủ là một nhiệm vụ không cần thiết. –
Cảm ơn lời khuyên tốt bụng. Hy vọng rằng trong một vài tuần, bạn sẽ có thể nhìn thấy những thành quả của sự khôn ngoan của bạn. Các trang web trong câu hỏi đã được lên (www.ayenotes.com) nhưng các ứng dụng iPhone là không. – hyuan