大世界,这是一个不够程序员的打开方式,程序员会把一个数据库程序看成一个世界,我估计应该不至于,代码就是代码,不会那么感性,所以大世界的说法就成了个人独创的认识角度了。也相当于是个人的见解,也就是play yourself的意思了。如果是玩笑话,不认真就算了,但万一凡事都较真,都老老实实,那就必须得依着这样的态度狡辩一哈为什么一个程序就是一个世界这样的说法了,等接受了这个说法后,再回头来看oracle,那就是一个世界。
或许大多数非从业者不知道,一个复杂的计算机软件,他的功能有多复杂,涉及多少的逻辑判断,考虑多少的事情,在时间不断的往下走的时候,他同时在做很多事情,还要保证能够不出错,不乱,这对于写程序的人来说,简直就是头大,所以程序开发就是掉头发不是,而为了缓解这样的情况,就出现了很多的程序开发的方法论,从细节到抽象,从过程到对象,从数据流到时序图,这些工具和方法,将复杂的程序拆分成了不同的几部分,最后形成了一个个具有自己功能的小部分,然后再组装,然后再运行。
那么,作为普通人来说,或者作为普通的程序猿来说,什么东西拆分后组装最简单,是数学公式吗?我反正是很少见有人将程序拆分成一个一个数学公式。数学公式多复杂,最简单的就是我们身边,我们生活周边的事物,也就是真实的某某人,某某狗,某某花草树木,这是一个从抽象到形象的过程,不是从抽象到细化的过程,但正是这个形象的过程,让任何人对一个复杂程序有了一个好的映像,就好比如拼积木一样,一个程序就是很多的积木块拼接起来,每个积木块发挥着他自己专有的作用,而积木本身具有的属性,也正好说明了他在这个程序世界中扮演的角色,比如负责写日志的,我们就叫他写日志的啦?还是叫它会记笔记的好学生形象,当然数据库里面日志工具进程可不是什么学生,他有他的职责,他要记的很多,同时他要兼顾的东西也很多,既然我们都讨论到书记员之类的了,那不妨我们就让叫它书记员。至此我们基本完成了程序形象化的一个过程,其实他是一个拆分过程,把一些流程公用的过程抽象出来,将功能集合到一个对象里面去,让他单独的成为一个个体运行它的职责。再用以上同样的方式,将一个个功能分开出来,形成一个独有的形象,他有自己的能力,担任了一个角色,有角色的地方就是江湖,所以世界就因此而运行起来。
oracle大世界有很多的角色。比如我们前面已经说过的pga,sga。后面还有:
pmon:负责管理数据库进程的监听器,当数据库挂了,或者数据库实列挂了,它会负责重启,保证运行正常
smon:负责管理用户进程的监听器
dbwr:负责数据读写的进程,所有表空间的数据都由它来做
lgwr:日志读写进程,性能最好,优先权最高,没有写日志的操作不允许发生,兼顾安全与性能,它是怎么做到的?
ckpt:检查点触发器,或则说是数据读写进程触发器。说:dbwr兄弟你别一直读写,有点东西你就写,频繁开关io,io是你家的吗?听我号令,等着数据达到一个临界点再读写。顺便说一句,这个临界点时可以设置的。
arch:日志备份工具,当发现日志写的太多了,已经写不下了,他会把日志备份下来。
lock:这个锁不是一般我们说的我们sql语句导致的锁,说的是数据库ora模式下的同步锁管理。
这些都是我们常见的在oracle中的进程,在数据库服务器上用top就可以看到他们的运行状况。他们通力协作,一同在oracle大环境下,完成他们的工作,oracle本身就是一个封闭的不暴露的大世界,提供给程序员的只是一个入口,一个功能,同时它又在整个大的应用软件中扮演一个角色。
来源于对软件工程需求讨论中一个使用卡片进行角色扮演的需求分析过程,发现这种认识方式,应该算是一种比较快速,有效的将一个程序映入人脑中的方法了,虽然大多数时候,我们又处于一个大世界,人们也只需要知道一个程序的功能,并不需要知道程序里面世界又是什么样的光景(这句话有点emo了?),所以这就是一个不断叠加的过程?
网友评论