并发事务的数据安全

目标的提出:并发事务的数据安全
马克- 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:这不符合数据的一致性规则,如果这个数据库版本这样就发布的话,这就是个残次产品。问题出在哪?并发修改同一个数据。所以并发访问的确存在安全问题。