アプリ
私はシステムのユーザーがオフラインで文書を作成する必要があるため、現在オフライン機能のためAppCacheを使用してWebアプリケーションを持っていると、クライアント - サーバのデータ同期機能を向上させます。ドキュメントは最初にオフラインで作成され、インターネットアクセスが利用可能な場合、ユーザーは「同期」をクリックしてドキュメントをサーバーに送信し、リビジョンとして保存することができます。具体的には、変更デルタをリビジョン(正確なフィールドが変更されたもの)として保存するのではなく、ドキュメント全体を保存します。つまり、「スナップショット」文書が保存されます。デルタ
問題
ユーザーは、さまざまなブラウザやデバイスからログインしてドキュメントを操作できます。 「同期」をクリックすると、サーバのドキュメントが新しい場合は、のクライアントのバージョン全体がサーバによって上書きされます。これは、下の画像に描かれている1つの主な問題につながります。
上記のシナリオは、なぜならデルタ(小さな変化)に依存しなくスナップショットのリビジョンに依存していない現在の実装が原因で発生。
いくつかの質問
1)私の研究は、私はデルタ(独立して適用することができます小さな変化)で表現する「同期」のメカニズムをアップグレードする必要があることを示します。これは健全なアプローチですか?
2)各デルタは独立して適用する必要がありますか?
2)私の研究によると、リビジョンデルタは数値であり、タイムスタンプではありません。これの価値はどういうものでしょうか?どのようにリビジョン番号を指定する必要があるのか、サーバーとクライアントの両方に合意するにはどうすればよいですか?
スタック情報が
- のIndexedDBは、ローカルドキュメントを保存するためのフロントエンド(オフラインモード)の角度のバックエンドでJSONBと
- PostgresのDB
関連:http://stackoverflow.com/questions/28797992/best-practices-in-syncing-data –
Gitはすでにこれをやって、おそらく何らかの形でユーザーのドキュメント差に表示するためにそれを使用。 –
Jack Wadeの答えはあなたのためにすべてを集計します。差分ツール/スクリプトを使用すると、デルタを得ることができます。ほとんどのものは競合(例えば同じ行の編集)をしてはいけません。そして、競合を解消する最良の方法を見つけなければなりません(例:ours、theirs、 、最新の勝利など)。 –