浙江体育彩票20选5:

北京 切换校区

全国24小时免费热线

400-009-1906

小李的数据库之旅(下)

时间:2019-01-03   来源:尚学堂   阅读:184

  接上篇《小李的数据库之旅(上)》,上回说到小李用一个中间逻辑层解决了普通人也能查询数据的问题,很快新的挑战就来了。

 

  4、并发访问

  校园的局域网很快就建立起来,原来单机的软件纷纷转为支持网络访问的系统,学校为了统一各系的信息系统管理,要从现有的系统中择优选择一个,升级成局域网可访问的,然后全校扩展。

  小李的软件和数学系的,电子系的一起竞争,相比而言,数学系的系统采用了网状的结构,电子系的采用了层次结构,无论是哪种结构,使用者都需要知道精确的内部结构以后才有可能进行查询,相比“李氏查询”实在是太过繁琐。小李的系统以很大的优势胜出了。

  小李刚学会了C语言,觉得这种语言更加贴近硬件,效率更高,更适合写这些“系统级”的软件,于是决定保留之前的设计,然后用C重写。

  当然不仅仅是重构,还包含了重要的功能增强:网络访问,从单机软件变成了客户端-服务器结构(C/S)的软件。

  学校购买了一个性能强劲的IBM服务器作为服务全校的中心数据节点,小李的软件部署在了上面,想着自己的软件被这么多教职工使用,小李觉得很有成就感。

  好景不长,小李很快就发现网络版软件的复杂度要远远超过单机版,这不马上就有老师爆出了一个超级大问题。

  王老师对一个学生的地址进行了更新,张老师对另外一个学生的地址也做了更改,后来发现王老师的修改不见了,这是怎么回事?

  小李看了代码,很快就发现在单机版的时候,原来的操作都是基于整个文件的:读入文件内容,做修改,然后写入文件,很明显,王老师的修改在前,张老师的修改在后,王老师的被覆盖了。

  真是个严重的问题,恰逢周末,小李赶紧通宵达旦的修改,升级系统,把基于文件的操作改变成基于行的操作:每个人的修改只影响这一行。

  小李觉得这样应该没问题了,可是很快就发生了两个人对同一行的修改:

  电子系的账户有1000元,刘老师支取了300,金老师支取了200,最后账户的余额竟然是800元!实际应该是500元啊。

  这是个极为严重的错误,系统被迫停止了几天专门来修复这个问题。

  一个解决的办法就是给这一行加锁,在刘老师读取了1000元,扣除300元,并且把700写回到数据库之前,不允许金老师操作,这样就不会乱掉了。

  5、原子性问题

  小李找了几个同学,仔细的审查了程序,确保一些重要的更新操作都有行锁,这次稍微松了一口气。

  可是一次非常偶然的系统故障有暴露了一个从没有想过的大问题:

  当时电子系的账户有1000元,数学系有2000元,电子系要给数学系转账200元,系统先扣除了电子系的账户钱的钱,变成了800,正要往数学系上面增加余额的时候,系统出了故障,崩溃了。

  重启以后,就发现电子系的余额是对的,可是数学系还是2000元,那200元丢了!

  很明显,转账这个操作,必须得是原子的:要么全部发生,要么根本不发生。

  小李决定把类似这样的操作叫做“事务”,但是怎么实现呢?

  小李苦思冥想,终于放了一个大招:记录日志!

  在做真正的操作之前,先把要做的事记录下来形成日志(Log),这个日志中包括修改的数据项标识,数据项的旧值(修改前的值)和新值(修改后的值),然后再进行真正的数据库修改。

  刚开始的时候事务处于活动状态,只有所有的操作都正确无误的写入了磁盘,才会进入提交状态,否则就要回滚修改。

 ?。ㄗⅲ撼嗽有灾?,事务还有持久性,隔离性,一致性,这里就不展开了)

  6、安全

  有一天系主任找到小李,提了一个全新的问题:

  “小李啊,能不能添加一点权限控制?比方说系里的财务状况只能我和财务人员知道,现在每个人都可以查询,这成什么样子?”

  小李心想确实是这样,一个没有权限控制的系统是非常危险的,尤其是随意删除,那还了得?!

  赶紧加上一个权限系统,小李想了想,先定义三大类权限:

  1.对数据操作的,例如SELECT,UPDATE,INSERT等

  2.对结构操作的,例如创建表,修改表,等

  3.做管理的,例如备份数据,创建用户等

  然后就可以把这些权限授予某个用户了,很多时候,还需要把表附加上,像这样:

  GRANTSELECTon财务表to系主任

  GRANTCREATE_TABLEto张老师

 ?。ㄗⅲ赫饫锬7铝薽ysql)

  解决了如此多棘手的问题以后,小李的信息系统已经非常复杂了,实际上,这个系统的中间层完全可以剥离出来,形成一个完整的软件了,小李把它称为:数据库

相关资讯

  • 北京校区
  • 山西校区
  • 郑州校区
  • 武汉校区
  • 四川校区
  • 长沙校区
  • 深圳校区
  • 上海校区
  • 广州校区
  • 保定招生办

北京海淀区校区(总部):北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
咨询电话:400-009-1906 / 010-56233821
面授课程:?JavaEE+微服务+大数据? ???大数据+机器学习+平台架构?????Python+数据分析+机器学习??人工智能+模式识别+强化学习???WEB前端+移动端+服务端渲染

 

山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702

郑州学区地址:河南电子商务产业园6号楼4层407
咨询电话:0371-55177956

武汉学区地址:武汉市东湖高新区光谷金融港B22栋11楼
咨询电话:027-87989193

四川学区地址:成都市高新区锦晖西一街99号布鲁明顿大厦2栋1003室
咨询电话:028-65176856 / 13880900114

网址://www.cssxt.com/
咨询电话:0731-83072091

深圳校区地址:深圳市宝安区航城街道航城大道航城创新创业园A4栋210(固戍地铁站C出口)
咨询电话:0755-23061965 / 18898413781

上海尚学堂松江校区地址:上海市松江区荣乐东路2369弄45号绿地伯顿大厦2层
咨询电话:021-67690939

广州校区地址:广州市天河区元岗横路31号慧通产业广场B区B1栋6楼尚学堂(地铁3号线或6号线到“天河客运站”D出口,右拐直走约800米)
咨询电话:020-2989 6995

保定招生办公室

地址:河北省保定市竞秀区朝阳南大街777号鸿悦国际1101室

电话:15132423123

Copyright 2006-2019 北京尚学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183  
媒体联系:18610174079 闫老师  

Java基础班,免费试学三周

833| 133| 845| 161| 79| 891| 942| 691| 726| 497|