配合一下国家去ioe的战略,结合下自己的经验,写下这篇文章。
oracle做为一款数据库产品,并不代表他本身没有自己的价值,但是我的观点是这样的。
一,这个产品本身不具有不可替代性。
轻量级的可以用mysql, 中量级的他能做的东西postgres完全都能做,超大数据量的可以采用大数据的解决方案,高效的可以采用redis之类的内存数据库。总之这个东西并不是不可替代的,他能做的东西基本上 还没有pg , enterprisedb做不了的,而且性能差距不大,更主要的,pg是完全开源的,而o记则比较无耻。
二,这个东西被神化了,他本身没有那么好,甚至说在目前的时代他的缺点比优点要多。使用同样的产品,使用其它类似工具
很多人一直在说o记稳定啊,效率高啊之类的,但是实际上有多少人真正了解他好不好呢,很多人基本上都是人云亦云罢了。
我们曾经做过测试,pg和o的效率差不多,比mysql差不多快一倍吧,后来还测试过国产数据库达梦,基本上他们几个的效率可以大致认为是,pg, o, mysql, dm, 1:1:2:4这样一个过程。
也有其它人的博客写到,高性能pg集群效率是o记的4倍。
他在国内的宣传公关做得不错。国外论坛上比较pg与o的文章非常多,而在国内基本上很少有人用pg,甚至听说的都不算多,比起铺天盖地的o记来,更是不值一提。而且有意思的是,百度pg性能的时候,很靠前的位置会出来一篇文章 讲pg和mysql的性能,然后说pg很烂云云,varchar最大长度只有几k之类。。。。。。然后仔细一看,那文章是1999年写的。。。在信息技术爆炸的时代,这简直是奇迹了。
所以我比较倾向于o记的公关与宣传策略。
三,这个东西很大程度上增加了开发的工作量。
相对用过其它多种数据库的开发者或dba而言,他们往往会落入一个陷井,那就是o记同样的功能,要比其它数据库的实现复杂的多。你可以只用20分钟就配好了mysql的主从。但同样的事情可能在o记中要花费多达十几倍的时间。
很多人觉得这很正常,甚至于觉得自己懂得多而感到骄傲。很多人也把他归结为自己技术优越的原因。很多人也觉得这个东西需要专业的DBA的存在。
但是事实上这是一个感觉上的误区。因为在oracle中没有任何理由的神奇设置太多,这个东西你必须知道,因为他就是那个样子的。所以必须记住,ur=a,至于为什么,因为他就是那个样子的。当你记得了一大堆这种东西之后,貌似技术提高了,但是却不具有任何通用意义。
相反,具有通用意义的是,比如说你知道sql里面必然会支持选择前若干行的功能,只需要查询一下这个功能在具体的数据库里的实现就好,无论他是top 10 或是limit 10,这个功能是可以实现并且容易被理解的。
相反,在o记中,任何简单的尝试往往会被无情的事实告诉你。其实这是一个坑。因此你必须花费大量的时间去自己趟过这些坑,或者从其它的地方获取经验。然后觉得技术提高了,但是却没有想到,这些坑根本从一开始就不应该存在。
比如说下了oracle某个版本的安装程序,发现他是两个文件,这在从光盘时代经过的人们来说是很正常的事情,很多人会简单的认为在某个安装时段他会提示你插入另外一张光盘等等。但是这种假设会被无情的事实所打击。因为你点击了安装之后,在安装快一半的时候他会报错,说某些文件找不到。然后这时候你才发现需要人工在安装之前把两个文件夹拷贝到一起去,看起来很原始,是吗?于是你浪费了若干分钟的时间学习了这个根本就不应该存在的知识。然后重新开始安装。
当然可能有人会说这种事情可能写在了某种readme 之类的文件中,但是有多少人,或者说有多少软件,需要必须先了解一下安装前的readme呢?
当然这只是应用上的一些问题,在实际使用中,相信每个人都有自己不同的经验。但是我的个人经验给出的结论就是,彻底抛弃oracle,如果觉得非用不可,试试postgresql,你会发现开发成本突然变小了很多。
另外一个问题,专职的DBA是否必须存在,对于大型公司这显然不是问题。但是对于小一起的企业情况就有所不同。
数据库的重要性是显然的,但是其实换个角度想,其实本身也是一种工具而已。很少有公司会有svn管理员,git管理员,甚至于eclipse管理员,visual studio管理员之类的。尽管代码备份的工作也很重要。但是大部分的开发人员都是顺手把这些事情做了,然后,那个东西就像空气一样,存在,但没什么人理,偶尔会写个脚本,每天或是每周定时备份一下。但是总的来说,他们只是一种工具而已。
相应的,对于整个公司的数据在存储架构的负责,如果前期已经确定,他的存在其实也应该是个,存在。