2010-12-01 1 views
1

私はいくつかのREST呼び出しを使用してOAuthソースから取得したデータのグラフを持ち、リレーショナルデータベースに格納しています。データ構造は、いくつかの1対多の関係を持つ約5-10のテーブルを持つことになります。定期的にその情報を再取得して、データベースに更新が必要かどうかを確認したいと思います。C#GetHashCode()を使用したデータグラフの比較

私はこれを多くのユーザーに実行する予定であり、そのデータは頻繁に変更されない可能性が高いため、私の目標はデータベースの負荷を不必要に最小限に抑えることです。私の戦略は、OAuthプロバイダからデータをクエリすることですが、結果をハッシュし、同じデータセットに対して生成した最後のハッシュと比較します。ハッシュが一致しない場合は、単にデータベース内のトランザクションを開始し、そのユーザーのすべてのデータを吹き飛ばし、データを書き直して、トランザクションを終了します。これにより、データベースからデータを読み込み、変更された内容、追加された行、削除された変更された内容などのすべての比較作業を行う時間が節約されます。

私の質問:大きな文字列としてC#GetHasCode()を使用すると、データが変更されたかどうかを確認するためのかなり信頼できるメカニズムですか?または、この猫の皮を剥くのに優れたテクニックはありますか?

おかげ

答えて

0

はい、その変化を検出する、かなり信頼性の高いメカニズムです。 GetHashCode()メソッドの衝突の確率についてはわかりませんが、安全であると想定しています。

より良い方法:何か変更されるたびに設定されるバージョンスタンプまたはタイムスタンプがデータにありませんか?

+0

タイムスタンプのアプローチが最もよいと思いますが、残念ながら私のプロバイダはデータグラフ全体でタイムライン "カバレッジ"を持っていないと思います。タイムスタンプはいくつかありますが、特定のフィールドにのみ適用されます。これらのタイムスタンプを前もって比較していくと、いくらかのマイレージが得られるかもしれませんが、私は99%の時間を何らかの生の比較に戻す必要があると思います。私はstring.GetHasCode()メソッドの衝突特性をチェックし始めるでしょう... – sisdog

関連する問題