15

データ同期のアルゴリズムを実装する必要があるアプリケーションに取り組んでいます。

メイン サーバーと複数の下位デバイスがあり、これらを同期する必要があります。

現在、私は 3 つのアルゴリズムを持っています。皆さんの意見に応じてどれが最適かについてアドバイスをお願いします。皆さんの意見を本当に感謝します。

1.アルゴリズムの説明は、ここで見つけることができます。これは、Sang-Wook Kim による科学研究論文であり、韓国の漢陽大学の情報通信部門です。

http://goo.gl/yFCHG

2このアルゴリズムには、データベースのタイムスタンプとバージョン番号の記録を維持することが含まれます。

たとえば、モバイル デバイスのバージョンが v10 で、サーバーのバージョンが v12 である場合、モバイル デバイスの現在のタイムスタンプがサーバーのタイムスタンプよりも新しいと仮定すると、

削除を - 、挿入を + 、変更を ~ で表すと、

また、次の変更ログはいくつかのバージョンに関連付けられています。

v11: +r(44) , ~r(45),-r(46) v12: -r(44),~r(45),+r(47)

次に、データベースの全体的な変化は、 ~r(45) (v12 から)、+r(47)、-r(46) です。

したがって、レコード r(44) は、追加されてから削除されたにもかかわらず、必要ではなかったことがわかります。したがって、冗長なデータを転送する必要はありません。

アルゴリズム全体はここで見つけることができます(私はそれをpdfに載せました)http://goo.gl/yPC7A

3このアルゴリズムは有効です - 各レコードの最終変更タイムスタンプを記録するテーブルを保持します.そして、タイムスタンプに従ってソートされた行を保持します.変更された行のみを同期します.タイムスタンプへ。

ここにリンクがあります http://goo.gl/8enHO

ご意見ありがとうございます。:D

4

1 に答える 1

2

私自身はこれに直接関わったことはありませんが、人々がこのようなことに取り組んでいるときに私は周りにいました。彼らの設計は、アルゴリズム分析やパフォーマンスの調査によってではなく、競合する更新要求を受け取ったときに何をすべきかについて、エンド ユーザーの代表者と何時間も話し合ったことによって推進されました。ユーザーと一緒にいくつかのユースケースに取り組みたいと思うかもしれません。ユーザーが、さまざまな場所にあるさまざまな種類のデータに対して、さまざまな種類の競合解決を必要とする可能性さえあります。

ここでのすべての設計は、変更を伝達することによって帯域幅を節約します。何らかの原因で一方が他方の正確なコピーでなくなると、この不一致が無期限に持続する可能性があります。チェックサムを交換することで、少なくともそのような問題を検出できます (十分に心配している場合は、SHA-2 または SHA-3)。1 つのアイデアは、受信者システムにチェックサムを要求し、そのチェックサムに基づいて更新のパッケージを選択することです。

于 2013-03-17T18:23:27.343 に答える