[Oracle] 書寫歷史的甲骨文――ORACLE公司傳奇

[Oracle] 書寫歷史的甲骨文――ORACLE公司傳奇

作者:Fenng
日期:Sep 09 2004

ORACLE公司之起源

很難想象,ORACLE公司的這一段傳奇居然要從IBM開始。

1970年的6月,IBM公司的研究員埃德加·考特 (Edgar Frank Codd) 在Communications of ACM 上發表了那篇著名的《大型共享數據庫數據的關係模型》(A Relational Model of Data for Large Shared Data Banks)的論文。這是數據庫發展史上的一個轉折。要知道,當時還是層次模型和網狀模型的數據庫產品在市場上佔主要位置。從這篇論文開始,拉開了關係型數據庫軟件革命的序幕。

雖然早在1970年就誕生了關係模型理論,但是市場上遲遲不見關係型數據庫管理軟件的推出。主要原因是很多反對者認爲關係型數據庫速度太慢,比不上當時的層次式數據庫。值得好笑的是,IBM雖然1973年就啓動了System R的項目來研究關係型數據庫的實際可行性,也沒有及時推出這樣的產品,因爲當時IBM的的IMS(著名的層次型數據庫)市場不錯,如果推出關係型數據庫,牽涉到IBM很多人的自身利益。再者,IBM龐大複雜的官僚機構處在決策上遠不那麼靈活。

1977年6月,Larry Ellison與Bob Miner和Ed Oates在硅谷共同創辦了一家名爲軟件開發實驗室(Software Development Laboratories,SDL)的計算機公司(ORACLE公司的前身)。那個時候,32歲的Larry Ellison,這個讀了三家大學都沒能畢業的輟學生,還只是一個普通的軟件工程師。公司創立之初,Miner是總裁,Oates爲副總裁,而Ellison,因爲一個合同的事情,還在另一家公司上班。沒多久,第一位員工Bruce Scott(用過ORACLE數據庫軟件的人都知道有個Scott用戶的吧?沒錯,就是這個Scott,至於Scott用戶的密碼Tiger,那是Scott養的貓的名字)加盟進來,在Miner和Oates有些厭倦了那種合同式的開發工作後,他們決定開發通用軟件,不過們還不知道自己能開發出來什麼樣的產品。Oates最先看到了埃德加·考特的那篇著名的論文連同其他幾篇相關的文章並推薦Ellison和Miner也閱讀一下。Ellison和Miner預見到數據庫軟件的巨大潛力(跟着IBM走,沒錯),於是,SDL開始策劃構建可商用的關係型數據庫管理系統(RDBMS)。

很快他們就弄出來一個不太像樣的產品,或者具體的說,更像一個Demo。根據Ellison和Miner他們在前一家公司從事的一個由中央情報局投資的項目代碼,他們把這個產品命名爲ORACLE。因爲他們相信,ORACLE(字典裏的解釋有“神諭, 預言”之意)是一切智慧的源泉。1979年,SDL更名爲關係軟件有限公司(Relational Software,Inc.,RSI),畢竟“軟件開發實驗室”不太像一個大公司的名字。1983年,爲了突出公司的核心產品,RSI再次更名爲ORACLE。

a_case_about_export_clip_image002.jpg
圖1 美國ORACLE公司總部一瞥

發展與壯大

RSI在1979年的夏季發佈了可用於DEC公司的PDP-11計算機上的商用ORACLE產品,這個數據庫產品整合了比較完整的SQL實現,其中包括子查詢、連接及其他特性。但不得不說,軟件不是很穩定,並缺少事務處理這樣的重要功能。出於市場策略,公司宣稱這是該產品的第二版,但卻是實際上的第一版。之所以被命名爲第2版而不是第1版,是因爲Ellison認爲潛在的客戶更願意購買第2個版本,而不是初始版本。(雖然這樣做有些不太誠實,還是要承認這是個十分高明的技巧。到現在還有一些公司把自己賣給客戶的版本叫做1.0 ,學學1979年的ORACLE吧!)多年以後的今天,ORACLE公司聲稱是他們第一個提供了第一個SQL關係型數據庫管理系統。

雖然軟件不是很好,但是客戶還是有的。美國中央情報局迫不及待的想買一套這樣的軟件來滿足他們的需求。但在諮詢了IBM公司之後發現IBM沒有可以商用的產品,他們聯繫了RSI。於是RSI有了第一個客戶。在當時,政府和軍方的機構往往同時有幾種計算機,而那時還沒有什麼“軟件可移植”這樣的說法,當然,也幾乎沒有具有這樣的能力的應用軟件。也就是說,給PDP-11開發的ORACLE數據庫不能用在IBM主機和DEC的VAX上。很快用戶就表現出來這樣的需求:ORACLE能否同時在不同的操作系統上運行?這給RSI帶來了新的挑戰(主要是Miner和Scott)。70年代末期和80年代早期的軟件一般都設計成在單一操作系統上運行,具有可移植能力的軟件很少。

1983年3月,RSI發佈了ORACLE第三版。Miner和Scott歷盡艱辛用C語言重新寫就這一版本。要知道,C語言當時推出不久,用它來寫ORACLE軟件也是具有一定的風險的,但除此之外,別無他法。很快就證明了這樣做是多麼的正確,C編譯器便宜而又有效。從現在起,ORACLE產品有了一個關鍵的特性:可移植性。ORACLE第3版還推出了SQL語句和事務處理的“原子性”――SQL語句要麼全部成功,要麼全部失敗,事務處理要麼全部提交,要麼全部回滾。ORACLE第3版還引入了非阻塞查詢,使用存儲在"before image file"中的數據來查詢和回滾事務,從而避免了讀鎖定(read lock)的使用(雖然通過使用表級鎖定限制了它的吞吐量)。同樣是1983年,IBM發佈了姍姍來遲的Database 2(DB2),但只可在MVS上使用。不管怎麼說,ORACLE已經佔取了先機。

在開發第三版還沒有結束的時候,Scott離開了ORACLE。當時用C改寫ORACLE的壓力很大,無休止的軟件調試終於讓Scott不堪重負,選擇了一走了之。把剩下的重擔交給了Miner一個人。在出售了自己的%4的股票之後,Scott 後來創建了Gupta公司(現更名爲Centura Software)和PointBase公司(提供百分之百純Java嵌入式數據庫),都是開發和數據庫相關的產品。多年後有人問到他的%4的ORACLE股票的時候,Scott,這個曾經給ORACLE寫出第一行代碼的技術高手,也只能報以一笑了。如果能堅持下來,那是一筆幾億美金的財富。不過當時的Scott沒有那麼多的想法,他只是太累了。


a_case_about_export_clip_image004.jpg
圖二 Bruce Scott 現在是PointBase公司的發起人之一

ORACLE最先將其軟件移植到DEC VAX計算機上的VMS操作系統上。早在1979年公司就已經僱了一位DEC公司的技術高手Robot Brandt進行VAX上ORACLE的開發。開始的時候資金有限,只能到加州大學伯克利分校去蹭機器進行開發,後來好一些,但機器也是借來的。儘管困難重重,Brandt還是比較成功的完成了移植工作。隨着VAX小型機的大量銷售乃至供不應求,ORACLE軟件也成爲VAX上最受歡迎的程序。這一點要歸功於Larry對市場的先知先覺。如果說,是IBM引領着ORACLE公司走上數據庫的大船,那麼DEC公司的VAX就是帶着他們揚帆出海了。短短的幾年之後,ORACLE數據庫被移植到各種主要平臺之上。ORACLE產品也一直因爲有可移植性這個關鍵特性而被那些潛在的客戶關注。

Oates這個時候因爲婚姻趨於破裂而情緒沮喪,已經不能把精力全部放到公司上,不得不離開公司。幾年後,他又重返公司,重新爲ORACLE帶來巨大的貢獻,他許下諾言,在公司員工超過1萬人的時候會再度離開。1999年,他完成了心願。現在他正在縱情於音樂,自得其樂。

很長一段時間裏,公司研發由Miner獨力承擔。Miner視金錢如無物,爲人低調,和Ellison的鋒芒必露形成鮮明的對比。在公司裏,大家一致認爲他是老好人,他也深受員工愛戴。Ellison是公司的大腦,Miner則當之無愧的成爲公司的心臟。他是個沉默的英雄,正如Steve Jobs背後的Steve Wozniak一樣。

1984年10月,ORACLE發佈了第4版產品。產品的穩定性總算得到了得到了一定的增強,用Miner的話說,達到了“工業強度”。但是還不夠令人滿意,用戶對產品的抱怨似乎永無休止。這一版增加了讀一致性(read consistency),這是數據庫的一個關鍵特性,可以確保用戶在查詢期間看到一致的數據。也就是說,當一個會話正在修改數據時,其他的會話將看不到該會話未提交的修改。可以看到,在ORACLE第四版之前,產品始終是不穩定的,但是ORACLE的這羣銷售人員,主要是Ellison,他在宣傳ORACLE的時候總是要誇大其詞,但他就是有能力把軟件賣出去,而且,還賣得很好,不得不承認,這的確有些神奇。讓我們看看1984年軟件市場的情形,在數據庫市場上的霸主是Asnton-Tale公司,他們的拳頭產品是剛推出不久的dBase III(確切的說dBase是PC上的數據庫軟件霸主),剛剛成爲全球第三大的獨立軟件公司(第一和第二分別是微軟、Lotus,ORACLE在當時還排不上號),這一年,也是蘋果公司Macintosh誕生的年度,Steven Jobs用這個拳頭產品挑戰老大哥IBM。同樣在這一年中,ORACLE公司的開發人員剛剛把產品移植到PC上。這是最好的年代,也是最壞的年代。數以千計的小公司在軟件領域裏爭鬥不休,新公司如雨後春筍般成立,ORACLE如何才能於不敗之地?

在1985年,ORACLE發佈了5.0版。有用戶說,這個版本算得上是ORACLE數據庫的穩定版本。這也是首批可以在Client/Server模式下運行的的RDBMS產品,在技術趨勢上,ORACLE數據庫始終沒有落後。這意味着運行在桌面PC機(客戶機)上的商務應用程序能夠通過網絡訪問數據庫服務器。1986年發佈的5.1版還支持分佈式查詢,允許通過一次性查詢訪問存儲在多個位置的數據。

那是在1985年,當時曾經的最大的獨立軟件公司Cullinet(主要銷售網狀數據庫)已經如流星般隕落。ORACLE的主要競爭對手是Ingres數據庫。Ingres在加州大學伯克利分校誕生,主要的設計者是當時鼎鼎大名的Michael Stonebraker教授。可以說Ingres數據庫軟件是上個世紀80年代技術上最好的數據庫,Ingres市場分額的快速增長已經給ORACLE早成了很大的壓力。巧的是,這個時候,IBM公司再一次伸出“上帝之手”。

Ingres使用的是Stonebraker 發明的QUEL(Query Language))的查詢技術,這和IBM的SQL大不相同。在某些地方QUEL甚至要優於SQL。IBM當時擔心Ingres把QUEL變成標準會對自己不利。經過一番衡量,決定把自己的SQL提交給數據庫標準委員會。而Stonebraker教授可不打算把QUEL提交給數據庫標準委員會,學院派的他認爲這麼做實際上是扼殺了創新精神。鷸蚌相爭,漁翁得利。ORACLE看到並抓住了這個絕佳的機會,大肆宣佈ORACLE全面與SQL兼容,加上ORACLE當時對Ingres PC上的版本的攻擊(弱化對手優勢,化解自己弱勢是他們最拿手的本領),再加上ORACLE公司銷售上的強勢,Ingres不斷丟城失地,等到後來推出支持SQL的數據庫的時候爲時已晚。緊跟IBM讓ORACLE得以成長、壯大,擁抱標準,擁抱開放,擁抱變化,讓ORACLE立於不敗之地。

1986年3月12日,ORACLE公司以每股15美元公開上市,當日以20.75美元收盤,公司市值2.7億美元。3月13日,微軟以每股21美元的發行價上市,以28美元收市,公司市值達到7億美元。遠遠超過了ORACLE。成功的光環的微軟和蓋茨遮蓋住了ORACLE和Ellison的光芒,可能這也是Ellison敵視微軟的開始。

a_case_about_export_clip_image006.jpg

圖三 桀驁不馴的Larry Ellison

經受挫折

ORACLE第6版於1988年發佈。由於過去的版本在性能上屢受詬病,Miner帶領着工程師對數據庫核心進行了重新的改寫。引入了行級鎖(row-level locking)這個重要的特性,也就是說,執行寫入的事務處理只鎖定受影響的行,而不是整個表。這個版本引入了還算不上完善的PL/SQL(Procedural Language extension to SQL)語言。第6版還引入了聯機熱備份功能,使數據庫能夠在使用過程中創建聯機的備份,這極大地增強了可用性。同時在這一年,ORACLE開始研發ERP軟件。

公司發展看上去比較順利,不過,噩夢纔剛剛開始。

由於過去對軟件測試重視的程度不夠――那個時候公司規模小,基本上都是客戶幫助免費測試的。在第六版剛發佈之後,很多迫不及待開始使用的用戶就怨聲載道。這是個根本就沒有測試好就進行發佈的產品(也怪Ellison,大話總要說在前頭,只好自嘗苦果)。用戶開始對ORACLE大肆抨擊,ORACLE的一些對手,也開始落井下石,針對ORACLE產品的一些弱點進行攻擊。開發人員一面應付憤怒的用戶,一面加班加點地對程序進行接連不斷的修正,最後,總算得到了一個比較穩定的版本,暫時平息了用戶的憤怒。

但是,實際的問題並不在這裏,幾年來高速增長的同時也給公司帶來了巨大的隱患,1990財年第三季度報表的公佈引爆了一切。財務人員發現了1500萬美元的壞帳,並且公司利潤距離預期相差甚遠。接下來的時間裏,大公司病的諸般症狀接踵而來,面對股東的指控,股票一落千丈,公司前景暗淡,甚至面臨破產。一度靠貸款來維持自己的奢華生活也不變賣股票的Ellison也快撐不住了。公司下大力氣整頓財務(財務主管傑夫·沃克從某種程度上解救了公司)。公司宣佈削減開支,裁退大量銷售人員,同時聘用了專門的管理人才。

噩夢延續到ORACLE第七版的推出而結束。這個公司已經空談了好幾年的新版本(一度被譏諷爲不過是Ellison的故計重施而已),直到1992年6月才終於閃亮登場,這一次公司吸取了第六版匆忙上市的教訓,聽取了用戶的多方面的建議,並集中力量對新版本進行了大量而細緻的測試。該版本增加了許多新的性能特性:分佈式事務處理功能、增強的管理功能、用於應用程序開發的新工具以及安全性方法。ORACLE7還包含了一些新功能,如存儲過程、觸發過程和說明性引用完整性等,並使得數據庫真正的具有可編程能力。還有一點必需要說明的是,這個版本在原有的基於規則的優化器(RBO)之外引入一種新的優化器:基於開銷的優化器(Cost-Based Optimizer , CBO)。CBO根據數據庫自身對對象的統計來計算語句的執行開銷,從而得出具體的語句執行計劃。在以後的幾個重大版本中,ORACLE的工程師們逐步對這個優化器進行改進,CBO逐漸取代了RBO。

ORACLE 第七版是ORACLE真正出色的產品,取得了巨大的成功。這個版本的出現真是好時機,當時Sybase公司的數據庫已經佔據了不少份額,ORACLE藉助這一版本的成功,一具擊退了咄咄逼人的Sybase。公司的銷售人員這次算到了給用戶兌現空頭許諾的時候。公司經過兩三年的治理,終於擺脫了種種麻煩,重新開始健康發展,銷售額也從92年的15億美元變爲四年後的42億美元。

跨上巔峯 

“攪渾水”是Ellison的一項絕技。在1995年巴黎舉行的歐洲信息技術論壇會議上,Ellison在即興演講中介紹了網絡計算機(Network Computer,NC)的概念,所謂NC指的是配置簡單卻能充分利用網絡資源的低價電腦,最爲重要的是,它不需要操作系統,或者更準確的說,不需要微軟的操作系統。Ellison希望藉此來抵制微軟的強勢。很快,ORACLE聯合IBM、Sun、Apple和Netscape在1996年制定了網絡計算機的標準,但事實上人們從頭到尾沒有看到一臺真正的NC生產出來。這次的演講在業界引起了軒然大波,通過這個事件,ORACLE公司吸引了足夠多的注意力,同時也讓人們看到ORACLE公司對於網絡的巨大信心。

1997年6月,ORACLE第八版發佈。ORACLE8支持面向對象的開發及新的多媒體應用,這個版本也爲支持Internet、網絡計算等奠定了基礎。同時這一版本開始具有同時處理大量用戶和海量數據的特性。這個版本也算可圈可點了。

1998年9月,ORACLE公司正式發佈ORACLE 8i。“i”代表Internet,這一版本中添加了大量爲支持Internet而設計的特性。這一版本爲數據庫用戶提供了全方位的Java支持。ORACLE 8i成爲第一個完全整合了本地Java運行時環境的數據庫,用Java就可以編寫ORACLE的存儲過程。對,Java,只要是能夠打擊微軟的武器,ORACLE都要派上用場。ORACLE8i 添加了SQLJ(一種開放式標準,用於將SQL數據庫語句嵌入客戶機或服務器Java代碼)和ORACLE interMedia(用於管理多媒體內容)以及XML等特性。同時,ORACLE 8i 極大程度上提高了伸縮性、擴展性和可用性以滿足網絡應用需要。接下來的幾年中,ORACLE陸續發佈了8i的幾個版本,並逐漸添加了一些面向網絡應用的新特性。面對開源運動的蓬勃發展,ORACLE自然不甘落後,1998年十月ORACLE發佈了可用於Linux平臺的ORACLE 8 以及ORACLE Application Server 4.0,隨後不久,ORACLE又發佈了ORACLE 8i for Linux。在 .com大潮中,ORACLE是站在風口浪尖的弄潮兒。

在2001年6月的ORACLE OpenWorld大會中,ORACLE發佈了ORACLE 9i。在ORACLE 9i的諸多新特性中,最重要的就是Real Application Clusters(RAC)了。說起ORACLE集羣服務器,早在第五版的時候,ORACLE就開始開發ORACLE並行服務器(ORACLE Parallel Server ,OPS),並在以後的版本中逐漸的完善了其功能,不過,嚴格來說,儘管OPS算得上是個集羣環境,但是並沒有體現出集羣技術應有的優點。在完全吸收了Rdb(ORACLE在1994年收購了Compaq的Rdb數據庫,此前Rdb屬於DEC公司,DEC公司在VAX上實現了第一個可以商用的Rdb集羣數據庫)的一些技術優勢之後,ORACLE終於推出了真正的應用集羣軟件。RAC使得多個集羣計算機能夠共享對某個單一數據庫的訪問,以獲得更高的可伸縮性、可用性和經濟性。ORACLE 9i的RAC在TPC-C的基準測試中打破了數項記錄,一時間業內矚目。這個新的數據庫還包含集成的商務智能(BI)功能。ORACLE 9i第2版還做出了很多重要的改進,使ORACLE數據庫成爲一個本地的XML數據庫;此外還包括自動管理、Data Guard等高可用方面的特性。

歷史還在繼續

2003年9月8日,舊金山舉辦的ORACLE World大會上,Ellison宣佈下一代數據庫產品爲“ORACLE 10g”。ORACLE應用服務器10g(ORACLE Application Server 10g)也將作爲甲骨文公司下一代應用基礎架構軟件集成套件。“g”代表“grid ,網格”。這一版的最大的特性就是加入了網格計算的功能。何謂網格計算?網格計算可以把分佈在世界各地的計算機連接在一起,並且將各地的計算機資源通過高速的互聯網組成充分共享的資源集成。通過合理調度,不同的計算環境被綜合利用並共享。ORACLE宣稱10g可以作爲網格計算的基礎,矛頭直指最大的敵人IBM的“隨需應變”!看來,ORACLE公司已經把這一次的“賭注”押在了網格計算的大市場上。但前景如何?讓我們拭目以待。

如果說,IBM是IT產業中的一頭巨鯨,那麼ORACLE一定就是一條大鯊魚:咄咄逼人,善於進攻。就在2003年6月初,ORACLE突然宣佈51億美金收購仁科(PeopleSoft),業內再次震動。次舉又一次露出ORACLE 一貫善於進攻的本性。要知道,ORACLE在發展過程中很少對企業進行收購的,那麼收購仁科目的何在?首先,ORACLE覬覦企業應用軟件市場已久,但苦於不能進一步擴大市場分額,尤爲重要的是,一旦成功,可以直接對最大的敵人IBM進行打擊,還可以阻擊SAP等巨頭的強勢,這一點尤爲重要。時至今日,ORACLE依然以不達目的不罷休的態勢和仁科纏鬥,結果如何,讓我們拭目以待。

"人生最大的快樂是擊敗敵人”,Ellison一定很喜歡這句活。

—――――――――――――――――――――――――――――――The End

原文出處

http://www.dbanotes.net/Oracle/History_about_Oracle_company.htm

本文爲.net版權所有,轉載請註明出處、作者並儘量保留本文所有超鏈接。


本文作者:
Fenng,某美資公司DBA,業餘時間混跡於各數據庫相關的技術論壇且樂此不疲。目前關注如何利用ORACLE數據庫有效地構建企業應用。對Oracle tuning、troubleshooting有一點研究。
個人技術站點:
http://www.dbanotes.net/ 。可以通過電子郵件 dbanotes@gmail.com 聯繫到他。

posted on 2004年09月17日 5:46 PM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章