2008年10月20日星期一

同事的高论

今天下午坐班车回家的路上,和同事讨论问题。我说ORACLE数据库调优很重要,而且也很有意思。她立刻反问我调优是做什么。我回答说ORACLE数据库的调优主要包括数据库实例的调优和SQL调优,每一部分都很有意思。于是她就让我举个例子,我就大概说了压缩索引,调整热点数据块和SQL查询重写。最后她语重心长的说,没什么意思,没什么技术含量。(这位女同事是做前台显示的,她们从来没做过海量数据和多用户并发访问测试,换句话说,她对数据库很不了解)在这里我不想论证数据库调优到底有没有意思或者说到底有没有技术含量。我只是想说,如果我不了解一门技术,或者说我对一件事不了解的话,在别人讨论问题的时候我不参与讨论也是一个比较健康的态度。

记得刚开始学ORACLE的时候拜读过TOM的大作,EXPERT ORACLE ONE ON ONE,受他的影响很深。他说过项目组的每个程序员都必须要熟悉数据库,因为数据库是一般项目的核心。其实这话一点也没错,如果没有数据库的话我们几乎什么应用程序都做不了。而应用程序说白了只是在应用数据库里的数据而已。据我所知,她们项目组里没有一个开发DBA,(不过她们的数据库设计都是由韩国人来做并且会写好每个SQL,因此她们只需要把页面做好就好了),我不知道她们的项目在海量数据的情况下能不能正常运行(她们全部都用了悲观锁定)。她似乎觉得应用技术更有意思,但是从软件业发展来看,过去几十年里,只有操作系统和数据库傲然挺立,也许今天大红大紫的技术,到了几年后就是昨日黄花(比如struts),因此多花点时间在数据库上不是坏事。

前几天,我听见了另一条高论,学数据库只要把怎么写SQL学好就行了,至于数据库运行的原理没什么价值(原话不是这么说的,但是基本是这么个意思)。我真的不想评论这句话说的有多蠢,但是还是实在忍不住要说几句。其实写SQL固然重要(他们组的项目经常会做报表,经常会写500行左右的复杂SQL,我也会经常帮他们做SQL调优),但是数据库原理绝对是需要好好学习的内容。我个人认为数据库高手并不在于会写复杂SQL,会用分析函数,会做备份恢复,而在于能预见到SQL对数据库带来的影响以及对未来数据增长做出规划和架构,前面说的都是数据库的“小学”,后面才是数据库的“大学”,当做“大学”而不是做“小学”。如果因为学习了如何写SQL就不去学习ORACLE的基本知识的话,那么真就是捡了芝麻,丢了西瓜。

没有评论: