私は要約すると、切断された同期に関連すると思います。だからここ
は、私は起こるべきだと思うものです:あなたは、データとそれに関連するすべての情報(行バージョン、ファイルのチェックサムなど)を取得
最初の同期。この情報を保存し、次回の正常な同期までは元のままにしておくことが重要です。変更はこのデータのCOPYで行う必要があります。
変更の追跡データベース行を扱う場合、基本的に挿入、更新、および削除操作を追跡する必要があります。あなたがxmlのようなテキストファイルを扱っているなら、やや複雑です。同時に複数のユーザーがこのファイルを同時に編集する可能性がある場合は、diffツールを使用する必要があります。そのため、ファイル全体ではなく、より詳細なレベルで競合が検出されます。
競合を確認するデータベースの行だけを処理している場合でも、競合を検出するのは簡単です。行が更新されるたびに増分する別の列を持つことができます(mssqlにはmysqlについては不明な組み込み関数があります)。したがって、コピーしたコピーの数がサーバー上のものと異なる場合、競合が発生します。ファイルまたは文字列の場合、チェックサムがそのジョブを実行します。あなたは修正日を使用することもできますが、ミスを防ぐために非常に正確で正確な測定値を持っていることを確認してください。たとえば、ファイルを取得し、取得したファイルをすぐに保存するとします。時差は1ミリ秒と言います。その後、ファイルを変更して保存しようとします。記録された最終変更時刻が10ミリ秒にしか正確でない場合、取得したファイルに保存したものと同じ修正日が付いている可能性が高いので、プログラムは競合しないと判断して変更を上書きします。だから、私は一般的にこの方法を安全な側に使うのではない。一方、マイナーな変更後のチェックサム/ハッシュ衝突の可能性はほとんどありません。
競合の解決これは難しい部分です。これが自動化されたプロセスの場合は、状況を評価し、変更を上書きするか、変更を失うか、またはサーバーからデータを再度取得して変更をやり直すかどうかを判断する必要があります。幸いなことに、人間との交流があるようです。しかし、それはまだコードに苦労しています。データベース行を扱う場合は、個々の列をそれぞれチェックして、それをサーバー内のデータと比較し、それをユーザーに提示することができます。このアイデアは、ユーザに圧倒されないように非常にきめ細かな方法で競合を提示することです。ほとんどの競合は、さまざまな場所で非常に小さな違いがありますので、一度に1つの小さな違いをユーザーに提示してください。テキストファイルの場合、ほぼ同じですが、100倍以上複雑です。ですから、基本的には、diffツールを作成したり使用したりする必要があります(テキスト比較はまったく異なるテーマですが、ここで言及するには広すぎます)。ファイルの小さな変更や、データベース:テキストが挿入、削除、編集された場所。それからそれを同じ方法でユーザーに提示してください。基本的に小さな競合ごとに、ユーザーは変更を破棄するか、サーバーの変更を上書きするか、サーバーに送信する前に手動で編集するかを選択する必要があります。
あなたが正しいことをしていれば、もしあれば、ユーザーには衝突のリストが与えられるべきです。これらの競合は、ユーザが迅速に決定するのに十分細かくなければならない。たとえば、競合はからの綴りの変更です。ユーザーが単語のスペルを選択するのは、ユーザーに段落全体を与え、変更があったことを伝え、何をすべきかを決定する必要があるユーザはこの小さなスペルミスを捜す必要があります。
その他の考慮事項:データ検証 - データが変更された可能性があるため、競合を解決した後に検証を実行する必要があることに注意してください。テキスト比較 - これは大きな問題です。だからgoogleそれ! Disconnected Synchronization - 私はそこにいくつかの記事があると思います。
出典:https://softwareengineering.stackexchange.com/questions/94634/synchronization-web-service-methodologies-or-papers
フィードバックいただきありがとうございます。私はあなたがタイムスキューに関して育んだ問題は重要だと思います。 私の最初の希望は、サーバー上のNTPと、iPhone/Touch独自の時刻同期サービスとキャリア/コンピュータ間のスキューの問題が緩和されることです。この仮定はあまりにも危険ですか? – hyuan
これは、多くの点で脆弱です。たとえば、時計が逆方向にリセットされると、更新が失われる可能性があります。更新が見つからないと、編集の競合が検出されなくなります。マルチマスターレプリケーションは重要な作業ではありません。 –
親切なアドバイスをありがとうございます。うまくいけば、数週間後に、あなたはあなたの知恵の実を見ることができます。問題のサイトはすでにアップしていますが(www.ayenotes.com)、iPhoneアプリはありません。 – hyuan