Posted on 2006-10-25 10:27
英雄 閱讀(653)
評論(0) 編輯 收藏
對于事務,往往有兩方面需求,一方面是希望幾個動作要么全部做了,要么全部當沒發生過;另一方面則是同步的需求,希望這一系列動作是在一瞬間完成,就是在這段時間沒有別人的動作發生。
db提供了事務的支持,雖然各個數據庫支持的細節還不太一樣,但都在這兩方面的范疇內。
應用系統是db+應用軟件的產物。所以在應用系統中滿足事務的需求就不能僅僅從db獲得支持。比如,一個請求的處理既要改表,又要刪除文件。對于第一方面的需求,如果要回滾事務,db可以回滾表,文件卻得自己刪除。第二方面的需求,db可以提高事務隔離級別,或lock多個表,對于應用軟件內存的共享資源就得自己設置鎖監控。(有時候用戶希望在幾個請求處理來回中實現不被別人改表。)
因為事務控制細節不一樣,最麻煩的是怎么移植數據庫。我想,不如這樣使用db的事務機制。只使用它的回滾功能。對于同步功能,使用監控內存對象來完成。這樣整個系統統一使用數據庫的對第一方面的需求支持就可以(jdbc好像使用默認隔離級別就行)。不知道這樣的理解有沒有問題,拋磚引玉,敬請大家討論!