2010-12-13 38 views
1

我應該如何處理這種情況如何處理數據庫併發

  1. 用戶A正在編輯的文檔,
  2. 用戶B開始編輯同一個文檔
  3. 用戶B撲救
  4. 用戶A保存一個事件 - 應該失敗,但我應該如何處理?告訴用戶頁面(或實體)已被別人保存似乎不夠。用戶應該知道文檔/字段的哪一部分已被更改,並確定他是否要重試保存。
    • 如果它的只是短的領域,我想我可以比較它們 - 什麼是一個有效的方法來比較舊的&在一個領域的新值?
    • 如果它是一個長文本文件,我該如何做一些差異?或者我該如何處理?只要告訴用戶在打開文檔後保存了文檔似乎不夠?

回答

1

在大多數應用程序中,實際上它實際上是,足以僅告訴用戶由於另一用戶更新相同數據而導致保存失敗。這被稱爲optimistic concurrency:本質上,您假設不會發生衝突,並且您通過簡單地拒絕相同數據的第二次寫入操作來處理髮生衝突的情況。

除此之外的任何東西都是自定義編程。您提供差異的建議是特定於您的域的。如果是關於編輯文本文檔,您可以使用標準差異文檔。然而,在走這條路線之前,問問自己是否值得花費大量時間...