今天,花了我整整3天的时间,终于搞定一个DB2的小问题。虽然这不是一个多么复杂的问题,在DB2的高手看来也许可能是一个非常菜鸟的问题,但我依然感到很欣慰。DB2对我来说还非常陌生,参加工作以来我一直都是从事ORACLE的工作,由于工作的关系,现在要接触很多其它的数据库(我们的客户使用不同的数据库DB2,SQL SERVER,MYSQL等都有),为了对客户进行支持,公司也装了一些除ORACLE以外的其它的数据库服务器。没办法,公司只有我一个DBA,所以数据库相关的事务都归我包了,在面对其它数据库的时候,我经常是赶鸭子上架。有几次,搞得我很火(记得是解决一个SQL SERVER的问题),我破口大骂,把SQL SERVER贬得一钱不值。同事都知道我有一段时间爆粗口,shit,shit成了我的口头禅,原来都是被这些东西给搞的。当然,ORACLE才是我的最爱,所以我难免有很多偏见(其实MYSQL和DB2做得都相当不错,只有SQL SERVER到现在我依然认为做得很烂)。
前面我曾经说过,其实有些原理是相通的,熟悉ORACLE,要去了解其它的数据库,上手应该不难。在解决问题的过程中,再一次印证了我的观点。我对DB2一塌糊涂,正是靠着ORACLE的经验,给了我解决问题的思路,最后事实也证明,我的思路是对的。我们在ORACLE非常熟悉的概念,如优化器,SCHEMA,USER,SCHEMA OBJECTS ,STATISTICS,物理备份,逻辑备份,前滚(rollingforward),联机日志,归档日志,表空间,块,自动存储,字符集,SQLJ,外部存储过程(JAVA,C),游标等等,在DB2都可以找到对等的参照物,只不过叫法和解决的方案稍微有点不同而已。我很早时总结的几条各大数据库要解决的问题:
1. data store and retrieval:数据的存储与获取
2. multi-user environment:多用户环境
3. data access control: 数据访问控制
4. data consistency:数据一致性(这也是为什么所有的数据库都有日志文件的原因,为了解决数据一致性而又不影响数据的写入性能,采用磁盘的连续读写记录日志,而用磁盘的随机读写写入数据)
5. data multi-version control (MVC):数据的多版本控制(一致读和当前读 before image and current image)
6. backup and recovery:备份和恢复
现在看来依然是这样的。当然,现在已经冒出很多新的名词和概念出来了,什么云计算(Cloud Computing)呀,内存数据库呀(In-memory Database),对象数据库呀(XML DB),软件即服务,服务即软件(Software-as-a-service,简称SaaS)等等,这些东西,花样翻新,不过,我个人认为,不要被这些东西给搞糊涂了。有时,追求时髦不是错,但不要把它当成是多么了不起的东西。我是从事IT行业的,假如我告诉你,我其实是反对所有的东西电脑化,你不会觉得奇怪吧?除了一些行业,上电脑系统确实可以改进其工效,质量和准确度的(如金融,电信等行业),我觉得现在电脑系统的普及化,有的利弊真的值得商榷。就拿就医来说吧(当然,我并不是完全否定医院电脑化,有些确实有必要),现在你去医院看病,特别是大城市的医院,医生给你的时间不会超过5分钟,全部都是电脑化作业,当你排N分钟的队终于轮到你时,你可能想多和医生说几句话,多描述一下你的症状,可是在你喋喋不休的时候,医生可能就嗖嗖嗖地已经开出了一系列的单子,叫你到哪哪哪检查,完了将检查报告交回给他。够高效!够利落!因为,电脑上显示,外面还有N个人在等待,医生大人没有时间和你这么慢慢地聊。最重要的是,你的病情诊断情况,几乎都输入电脑系统,你只能看得到开出的检查清单和药物清单,你看不到多少诊断报告。在之前,没使用电脑前,你好歹能在病历本上或处方单上多少看出一点情况,虽然医生的字体狂草,至少你还可以看一下,现在有了电脑,医生也变得懒惰了,除非你特别要求,叫医生将电脑系统调给你看,否则你可能对你的病情知之甚少甚至一无所知,只能照单服药(虽然病历本上也还会写一些,但比之前少很多)。我靠!SHIT!照这样,我也可以混几天医生当当,我们印象中的“看,闻,望,切”只能停留在儿时看病时的回忆中了。机械化,电脑化,流水化作业程序,在发展中国家不断普及。至少医院这样的电脑化,我个人是不赞成的。哎,不过,不喜欢的事还有很多,个人的意见也非常微弱,现在连公司请假都要登陆电脑系统申请了。我靠!申请完又还要口头跟领导再解释一下,你说,这样的电脑系统,是方便了人还是麻烦死人?不要以为所有的东西使用上电脑系统了就实现现代化了,就很先进了,就沾沾自喜自以为前沿了,其实,很多都是领导在那搞的(混个政绩),或者有的是被电脑公司或软件公司给忽悠的。