2013-03-17 25 views
12

私は、データ同期のアルゴリズムを実装する必要があるアプリケーションで作業しています。データベース同期アルゴリズムのアドバイス

メインサーバーと、複数の従属デバイスが一緒に同期される必要があります。

今、私は3つのアルゴリズムを持っており、皆さんのおかげで最高のアドバイスをしたいと思います。本当にありがとうございます。

アルゴリズムの説明は、情報通信 漢陽大学の・サンウクキム 部門でhere.Itsに韓国

http://goo.gl/yFCHG

2を科学的な研究論文を見つけることができますこのアルゴリズムでは、データベースのタイムスタンプとバージョン番号のレコードを維持することが含まれます

たとえば、バージョンv10、モバイルデバイス上の現在のタイムスタンプがサーバ上のタイムスタンプと比較して遅いと仮定して、モバイルデバイスおよびサーバ上のモバイルは、v12を有する。

ここでは、 - :

V11:R(46) V12 + R(44)〜R(45):〜

によって+と変更し、次の変更ログは、いくつかのバージョンに関連付けられています - データベースの全体的な変化は〜r(45)(v12)、+ r(47)、 - r(46)、〜r(45)、〜r

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

全体アルゴリズムは、このアルゴリズムが有効でhttp://goo.gl/yPC7A

(私はPDFファイルでそれを入れている)ここで見つけることができます - 各record.Andのタイムスタンプを保持します最後の変更を記録したテーブルを保持timestamp.Itに基づいてソートされた行は、変更された行だけを同期させます。ここでは、タイムスタンプに応じて毎回テーブルをソートしています。

ここのリンクは、あなたの意見のためhttp://goo.gl/8enHO

おかげでトンです! :D

+0

データの同期は非常に困難な問題になる可能性があります。そして、ofcには「最良の」方法はなく、すべてはあなたのユースケースに依存します。同時更新が可能な場所を特定(および最小化)し、最も簡単なフィッティングソリューションを検索してください。 – driushkin

+0

私は今あなたが1つを選んだと推測します。私は、あるアルゴリズムが現在のデータを照会するのが簡単であれば好奇心が強いです。データベース間で同じテーブルに簡単に参加させることが比較的簡単なものが必要です。 – Joel

答えて

2

私はこれに直接関わっていませんが、人々がこのようなことに取り組んでいたときに私は周りにいました。彼らの設計は、アルゴリズムの分析やパフォーマンスの検索ではなく、競合する更新要求が受け取られたときに何をすべきかについてエンドユーザーの担当者と話すのに何時間も費やされました。ユーザーとのユースケースをいくつか試してみてください。異なる場所で異なる種類のデータに対して異なる種類の競合解決が必要な場合もあります。

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

関連する問題