早先时候,每每有人过来看我的机器,看完几个属性(CPU、内存),都会自觉不自觉地、好像很“嫉妒”一般地说上一句:“你的机器是部里边除了几个头儿之外,配置最好的!”我心想这 256MB 的机器居然是公司里配置最好的机器,很是郁闷。
上星期公司做硬件配置记录时,我看了一下:先比了一下内存,最低的是 256MB,只有一个和我一起来的女生和我一样用 256MB;而且她的 CPU 是 Intel 奔腾,我的是赛扬,虽然同样频率但她的好像也比我的好。再看看别人的,不说头儿们,任何一个人的配置都比我们两个人的高,起码 512MB 的内存,还有几个 G 内存的。这样说来,我用的是部里面配置最“差”的机器! (这里我没有任何嫉妒或抱怨的成分在,只是为了引出下文。)
这似乎应该是个“以讹传讹”的问题了。开始有人这么说,然后就有人跟着这么说,再然后说的人越多,跟风的也就越多……鲁迅说的话是“众口铄金,积毁销骨”(言重了点~)
最近在看 Oracle,这个大东西,以我程序员的角度,没发现它到底好在哪里?
- 非常能“吃”内存,一般要见一半吃一半,256MB 的要用 130MB;朋友公司的,4GB 要用 1.9GB。Oracle 一开,机器慢吞吞的如“老牛拉破车”般。
- 占用这么多资源,效率是否提高了?可能会提高吧,但对于我们一般的应用,有必要也占用这么多的资源来换取那点“看不出来”的效率提高呢?
- 上面说的是“运行效率”,然后说“开发效率”。朋友的话是“用 Oracle 自己的东西作开发是非常困难而不方便的”,一般的 Oracle 老手都会首先给我推荐 PL/SQL Developer 这个第三方开发工具。
- Oracle 的文档也是不敢恭维:没有中文的文档暂且不提,我看过一些 Oracle 数据库的在线文档,我不知道 Oracle 的开发人员是怎么想出这么一套文档组织方式,(反正我觉得他们的思维方式极其独特),找东西特别困难,例子少,而且好像刻意回避一样,想找的东西它总是不明说。
前些时候设计数据库一个表时,我和组里一个作 Oracle 很久的人争论是否用 date 类型表示一个时间的字段,他坚持要使用 nvarchar2 之类的字符类型而不用 date,原因是因为“使用 date ,存储时是把字符转化为 date,取值时又需要把 date 转成字符输出”。因为当时我还没有深入研究过 Oracle,凭着 SQL Server 的经验,我觉得这样的解释似乎很荒唐、很可笑,为什么要这样呢?
我问了一些做 Oracle 开发的朋友,他们居然给了我一个几乎差不太多的回答:他们做开发时也是很少在 Oracle 中使用 date 字段,都用字符类型代替了。我决定试一试,因为我觉得既然 Oracle 设计了这种类型作字段类型,就应该可以使用……
我在 PL/SQL Develop 中调试、作试验,我写入以前在 SQL Server 中的 SQL 语句:
INSERT INTO ... (............) VALUES (......., '2004-7-20 11:25:36', ....) -- 此语句适用于SQL Server
居然出错了!我还以为,Oracle 的日期类型分隔符像 Access 那样是 #,我又试了:
INSERT INTO ... (............) VALUES (......., #2004-7-20 11:25:36#, ....) -- 此语句适用于MS Access
还是错误。……我去查网上的文章,很多地方都是这么写的:
INSERT INTO ... (............) VALUES (......., TO_DATE('2004-7-20 11:25:36', 'yyyy-mm-dd hh24:mi:ss'), ....)
哦,TO_DATE、TO_CHAR,我总算知道同事是什么意思了。这样的 SQL 句子写起来确实不怎么好。我想找个简单的方法。我想到了 Oracle 的文档,我“闯”进了 Oracle 的在线文档,找了起来……它好像刻意在回避这个问题,只是说有这个 date 类型,但就是不愿意多举一个例子,举一个怎样输入、输出日期类型数据的例子。终于看到了 TIMESTAMP 关键字,上面的 SQL 语句可以写成:
INSERT INTO ... (............) VALUES (......., TIMESTAMP '2004-7-20 11:25:36', ....)
这里 TIMESTAMP 的文档也到此为止,还是不愿意多说一句,上面的日期格式支持哪些种?——真是“蜻蜓点水”般,“点到为止”。
很多人都说“Oracle 是最好的数据库系统”,这话或许也是在以讹传讹。至少对开发人员而言,是这样的。
后记:(2004-11-8 12:00)
《程序员》杂志的一期中刊登了我的这篇博客文章,饱受争议,甚至夹杂着人身攻击。很偶然地,在某站点看到了署名“jiangtao”对此事件的一则评论:
这样看来,这篇文章可能已经给相关的某位编辑人员带来了一些不好的影响。在此特向他致以歉意!很抱歉给你带来了麻烦!
但这篇文章中表达的一些观点,我仍然认为是有价值的。Oracle 应当在易用性、文档本地化等方面做出更多的改变,才会使我改变观点。
难道你不觉得 Oracle 应该更简单一些吗?当然,也许你正因为 Oracle 的复杂性而拿着金饭碗呢!Oracle 的易用,将砸烂你们的饭碗?因为你的私心,就无法容忍我的声音?
打印 | 张贴于 2004-08-15 19:27:00 | Tag:暂无标签
留言反馈
一般小的企业甚至是中型企业用sql server 完全可以.
用oracle 无论是那方面,花费就是高
本人熟悉oracle 和sql server, 因此说了一点:)
1.存在的就是合理的
2.oracle 是做服务,ms是靠产品
3.高端用oracle 是需要
理解一下.
TO_DATE('2005-12-05', 'YYYY-MM-DD')
真正等到做数据仓库一类的应用时,谁又不知道要用Oracle呢?
两者的市场定位根本就不一样,MS做中端,Oracle做高端,又有什么可以争执的呢?Oracle要实现更为高级的功能,自然需要更复杂的维护。而SQL Server不一样。 就像Windows和Unix的关系一样,哪个更好呢? 很多“技术人”都会说Unix好,那谁又在PC上用Windows呢?Unix比Windows更早出现啊。为什么Unix没有普及到PC呢?
同样CCIE们会说“网络我最牛!”,Cisco公司里研发路由器的人会说“我比你更牛!”,到底谁更牛呢? 这种争论意义不大,还是各自保留自己的观点罢。
你让MS做一个TB级的数据库看看,看看ms所谓的易用性还存在吗???
就好像vb这东东是很易用,VC++就博大精深,这两样东西再应用上实现的效果一样的,那你为什么选择c++?
支持Ms,
支持ms sql
是他让俺学会了计算机,学会了编程,学会了数据库。。。
俺可不能像某些人一样翅膀硬了、人长大了就开始骂娘!
知识无国界,
技术无国界!
也许是太多功能、安全性需要考虑吧,程序大的吓人,占用资源也是大的吓人。看来太专业的东西不是我们这些小虾米能用的,还是乖乖的用二流三流程序员(我都不敢企望能成程序员,最多算是写代码的)才用的mssql和mysql好了
一个很简单的例子, ms sql server 令我痛苦不堪。varchar key 字段不能超过900字节,我想的头都大了,也没有好方案解决这个问题,我做信息检索数据库,这样的大索引字段几乎太平常了。
MSSQL里面提供了Text 字段,而且支持Full Index。直接做一个contains非常简单,是不是没有仔细看文档?
另外,高手都不爱看文档,这是个坏习惯。再高的高手也要注意提高工作效率。
豪豪豪豪!
另外,
二流的程序员沉溺于技术,人前要说“看,这么难的东西我都游刃有余!”
一流的程序员关注于解决问题,用最直接、最简单的东西作解决方案,
“看,我完成了任务!而且方案很简单!”
程序员的最终目的不是多么好的技术,而是解决问题。本末倒置的程序员不是好程序员。
我刚看了一下,MS SQL Server 2000 中 varchar 可以存 8000字节,不是你说的 900。我也刚刚查了一下,Oracle 9i 中 varchar2 是 4000字节的限制。
不知你说的是什么???
在 256M 机器上,Oracle 要占 110 M 左右,SQL server 只占十几 M。你从哪得到的结论?
to ss:
热力学第二定律说,世界总是趋向于复杂。而作东西的目的就是要简化这个世界,而不是让这个世界复杂上加复杂。
而且我记得 Oracle 字段名称有 30 个字符的限制,这同样让我很头疼。怎么着,也应该支持 50 个字符才好啊,多出几个字符就得砍掉。
to domenic:
你喜欢老古董,我喜欢流行乐,互不影响。
一个很简单的例子, ms sql server 令我痛苦不堪。varchar key 字段不能超过900字节,我想的头都大了,也没有好方案解决这个问题,我做信息检索数据库,这样的大索引字段几乎太平常了。
刚出道的我,认为会ODBC就什么数据库都会。别人问“会Oracle吗?”,就说会。
经过了这些年,我不敢说精通Oracle,但是它吃的内存是干什么的大体知道一二了。
不知道有没有人敢说,知道MS SQL吃的内存都干什么去了?
郁闷,正在犹豫是不是要买程序员的合订本。
算啦,明年买旧书吧。杂志要做到这份上,还就真没看头了。
本人有三年Oracle数据库项目的开发经历,SQL Server也有所接触。可能是本人天资愚钝,从我的开发经历来看,Oracle确实有许多不好、甚至令人恶心的地方(包括楼主提到的日期字段问题)。希望那些言辞激烈、对楼主进行人生攻击的牛人们平心静气地指出Oracle与其它数据库相比,到底好在哪里?差在哪里?
本人认为,对数据库平台优劣的比较同程序设计语言的比较一样,并非毫无必要。许多初学者在确立学习方向时非常需要高手们在这些方面进行客观、中肯的指导。许多项目的设计,在数据库平台选型、程序语言选择方面,如果选择得当,会取得事半功倍的效果。真正的武林高手,固然可以用任何兵器取胜,但如果能够针对实战环境选择合适的兵器,相信胜利会来得更顺利些。
但是从开发来讲,、还是好用的位好,毕竟研发们开较低,费用相对较少
其实就看怎么说了,从那个方面看问题,何必一定要统一思想??
同意楼主观点..
人类所做的一切东西都是要让复杂的问题简单话。人类是因为偷懒而进步的/.
.
但是不排除有写人 还想进入原始社会
我喜欢简单的东西.
.有写人总是喜欢拿自己学了点大部分人没接受的的东西天天拿出来张扬..
一表现自己的另类和高明
不去评论什么好不好.
一句话。简单的就是好的
我有权利发表我自己的观点,也没有指望你接受我的观点。欢迎你批评,但不是人身攻击!
至于杂志编辑们的处理,我不想多说什么,编辑们自有他们的道理。
我的CS游戏打不好,但是我不会怀疑这个游戏为什么在世界上这么火。多从自己找原因。只有有点E文基础,Oracle的文档都可以看懂,怎么理解和你的基本功有关。Oracle好不好希望能够从更深的角度来讨论,我不会因为在CS里不会放炸弹就说CS不好,尽管它也有需要改进的地方。
有时觉得这种文章放在自己的blog就可以了,何必投到杂志,误人子弟。
delphi mssql
pb sybase
我都用过,如果光从技术角度来考虑,oracle做到的是mssql不能企及的,如果从市场来说,各有位置
江湖谣传说java和oracle没有文档之类的言谈,我深表同情,我用这些的时候好像大部分都是从javadoc,oracle online book上找答案的
qq(因为这个被人说了n多次了,说qq是低端的电脑爱好者用的,227)上有人问我什么什么函数实现什么什么功能,有空的时候从help里面或者baidu,google里面找出来给他,实在不想理的时候,直接发个baidu之类的网址给他
赞同楼主的观点。没有批判哪里来的进步。正巧这期《程序员》上在讲ICE。
它就是来源于对CORBA的一种批判。重要的不是争论谁是谁非的问题,而是要保留自己的看法,
不要人云亦云。其实值得我们怀疑的东西还有很多。象UML,XML,SOAP,J2EE这些叫好不叫座的东西。。。
我对 Oracle 没什么好印象,所以才会写这篇文章。
1。Oracle 的文档到现在都不愿意汉化,却大本大本的出那些教学书骗钱,还有高价位的DBA培训,这些骗来的钱从来不会反过来用来汉化自己的文档。连 MySQL 这样的开源数据库都有部分的中文文档,Oracle 的东西卖到中国,按中国的相关法规,不提供中文的使用说明书的产品就是不合格产品。
2。Oracle 有意把入门的台阶抬高,把简单的东西复杂化。对大部分做应用层开发的程序员有何好处?当然,这冒犯了部分以 Oracle 混饭的人士,那我没什么可说的。
我们作程序的目的就是要快速、便捷的开发应用,当然是什么友好学什么用什么,而不是要开着古董车炫耀自己的技术有多高。
我还没收到样刊。
我推测可能是这样:
由于是高级顾问,论小时算美元的,所以必须得鼓捣出点大家看了都晕菜的东西,才对得起这份工钱;
其次,为了证明自己的水平之高至深,不愿意就事论事草就一个,而是要前看五百年后看五百年的方案。
Oracle估计也是这样。
实际上,很多项目工程用不到这么牛的数据库的。
我们做移动的单子做了几年了,始终都是MS SQL Server,不怕大家笑话,反正也慢不到哪里去,又好维护,还省钱。当然,您要是做全国移动的数据挖掘,那还是用Oracle吧,一天的数据量就有论多少T字节算的,且算呢。
因为这样的系统需要使用者比较聪明,还要学习很长时间
这样这个使用者就会相对经验丰富些
他使用这个系统作出的设计会比较稳定可靠些。
传统工业的机械装置很多是这样的
使用越复杂,由于操作失误产生的事故率就越低
您老大,大概您接手的都是成百上千万的大项目吧,当然看不起我们这些几万,十几万,一个人或几个人就搞定的小来西了。
我们小本经营,开发的都是数据量不大,要求不高的小项目。当然,我们干的安徽联通的手机收费系统当然入不了你老人家的法眼。
在我们这里,我看不出来有哪些用户非要用Oracle,通常都是指定要mssql的。我们这里地方偏僻,眼界不宽嘛。
所以,,,,,,我还是用MS SQL Server............:)
To DLU:
CA刚刚放出来的那个ingres是老爷爷辈的了 :)
Oracle虽然开发起来烦人一些……真跑起来,还是见功夫……
当然SQLServer从7.0从头来过以来进步也是很大的……但毕竟还是幼齿
項目需求不同,人員感覺不同,都會影響工具的選擇,沒根據實際情況, 而盲談工具的優劣,我想是意義不大的!
嗯,不过我还是不同意tinyfool的观点:)
软件发展的趋势就是越来越多的“黑盒子”,我们不必要都学会CPU的运行原理了才能在上面写程序,这个世界决不会是Intel的员工的素质高过写Windows的,然后写Windows的高过写企业应用系统的,如果使用mssql,我们可以将更多的精力放在更多优势的领域(比如业务模型领域),而不必为了把汽车开起来还必须把发动机原理好好看上几遍。虽然专业的汽车维修人员肯定比舒马赫还懂汽车的原理,但是上场跑的肯定不会是那个维修人员。
至于民族产业之类的,Oracle价格之贵、服务收费之黑...都是有口皆碑的...
oracle能跑在多种环境下,提供了丰富的接口
从这一点上说,比db2,sqlserver都好太多了
当然如果只在win上跑的话,喜欢ms无可厚非
破宝说的那个 Date 问题我确实也碰到了,后来没办法,处理太麻烦,还是改成 nvarchar2 型了 :(
无独有偶,要在 Java 得到当天日期的 YYYY-MM-DD 格式或者是星期几,可费了劲了( JavaScript 里也一样),可在 C# 里,DateTime.Now.ToString("yyyy-MM-dd") 就搞定了,为什么不给开发人员提供这点便利呢?
首先,复杂必须有意义,无意义的复杂会导致这个产品死的比谁都快,别太小看大家的智力,谁也不会给自己找麻烦。
然后再说,是否简单就不需要技术支持?要知道,用起来越简单,证明背后机制越复杂,越复杂就越容易出问题,而外表太简单了,一旦出现问题你自己就完全解决不了。
前面还有人说ms sql造成高手辈出。这句话恐怕也错了,正是mssql,才造成高手越来越少。当然按照kaneboy的观点这反而成了好事。。。。倒
大家都喜欢简单的东西,但,简单背后,千万要记得留下一个高级模式,否则出了问题就死菜。如果ms系列产品,都有一个命令行或是脚本控制的模式,那可用性会比现在好得多得多。但ms绝对不会这么做...
Oracle之所以没有做MS这么好的帮助和技术资料,可能就是因为他们主要靠技术服务来赚钱,而不是像MS那样靠产品.
所以,oracle要把产品做得难用一下,复杂一下,技术资料少一些.
还是就是回复的人文明用语.
同意RIPPER所说滴
*_* 晕一个,这话谁说的啊?简直tmd胡说八道么。
没话说了
哈哈哈
素质啊!`
“懒惰是开发人员最大的美德”,这句话好像是哪个牛人说的,只有懒惰,才迫使人们设计出更加高效的工具,包括数据库和开发的IDE。
而我实在看不出来用Oracle还是用Ms Sql这样的话题与什么民族大义有什么联系,都是老外的软件。
“你以为mssql简单就人人都用了么”这句话您还真是说对了,只要不是客户专门要求必须使用Linux操作系统,还真没有人使用Oracle数据库,它太麻烦了,我觉得它与Java真是匹配的一对,都没有详细的文档,配置非常麻烦,开发也麻烦,但是开发出来的东西运行非常稳定,速度也很快。如果不是Ms Sql,这里的大部分人看样子对数据库都是不了解的。那里有现在这样的高手辈出的情况。
电脑从根本意义上不就是“降低人类手工作业的技术素质”吗?
这话相当没有水平,原话记不住么?
你以为mssql简单就人人都用了么?客户的需求是千变万化的,有人地方需要简单的东西,有的地方需要更高的性能,你素质下去了,还有人素质越来越高,那你和他怎么竞争呢?
其实,我一直使用mssql,也习惯了打开帮助找我想要的东西,而oralce在这方面差一些。
电脑从根本意义上不就是“降低人类手工作业的技术素质”吗?
真正的坏处应该是让mssql dba都赚不到钱才是,这也是我一直以来的观点,软件公司都试图把软件做简单,这种趋势很不好,会严重影响偶们这个职业的生存状态,我们要努力把东西搞的越复杂越好,这样偶们才好赚钱了...:)
辩证的看,好处很多,方便了开发者,加速了开发流程
坏处也友,降低了数据库开发者团体的整体技术素质
随便问一句,你是新来的吧
每年围绕Oracle Database这一块的培训、认证、技术支持、服务...那可是一个庞大的市场,培育起来不容易呀...
Oracle 没有提供好的工具、没有提供好的文档,这些都不利于开发人员的开发。
至于 date ,我确实不习惯前面加一个 TIMESTAMP 的写法,难道你不觉得这样写很累赘吗?
BTW,如果你是数据库管理员的话,我不和争论。Oracle 占用那么多资源,如果稳定性、安全性再没什么保障的话,可能早就没戏了。
sql 好像没那么复杂!
//真的是这样吗?
至少从稳定性上来说,我用过的数据库,Oracle和Informix都比SQL Server稳定。
你之所以有这样的想法,只是你一直用的T-SQL,如果你一直用P-SQL,就没有这样的想法了~~