2010-12-01 36 views
1

我有一個數據圖,我使用幾個REST調用從OAuth源中提取數據並將其存儲在數據庫中。數據結構最終具有大約5-10個具有幾個一對多關係的表格。我想定期重新檢索該信息,以查看數據庫中是否需要更新。使用C#比較數據圖GetHashCode()

由於我要爲許多用戶這樣做,他們的數據可能不會經常更改,我的目標是最大限度地減少不必要的數據庫負載。我的策略是查詢來自我的OAuth提供者的數據,然後對結果進行散列並將其與我爲同一數據集生成的最後一個散列進行比較。如果哈希不匹配,那麼我只需在數據庫中啓動一個事務,爲該用戶刪除所有數據,重新寫入數據並關閉事務。這節省了我從數據庫中讀取數據的時間,並且做了所有的比較工作,看看發生了什麼變化,添加了哪些行,刪除了哪些行等等。

所以我的問題是:如果我把所有的數據粘貼在內存中作爲一個大字符串並使用C#GetHasCode(),是否可靠的機制來檢查我的數據是否發生了變化?或者,有沒有更好的技術來剝皮這隻貓?

謝謝

回答

0

是的,這是一個相當可靠的機制來檢測變化。我不知道GetHashCode()方法中碰撞的概率,但我認爲它是安全的。

更好的方法:數據不能有每次更改時都設置的版本標記或時間戳嗎?

+0

同意,時間戳方法是最好的,但不幸的是我不認爲我的提供者在整個數據圖中都有時間戳「覆蓋率」。有一些時間戳,但他們只適用於某些領域。通過比較前面的時間戳,我可能會得到一些里程數,但我認爲99%的時間我需要回到某種原始比較。我想我會開始檢查string.GetHasCode()方法的碰撞特性... – sisdog 2010-12-01 19:00:21