第二百七十章 理想与现实的距离(2/2)
这些说起来容易,做起来并不容易,计算机指令都是一系列的01组成的代码,现在又牵扯到了网络,任何时候都可能发生终端停电、网络断网、服务器异常终止等问题,在客户正在atm上操作的时候,万一这些问题发生了,那就要软件来保证刚才进行了一半的交易恢复到交易前的状态,更复杂的就是在这个恢复交易的过程中发生上述所说的问题,那时候该怎么办?这时候感觉到头痛了没有?这就是数据库软件工程师需要解决的一个问题。
c是一致性,consistency。不论一套指令中间各个小步骤是用什么顺序执行的,最终的结果应该都一样。
仍然拿银行帐号打比方,存了张支票进去,取了点现金出来,你可以先存后取,也可以先取后存,最后你的账号上的钱数是一样的。
i是指孤立性,isolation,一个交易不会跟其他交易交叉影响,两个人在不同的atm上从各自的账号上操作,两者不应该由于是同时操作而相互影响。
哪怕是同一账号上的操作,也不应该相互影响,比如你和配偶拥有同一个银行帐号,每个人一个atm卡,你们俩同时在不同的atm机上存取活动应该互不影响。
俩人同时在不同的atm机上存取,不应该出现账号上只有1000块钱,俩人还能各取出800块的情况,只能是一个人能取800,另一个人只能得到“余额不足”的提示。
d当然是指数据的长久保存了,durability。不能说今天还在,明天丢失了,连记录都找不回来。
银行系统涉及金钱,当然是对这个要求很高,这让袁媛想起爸爸妈妈的一张存折,虽然也就几百块,但是当时父母从一大堆旧衣服里看到这张存折的时候,5年的定期已经过了好多年,当年的储蓄所已经改头换面换了名称,人家不承认,他们也没辙。
当年的钱哪是那么好积攒起来的,白白地让血汗打了水漂,不知道中饱了谁家私囊。据说这种情况要是在米国发生,肯定能要回很多钱的,连本带利。
想起穆林和自己参与的那套信息管理软件,虽然有数据库的概念,但是太初始、太简单,现在想想acid竟然是哪一个都不能百分百保证,能不让她感到汗颜么?
她曾经跟穆林讨论过这个问题,穆林说他当时做的时候,已经就这个问题跟吴教授讨论过,当时一缺人手,二时间紧张,三他们这个系统不是用在银行,对这方面的要求不高,所以,才在这方面没有下大力气。
袁媛不懂,怎么就没这方面的需求了?虽然不会造成数据缺失,却会造成数据紊乱的,比如俩人都在修改同一条档案,最后存储的那个会占上风。
穆林解释这样的情况不可能发生,因为大家的管理的信息都是不交叉的,输入或者修改的时候,都是各管各的那部分。除此之外,查询功能是不会造成数据紊乱或者丢失的,所以根本不用担心。
虽然这些话让袁媛放心不少,但总觉得这是非常取巧的做法,还有有很大安全隐患的。所以她准备到奥立克这个世界第一的数据库公司里去好好学习一下。