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