Time-out and Thanks
再见和感谢
Tom Kyte
我们的技术专家用一些时间分享历史。
作为一名职员,我已经在Oracle度过了22年的职业生涯,使用Oracle数据库的时间已达29年。我人生另一个重要里程碑,是在美国联合航空公司的飞行长度达到了200万英里(而在走过的里程中这只是一小部分,因为我的旅行包括了多家航空公司)。此外,我最近又达到了 “神奇”时代的里程碑之一。
随着里程碑的增加,是时候做些变化了。我会从2015年八月底开始休一个长假,期限未知。
我其实有一些短期计划。这些不包括超过一半的用餐时间在餐馆中进行,半年多都睡在酒店,和一年飞行250,000多英里(在一年中,超过10个工作周我是在35,000英尺的高空)。这个计划包括写一些书,我一直打算写的书,当然是基于Oracle技术。希望你会在2016年中期至后期某个时候开始看到成果,主题可能包括Oracle数据库12c的第2版(Oracle数据库的下一个版本)的新功能,分析函数,你想知道的关于binds的一切,解释说明计划,也许更多。时间会说明一切。从我的短期计划回头看我过去的成果,在IT界过去的30年无疑是有趣的。我见过许多的变化,一些是变得更好。有时,事物变化越多,它们就越来越相似。我知道这很俗套,但也很有道理!
例如,我首先学会了使用PL / I语言– IBM高级,大型机编程语言–进行编程。它有点像Pascal,有点像COBOL,有点像C,而且可能仍然是我用过最酷的过程语言。在上世纪80年代我会用ISPF(交互式系统生产设施)编写屏幕,屏幕将显示在一个“哑终端”,用户在字段间tab填写数据。一旦屏幕“满”了,用户就按键盘上的F8将数据发送到TPM(事务处理监视器)如CICS(客户信息控制系统)或Tuxedo。然后,该TPM将使用少量连接到数据库,请求处理事务。一旦交换完成,在TPM运行的代码将决定送回什么,下一个画面显示什么。
这与今天的“三层”架构相比肯定不够灵活,但是非常相似,极其相似。而且它在三十年前就有了!不仅如此,在LPAR(逻辑分区),即虚拟机运行的大型机程序几十年前也有了。还有,我经常使用一个“数据库”叫做VSAM(虚拟存储访问方法),使用索引的VSAM文件与使用NoSQL的数据库也非常类似。
是的,在上世纪80年代我就在使用NoSQL数据库在虚拟机中操作三层应用服务器程序!技术只是经历了三十年重新回到这里。名称变了,语言已经变了,硬件真的变了,但许多的基础是当时的,在今天仍然是这样。
在PL / I后我学的第二个语言是SQL。我开始用SQL编程,在一个曾经叫做SQL / DS,现在称为DB2的数据库。我学会了IBM大型机的SQL,使用VM / CMS作为操作系统,我在PL / I中编写嵌入式SQL。 在SQL / DS后的第二个数据库,其实是Oracle数据库。我在IBM AT计算机使用Oracle数据库版本5.1.5c,这个计算机有286芯片组和高达1MB的内存。不管你信不信,那时有许多运行Oracle数据库,Oracle Forms和Oracle报告,要购买Oracle数据库也很容易。我从一本杂志的一页广告上,提供包括Oracle数据库,Oracle窗体,Oracle报表,甚至是SQL *网络,只用$ 199就买下了所有!那时候在广告中Oracle较劲的不是IBM公司;不是微软;不是Informix,甚至Sybase。而是Ashton-Tate的dBASE!从那以后,情况真的变了。
在那之后,我编程学了一系列的语言:Rexx,EXEC 2,JCL,Ada,C,C ++,PL / SQL,T-SQL,各种UNIX脚本语言等等。
我常向别人或Ask Tom提出这些问题:你是如何实现在IT中达到的成就?你如何成为了今天的你?我认为我成功的最重要因素可以归结为一个词:导师。当我第一次开始编程时,就有一个很好的导师。我的故事开始于回答张贴在华盛顿邮报GRC(曾位于弗吉尼亚州维也纳,现在已不存在的小公司)的广告:“招聘PL / I程序员,不需要经验。”这我一定能胜任!就在同一天,我面试了GRC,还有另一家小公司,量子计算机服务,在泰森斯角,弗吉尼亚州,离GRC不远。作为一个美国匹兹堡大学的数学学士,我有了两个工作机会:
- GRC。他们希望程序员/分析员在IBM主机上写PL / I。
- 量子计算机服务。他们正在寻找对于消费者拨号启动的帮助台分析师。
这是1987年。我当然选择了两个职位中比较酷的,成为一名程序员/分析师。我不知道这意味着什么,因为我在大学都没有摸过电脑。
有趣的是,我在网上搜索了量子计算机服务。在开始GRC的工作并知道了量子计算机服务是如何成为美国在线(AOL)的,我想到我可能会成为这很少的员工中的一员。现在问我是否做出了正确的选择。我想我做了。
我成为了GRC的程序员/分析员,与一群人工作,他们令我难以置信,是好的难以置信。我与一个比我现在的年龄小10岁的人合作。他教了我很多东西,是我的良师益友。他教我如何写可理解的,可维护的,可调试的,可追踪的,自我诊断的代码。他教我编码前先三思。他教我测试,测试,测试,在没有检测和显示之前永远不判定对错。他教我的比任何一所学校教的都多。他教我如何正确做电脑那些事。我至今仍在做他教了我将近30年前的事情。
在我提高编程技术,数据库技术,架构技术,这些需要很多很多年积累的东西时,我也花时间在互联网的Usenet新闻组,在1994年至2000年间加入了1万多讨论互动。正是在那里,我的回答风格逐渐形成,即实事求是,使用有说明力的数字,并提供简洁明了的例子。
那么,Ask Tom是如何从在Usenet新闻组回答问题一步步发展的呢?Ask Tom的起源是1999年有人发了一个Usenet帖子。(https://groups.google.com/forum/#!original/comp.databases.oracle.misc/LPJI_Z1bKPY/0HYnScPSS9AJ) 一个直接更新Oracle数据库数据字典的概念,没有人–专家,新手,任何人,应在任何情况下提出的概念。 这种说法唯一的例外是如果出现可怕的错误,Oracle Support告诉你这样做。但是,很抱歉没有任何其他原因。Usenet的线索在问在该功能被引入Oracle数据库之前询问如何重命名列(Oracle8i数据库是那个帖子发出时的版本,重命名列功能在Oracle9i数据库中被引入)。
有两个简单的答案。一个是我经常给出的:创建一个视图,因为这就是视图的作用。您可以重新排序列,您可以将其重命名,你可以用视图做任何想要的。第二个回答是一个新的想法:添加新列,更新和null,drop旧列。
有人跟进“你认为更新SYS.COL $怎么样?”我绝对有意见,说:“我认为这是一个非常*坏的*可怕的想法。无法用言语来形容有多糟糕。“在线下演讲中,我发现这个想法的概念来自oracle.com-oracle.com/oramag的内容,确切说是在oracle.com中Oracle Magazine在线的内容。这是在用户提供的“tips”。那时我与Oracle杂志编辑Kelli Wiseth联系。原来,Oracle Magazine那时已经没有人审核贡献的材料。鉴于我肯定有一些感受,她问我是否介意做审批。我同意了。我会审核该杂志的纸质版和网络版的tips。
在接下来的几个星期和几个月中,这本杂志了除了tips,还有来自世界各地的读者的其他提问。他们没办法回答问题,也无法做任何事。Kelli Wiseth问我要不要看看其中的一些,最终,Ask Tom的概念于2000年诞生了。能在Oracle Magazine 5月/ 6月2000年版本看到曾经提出和回答的第一个问题。你会发现随着时间的推移,格式有了一点变化,但概念是相同的。
除了纸质打印的列,同年2月/ 3月,我们把Ask Tom搬到了网上。它开始成为一个运行在Oracle技术网络的,使用电子邮件的Perl应用程序。读者进入该网站的“ask a question”表格,输入一个问题,按提交,最终问题会到我的收件箱。这持续了大约六个星期。直到我每天工作在收件箱中收到40个或更多的问题时,把每个提交的问题发送给我的理念行不通了。我没办法控制问题的涌入;当我没有足够时间来回答问题时,我也没法关掉它。
这么一来,asktom.oracle.com网站就诞生了。我亲手写的Ask Tom“1.0版”。它采用了黑色和蓝色的配色方案(我希望我保留了一个静态页面;在2000年初的互联网档案的Wayback机器并没有复印件)并有大约四,五页。当然,我使用PL / SQL,当时Oracle Web Agent出现了,一个mod_plsql的先驱。
此后不久,一个叫Joel Kallman的家伙联系我。他在内部研究新项目,是叫做HTML DB的工具,现在被称为Oracle Application Express。当它几乎准备好派上用场,但仍未从Orac
Le派出之前,Joel提出用Oracle Application Express重写Ask Tom网站来测试和验证这个工具的力量。由于我完成了所有API,用于保存的问题,更新问题,和要求提问者的详细信息等等的API,这将是HTML DB环境的测试,以构建用户界面并处理所有的安全性,导航等等。这个网站从最初的5页到今天40多个的增量,仅仅是因为这个改变。我不可能手动编码40多页,如果没有使用HTML DB重写,然后迁移到Oracle Application Express,Ask Tom的网站就不会有特定的功能了。
所以就是这样,这就是故事背后的故事。在过去的15年里,我已经回答了Ask Tom几万的问题,写了一系列关于Oracle的书,在1000个或以上的用户组活动进行演讲,结交来自世界各地的人们,许多次周游世界。我不会离开Oracle的社区,但不会太活跃,至少在一段时间。你可能不会在会议看到我了,但愿你会在www.amazon.com和其他书店看到我!
我就以最近就有关Oracle数据库的问题进行结尾。根据我的经验回答这些问题,我发现其实关于数据库的问题只有五个。
头3个问题的答案是“使用绑定变量。”
第四个问题的答案是“不使用绑定变量。”
第五个问题的答案是“看情况”。
如果你知道这五个答案,你可以回答有关数据库的任何问题!
其实,如果你只记得第五个问题的答案 “看情况” – 你可以回答任何问题。
这可能是我在近30年的IT行业学到的最重要的事情:没有单一的“最佳”方式,对每一个问题,没有单一的“最佳”方式。在IT中真正的挑战不是学习最佳方式,而学习尽可能多的方式,并且学习根据当前情况如何评估哪个方法是最好的。我期待着通过今后努力的写作与Oracle社区的进一步互动,而且我认为那些努力会帮助您找到合适的方法。
我想借用Douglas Adams的一句话:“或许我没能去我最初打算去的地方,但我想我最终到达了我想到的地方。”
下一步
ASK TOM
READ DOWNLOAD Oracle Database 12c LEARN more about Oracle Database 12c FOLLOW Oracle Database |
Leave a Reply