2015-12-16 27 views
0

我正在編寫一個應用程序來爲Facebook API提供服務;共享,就像等等。我將我的應用程序中的所有共享對象保存在數據庫中,如果已共享,我不想共享同一個對象。防止多實例應用程序環境中的重複條目

考慮到我將在不同的服務器上部署應用程序,可能會出現這樣的情況,即兩個實例都試圖將相同的對象插入到表中。

如何通過完全阻止應用程序來管理此併發問題?我的意思是兩個線程會嘗試插入相同的對象,並且它們必須同步,但是它們不應該阻止第三個線程插入完全不同的對象。

+1

如果有一種方法可以從數據本身派生數據輸入的主鍵,數據庫將自行解決此類併發問題 - 第2次插入將失敗,並出現「主鍵約束違例」。也許,Facebook API提供的數據已經有一些唯一的ID? –

+0

就是這樣。我在想其他一些神奇的東西,但似乎這將是唯一的方法。我可以設置爲答案如果您將此作爲答案寫入,但不作評論。 –

回答

0

如果有一種方法可以從數據本身獲取數據輸入的主鍵,數據庫將自行解決此類併發問題 - 第2次插入將失敗並出現「主鍵約束違例」。也許,Facebook API提供的數據已經有一些唯一的ID?或者,您可以考慮一些基於Hazelcast或類似數據網格的分佈式鎖定解決方案。這將允許記錄狀態由不同的JVM共享,所以可以避免不必要的INSERTS