接上篇《小李的数据库之旅(上)》,上回说到小李用一此中央逻辑层治理了一般人也能盘诘数据的题目,很快新的挑战就来了。
4并发会见校园的局域网很快就创建起来,平昔单机的软件纷纭转为赞成网络会见的系统,书院为了统一各系的消息系统办理,要从现有的系统中择优取舍一个,晋级成局域网可会见的,尔后全校扩充。小李的软件和数学系的,电子系的一同比赛,比拟而言,数学系的系统采纳了网状的组织,电子系的采纳了条理组织,不论是哪类组织,操纵者都须要领会准确的内部组织之后才有或许停止盘诘,比拟“李氏盘诘”着实是过度噜苏。小李的系统以很大的上风胜出了。小李刚学会了C谈话,感觉这类谈话更为靠近硬件,效率更高,更合适写这些“系统级”的软件,因而决计保存以前的计划,尔后用C誊写。固然不单仅是重构,还包含了要害的成效增加:网络会见,从单机软件变为了客户端-效劳器组织(C/S)的软件。书院采办了一本功能强劲的IBM效劳器做为效劳全校的中央术据节点,小李的软件安排在了上头,想着本身的软件被这么多教员工操纵,小李感觉很有造诣感。好景不长,小李很快就发觉网络版软件的繁杂度要远远超越单机版,这不立刻就有教师爆发了一个超等大题目。王教师对一个高足的地方停止了革新,张教师对其它一个高足的地方也做了变更,后来发觉王教师的改动不见了,这是怎样回事?小李看了代码,很快就发觉在单机版的时间,平昔的操纵都是基于一切文献的:读入文献实质,做改动,尔后写入文献,很显然,王教师的改动在前,张教师的改动在后,王教师的被遮蔽了。真是个严峻的题目,恰逢周末,小李急忙彻夜达旦的改动,晋级系统,把基于文献的操纵改动为基于行的操纵:每限度的改动只影响这一行。小李感觉如许应当没题目了,但是很快就产生了两限度对统一行的改动:电子系的账户有元,刘教师支取了,金教师支取了,末了账户的余额居然是元!现实应当是元啊。这是个极其严峻的差错,系统强制中止了几天特意来修理这个题目。一个治理的想法便是给这一行加锁,在刘教师读取了元,扣除元,而且把写回到数据库以前,不容许金教师操纵,如许就不会乱掉了。5原子性题目小李找了几个同窗,专一的稽查了程序,保证一些要害的革新操纵都有行锁,此次微小松了一口吻。但是一次特别偶尔的系统毛病有败露了一个从没有想过的大题目:那时电子系的账户有元,数学系有0元,电子系要给数学系转账元,系统先扣除了电子系的账户钱的钱,变为了,正要往数学系上头增添余额的时间,系统出了毛病,崩溃了。重启之后,就发觉电子系的余额是对的,但是数学系仍旧0元,那元丢了!很显然,转账这个操纵,必需得是原子的:要末统统产生,要末底子不产生。小李决计把近似如许的操纵叫做“工做”,然而怎样完结呢?小李苦思冥想, 终究放了一个大招: 纪录日记 ! 在做真实的操纵以前,先把要做的事纪录下来产生日记(Log),这个日记中包含改动的数据项标记,数据项的旧值(改动前的值)和新值(改动后的值),尔后再停止真实的数据库改动。刚开端的时间工做处于行动状况,惟有全部的操纵都无误无误的写入了磁盘,才会投入提交状况,不然就要回滚改动。(码农翻身注:除了原子性以外,工做尚有长远性,阻隔性,一致性,这边就不张开了)6平安有一天系主任找到小李,提了一个崭新的题目:“小李啊,能不能增加一点权力遏制?比如说系里的财政情景只可我和财政人员领会,目前每限度均能够盘诘,这成甚么仪表?”小李心想确切是如许,一个没有权力遏制的系统是特别危险的,尤为是随便省略,那还了得?!急忙加之一个权力系统,小李想了想,先界说三大类权力:1.对数据操纵的,比方SELECT,UPDATE,INSERT等2.对组织操纵的,比方创立表,改动表,等3.做办理的,比方备份数据,创立用户等尔后就能够把这些权力付与某个用户了,不少时间,还须要把表附加之,像如许:GRANTSELECTon财政表to系主任GRANTCREATE_TABLEto张教师(码农翻身注:这边仿效了mysql)治理了这样多辣手的题目之后,小李的消息系统曾经特别繁杂了,现实上,这个系统的中央层齐全能够剥离出来,产生一个完全的软件了,小李把它称为:数据库你看到的但是冰山一角,更多出色文章,尽在“码农翻身”