并發事務的數據安全

目標的提出:并發事務的數據安全
馬克- to-win:馬克 java社區:防盜版實名手機尾號: 73203。
馬克-to-win:在互聯網環境中,我們經常遇到比如:1)春節搶票系統。2)淘寶中大家同時下單買最后的幾十個商品。3)你用你的工行賬號買東西,同時你的老婆給你這個賬號轉入錢或轉出錢。上述幾個問題的計算機本質就是:幾個用戶瀏覽器同時想修改數據庫中同一行數據。這就促成了一個著名的艱難話題形成:互聯網環境下并發甚至高并發下的數據安全。馬克-to-win:通常都是一個用戶瀏覽器的請求由服務器端單例的Servlet一個線程來應答,即一個用戶瀏覽器對應一個線程。一個線程又對應一個事務,結論就是:一個用戶瀏覽器對應一個事務。這樣上面的諸多n個用戶瀏覽器同時想修改數據庫中同一行數據問題,就轉化為n個事務同時操作(又看又改)同一行數據的安全問題。所以解決了n個事務同時操作同一行數據的安全問題,也就解決了互聯網環境下并發甚至高并發下的數據安全的核心問題。所以本節要研究的目標確定:并發事務的數據安全。


2)一個實際的案例引發的問題:“網絡并發數據安全”

馬克-to-win:假設你賬戶有800元,你要在淘寶買衣服,衣服600元。同時,你老婆要從你的賬上轉走600元到她自己的賬戶。假如這兩件事兒數據庫設計者開始時沒有預案的話,正常流程應該是樣這的:你買淘寶的線程,想從賬上轉600,判斷一下賬上還有800,沒問題,于是就轉了。當你線程判斷時,恰巧你老婆的線程也運行到她程序的“判斷賬上還有800”這句程序,也認為沒問題,于是也轉了。最后的結果就是你買了衣服,你老婆也轉了錢,你的賬上還有兩百塊錢。這種情況肯定是不對的。馬克-to-win:這不符合數據的一致性規則,如果這個數據庫版本這樣就發布的話,這就是個殘次產品。問題出在哪?并發修改同一個數據。所以并發訪問的確存在安全問題。