簡體   English   中英

如何處理數據庫並發

[英]How to Handle Database Concurrency

我該如何處理

  1. 用戶A正在編輯文檔
  2. 用戶B開始編輯同一文檔
  3. 用戶B保存
  4. 用戶A保存-應該失敗,但是我該怎么辦? 僅僅告訴用戶頁面(或實體)已被其他人保存還不夠。 用戶應該知道文檔/字段的哪一部分已更改,並確定他是否要重試保存。
    • 如果只是短字段,我想我可以比較它們-比較字段中新舊值的有效方法是什么?
    • 如果它是一個長文本文件,我該如何做比較? 或者那我該如何處理呢? 僅告訴用戶在您打開文檔后便保存了文檔似乎還不夠嗎?

在大多數應用程序中,實際上僅告訴用戶由於另一個用戶更新相同數據而導致的保存失敗足夠了。 這被稱為樂觀並發 :本質上,您假設不會發生沖突,並且通過簡單地拒絕對同一數據執行第二次寫操作來處理確實發生沖突的情況。

除此之外,還有自定義編程。 您提供差異的建議是針對您的域的。 如果要編輯文本文檔,則可以使用標准的diff文檔。 但是,在走這條路線之前,先問問自己,是否真的值得花很多時間在...上

請注意,確定要使用哪種語言,但是在Java中,我使用xstream將對象序列化為xml,然后使用http://www.crosswire.org/jsword/java2html/org.crosswire.common.diff.index區分XML 。 html ,看看有什么變化。

如果您只有幾個實體和用例,則可以通過手動實現所有這些行為而逃脫,僅使用diff引擎比較大文本塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM