有數(shù)據(jù)的地方必有庫,詳解關(guān)系型數(shù)據(jù)庫的發(fā)展歷史
數(shù)據(jù)庫發(fā)展史
信息系統(tǒng)產(chǎn)生了海量的數(shù)據(jù),有數(shù)據(jù)必須要有數(shù)據(jù)的存放位置,
無庫時代 :沒有專門的數(shù)據(jù)庫,數(shù)據(jù)大多以文件形式存放
層次狀數(shù)據(jù)庫 :使用層次狀模型進行數(shù)據(jù)庫設(shè)計和存放
網(wǎng)狀數(shù)據(jù)庫 :使用網(wǎng)狀模型進行數(shù)據(jù)庫設(shè)計和存放
關(guān)系型數(shù)據(jù)庫 :使用關(guān)系型模型進行數(shù)據(jù)庫設(shè)計和存放
非關(guān)系型數(shù)據(jù)庫:為適應(yīng)水平擴展性和處理超大量的數(shù)據(jù)環(huán)境,近幾年發(fā)展非常迅速的發(fā)展,衍生類型非常多。
本文主要考慮對于OLTP和OLAP占據(jù)主流的關(guān)系型數(shù)據(jù)庫,目前關(guān)系型數(shù)據(jù)庫軟件主要有:
大型商用關(guān)系型數(shù)據(jù)庫:Oracle,DB2,SQL Sever/Sybase;
近年發(fā)展較快的開源關(guān)系型數(shù)據(jù)庫:MySQL,PostgreSQL,SQLite
關(guān)系型數(shù)據(jù)庫主要人物與發(fā)展歷史
關(guān)系型數(shù)據(jù)庫的發(fā)展,大致可分為理論奠基、SQL標準、商用成型、多家發(fā)展等幾個階段,在每個階段都有對應(yīng)的重要人物與貢獻。
首先是數(shù)學(xué)家E.F.Codd發(fā)表了數(shù)學(xué)論文《用于大型共享數(shù)據(jù)庫的關(guān)系數(shù)據(jù)模型》,提出關(guān)系和關(guān)系運算的概念,奠定了關(guān)系型數(shù)據(jù)庫的理論模型;
然后是Codd的同事DonChamberlin將Codd的論文和關(guān)系運算,轉(zhuǎn)換成為比較容易理解和使用的SQL語言,并且在后面成為所有關(guān)系型數(shù)據(jù)庫的標準;
有了上面的數(shù)據(jù)理論和SQL基礎(chǔ),LarryElision和他的同事看到商機,開發(fā)出一個商用大型關(guān)系型數(shù)據(jù)庫Oracle,Scott作為一個開發(fā)的員工,將其測試賬戶放在里面了;
除了Oracle數(shù)據(jù)庫,IBM也開發(fā)出了DB2數(shù)據(jù)庫,但其他主流的關(guān)系型數(shù)據(jù)庫都與Michael Stonebraker有關(guān),開發(fā)了Postgres并放在BSD版權(quán)下,后來演變成了Postgres SQL;87年微軟和Sybase合作,開發(fā)除了MS SQL和Sybase;后又加入Ingres和Informax,其他的主流關(guān)系型數(shù)據(jù)庫幾乎都和Michael Stonebraker有關(guān)。
關(guān)系型數(shù)據(jù)庫之父:E.F.Codd
1970年,Codd劃時代的論文《用于大型共享數(shù)據(jù)庫的關(guān)系數(shù)據(jù)模型》
Codd全關(guān)系系統(tǒng)十二準則
準則0
一個關(guān)系形的關(guān)系數(shù)據(jù)庫系統(tǒng)必須能完全通過它的關(guān)系能力來管理數(shù)據(jù)庫。
準則1 信息準則
關(guān)系數(shù)據(jù)庫系統(tǒng)的所有信息都應(yīng)該在邏輯一級上用表中的值這一種方法顯式的表示。
準則2 保證訪問準則
依靠表名、主碼和列名的組合,保證能以邏輯方式訪問關(guān)系數(shù)據(jù)庫中的每個數(shù)據(jù)項。
準則3 空值的系統(tǒng)化處理
全關(guān)系的關(guān)系數(shù)據(jù)庫系統(tǒng)支持空值的概念,并用系統(tǒng)化的方法處理空值。
準則4 基于關(guān)系模型的動態(tài)的聯(lián)機數(shù)據(jù)字典
數(shù)據(jù)庫的描述在邏輯級上和普通數(shù)據(jù)采用同樣的表述方式。
準則5 統(tǒng)一的數(shù)據(jù)子語言
一個關(guān)系數(shù)據(jù)庫系統(tǒng)可以具有幾種語言和多種終端訪問方式,但必須有一種語言,它的語句可以表示為嚴格語法規(guī)定的字符串,并能全面的支持各種規(guī)則。
準則6 視圖更新準則
所有理論上可更新的視圖也應(yīng)該允許由系統(tǒng)更新。
準則7 高級的插入、修改和刪除操作
系統(tǒng)應(yīng)該對各種操作進行查詢優(yōu)化。
準則8 數(shù)據(jù)的物理獨立性
無論數(shù)據(jù)庫的數(shù)據(jù)在存儲表示或存取方法上作任何變化,應(yīng)用程序和終端活動都保持邏輯上的不變性。
準則9 數(shù)據(jù)邏輯獨立性
當對基本關(guān)系進行理論上信息不受損害的任何改變時,應(yīng)用程序和終端活動都保持邏輯上的不變性。
準則10 數(shù)據(jù)完整的獨立性
關(guān)系數(shù)據(jù)庫的完整性約束條件必須是用數(shù)據(jù)庫語言定義并存儲在數(shù)據(jù)字典中的。
準則11 分布獨立性
關(guān)系數(shù)據(jù)庫系統(tǒng)在引入分布數(shù)據(jù)或數(shù)據(jù)重新分布時保持邏輯不變。
準則12 無破壞準則
如果一個關(guān)系數(shù)據(jù)庫系統(tǒng)具有一個低級語言,那么這個低級語言不能違背或繞過完整性準則。
SQL之父:唐-錢伯林(Don Chamberlin)
唐·錢伯林(DonChamberlin),是IBM Fellow,ACM及IEEE 特別會員。他是SQL關(guān)系數(shù)據(jù)庫語言的發(fā)明人之一,也是XQuery語言的設(shè)計基礎(chǔ)Quilt語言的發(fā)明人之一。Don擁有加利福尼亞大學(xué)博士學(xué)位。他目前在IBM Almaden 研究中心工作,在過去幾年中,他代表IBM參與W3C XML Query工作組的工作。
Scott和他的貓的故事
一個商用關(guān)系型數(shù)據(jù)庫——Oracle
左起 Ed Oates、Bruce Scott、Bob Miner、Larry Ellison
Oracle與Larry Ellison
主流數(shù)據(jù)庫的奠基人——Michael Stonebraker
Michael Stonebraker,SQL Server/Sysbase奠基人。
著名的數(shù)據(jù)庫科學(xué)家,他在1992 年提出對象關(guān)系數(shù)據(jù)庫模型在加州伯克利分校計算機教授達25年。在此期間他創(chuàng)作了Ingres,Illustra, Cohera, StreamBase Systems和Vertica等系統(tǒng)。Stonebraker教授也曾擔任過Informix的CEO,目前他是MIT麻省理工學(xué)院客席教授。
Stonebraker 教授領(lǐng)導(dǎo)了稱為Postgres的后Ingres項目。這個項目的成果非常巨大,在現(xiàn)代數(shù)據(jù)庫的許多方面都做出的大量的貢獻。Stonebraker 教授還做出了一件造福全人類的事情,那就是把Postgres 放在了BSD 版權(quán)的保護下。如今Postgres名字已經(jīng)變成了PostgreSQL,功能也是日漸強大。
87年左右,Sybase聯(lián)合了微軟,共同開發(fā)SQL Server。原始代碼的來源與Ingres有些淵源。后來1994年,兩家公司合作終止。此時,兩家公司都擁有一套完全相同的SQLServer代碼??梢哉J為,Stonebraker教授是目前主流數(shù)據(jù)庫的奠基人。
1973 年 IBM 啟動了 System R 項目,項目組發(fā)表了一系列關(guān)于關(guān)系數(shù)據(jù)庫的的文章。兩個伯克萊大學(xué)的科學(xué)家,Michael Stonebraker 和 Eugene Wong 讀了這些文章后非常感興趣,于是決定自己啟動一個關(guān)系數(shù)據(jù)的研究項目。他們已經(jīng)為一個地理數(shù)據(jù)庫系統(tǒng)申請到了資金,他們稱為 ingres,意思是交互式圖形獲取系統(tǒng)
Ingres的代碼是可以免費獲得的,到 1980 年止,共分發(fā)了 1000 份拷貝,不少公司使用這些代碼形成了自己的產(chǎn)品線。Informix 是最早的用戶之一,并且其員工完全是 Ingres 項目的人員。他們在 1984 發(fā)布了基于 Ingres 的產(chǎn)品,到 1997 年已經(jīng)成了第二大數(shù)據(jù)庫供應(yīng)商。然而,一系列管理和財會方面的失誤在短短兩年內(nèi)毀了公司的信譽,并于 2000 年被 IBM 收購。
Robert Epstein 在伯克立大學(xué)項目中的重要的程序員,創(chuàng)建了 Britton-Lee,后來的 Sybase,Sybase 在 80 到 90 年期間是第二號數(shù)據(jù)庫產(chǎn)品,Sybase 于1992年將產(chǎn)品賣給微軟,微軟稱之為 MSSQLServer。
Stonebraker 自己離開了伯克立大學(xué)在1982年創(chuàng)建了Ingres 公司,Stonebraker 在這個公司工作到 1991 年,然后公司賣給了 ASK,1994年 ASK/ingres 被 CA Computer Associates 收購。2004 年 CA 在開源許可下發(fā)布了 Ingres release 3,并繼續(xù)開發(fā)銷售 Ingres。
在返回 Berkeley 之后,Stonebraker 開始了一項后-Ingres 計劃來致力于解決關(guān)系模型的數(shù)據(jù)庫管理現(xiàn)有實現(xiàn)的局限性。其中主要的是它們不能讓用戶定義組合更簡單域的新域(或者叫類型)(參見關(guān)系模型獲得對術(shù)語域的解釋。)結(jié)果的計劃叫做 Postgres,以介入對增加完整的類型支持所需要的最小數(shù)目的特征為目標。其中包括定義類型的功能,還有完全描述聯(lián)系的能力 - 聯(lián)系至今已經(jīng)廣泛使用但仍由用戶完全維護。在 Postgres 中數(shù)據(jù)庫理解聯(lián)系,并能以使用規(guī)則的自然方式在有關(guān)聯(lián)的表中檢索信息。詳情請參見 PostgreSQL 的文章。在 1990 年 Stonebraker 再次離開 Berkeley 去商業(yè)化 Postgres,使用了名字 Illustra。Illustra 后來被 Informix 并購,而 Stonebraker 再次回去搞高等教育了。
數(shù)據(jù)庫廠商的發(fā)展歷史之Oracle
所有這一切要從IBM的一篇論文談起,1970年的6月,IBM公司的研究員埃德加·考特(Edgar Frank Codd) 在 Communications ofACM 上發(fā)表了那篇著名的《大型共享數(shù)據(jù)庫數(shù)據(jù)的關(guān)系模型》(A Relational Model ofData for Large Shared Data Banks)的論文。這是數(shù)據(jù)庫發(fā)展史上的一個轉(zhuǎn)折。要知道,當時還是層次模型和網(wǎng)狀模型的數(shù)據(jù)庫產(chǎn)品在市場上占主要位置。從這篇論文開始,拉開了關(guān)系型數(shù)據(jù)庫軟件革命的序幕。IBM雖然1973年就啟動了SystemR的項目來研究關(guān)系型數(shù)據(jù)庫的實際可行性,也沒有及時推出這樣的產(chǎn)品,因為當時IBM的的IMS(著名的層次型數(shù)據(jù)庫)市場不錯,如果推出關(guān)系型數(shù)據(jù)庫,牽涉到IBM很多人的自身利益。再者,IBM龐大復(fù)雜的官僚機構(gòu)處在決策上遠不那么靈活
1977年6月,Larry Ellison與Bob Miner和Ed Oates在硅谷共同創(chuàng)辦了一家名為軟件開發(fā)實驗室(Software Development Laboratories,SDL)的計算機公司(ORACLE公司的前身)。那個時候,32歲的Larry Ellison,這個讀了三家大學(xué)都沒能畢業(yè)的輟學(xué)生,還只是一個普通的軟件工程師。公司創(chuàng)立之初,Miner是總裁,Oates為副總裁,而Ellison,因為一個合同的事情,還在另一家公司上班。沒多久,員工Bruce Scott(用過ORACLE數(shù)據(jù)庫軟件的人都知道有個Scott用戶的吧?沒錯,就是這個Scott,至于Scott用戶的密碼Tiger,那是Scott養(yǎng)的貓的名字, Oracle也一直沒有忘記她這位程序員)進來,在Miner和Oates有些厭倦了那種合同式的開發(fā)工作后,他們決定開發(fā)通用軟件,不過們還不知道自己能開發(fā)出來什么樣的產(chǎn)品。Oates看到了埃德加·考特的那篇著名的論文連同其他幾篇相關(guān)的文章并推薦Ellison和Miner也閱讀一下。Ellison和Miner預(yù)見到數(shù)據(jù)庫軟件的巨大潛力(跟著IBM走,沒錯),于是,SDL開始策劃構(gòu)建可商用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。
根據(jù)Ellison和Miner他們在前一家公司從事的一個由中央情報局投資的項目代碼,他們把這個產(chǎn)品命名為ORACLE。因為他們相信,ORACLE(字典里的解釋有“神諭, 預(yù)言”之意)是一切智慧的源泉。1979年,SDL更名為關(guān)系軟件有限公司(Relational Software,Inc.,RSI),畢竟“軟件開發(fā)實驗室”不太像一個大公司的名字。1983年,為了突出公司的核心產(chǎn)品,RSI再次更名為ORACLE。Oracle從此正式走入人們的視野。
RSI在1979年的夏季發(fā)布了可用于DEC公司的PDP-11計算機上的商用ORACLE產(chǎn)品,這個數(shù)據(jù)庫產(chǎn)品整合了比較完整的SQL實現(xiàn),其中包括子查詢、連接及其他特性。出于市場策略,公司宣稱這是該產(chǎn)品的第二版,但卻是實際上初版。這就是Oracle這種“要命”的市場策略,事實上,這種策略有時候也是非常成功的。
1983年3月,RSI發(fā)布了ORACLE第三版。Miner和Scott歷盡艱辛用C語言重新寫就這一版本。(說老實話,太佩服這兩個大牛了,為什么一直沒多少媒體宣傳這兩個人呢,懷疑Miner簡直就是“少林老僧”般的人物。)要知道,C語言當時推出不久,用它來寫ORACLE軟件也是具有一定的風險的,但除此之外,別無他法。很快就證明了這樣做是多么的正確:C編譯器便宜而又有效,還有很好的移植性。從現(xiàn)在起,ORACLE產(chǎn)品有了一個關(guān)鍵的特性:[可移植性]。同樣是1983年,IBM發(fā)布了姍姍來遲的Database 2(DB2),但只可在MVS上使用。不管怎么說,ORACLE已經(jīng)占取了先機。
在開發(fā)第三版還沒有結(jié)束的時候,Scott離開了ORACLE。當時用C語言改寫ORACLE的壓力很大,無休止的軟件調(diào)試終于讓Scott不堪重負,選擇了一走了之。把剩下的重擔交給了Miner一個人。在交易了自己的4%的股票之后,Scott 后來創(chuàng)建了Gupta公司(現(xiàn)更名為Centura Software)和PointBase公司,都是開發(fā)和數(shù)據(jù)庫相關(guān)的產(chǎn)品。多年后有人問到他的4%的ORACLE股票的時候,Scott,這個曾經(jīng)給ORACLE寫出代碼的技術(shù)高手,也只能報以一笑了。如果能堅持下來,那是一筆幾億美金的財富。不過當時的Scott沒有那么多的想法,他只是太累了。
很長一段時間里,公司研發(fā)由Miner獨力承擔。Miner視金錢如無物,為人低調(diào),和Ellison的鋒芒必露形成鮮明的對比。在公司里,大家一致認為他是老好人,他也深受員工愛戴。Ellison是公司的大腦,Miner則當之無愧的成為公司的心臟。他是個沉默的英雄,正如Steve Jobs背后的Steve Wozniak一樣。
1984年10月,ORACLE發(fā)布了第4版產(chǎn)品。產(chǎn)品的穩(wěn)定性總算得到了得到了一定的增強,用Miner的話說,達到了“工業(yè)強度”。
在1985年,ORACLE發(fā)布了5.0版。有用戶說,這個版本算得上是ORACLE數(shù)據(jù)庫的穩(wěn)定版本。這也是首批可以在Client/Server模式下運行的的RDBMS產(chǎn)品,在技術(shù)趨勢上,ORACLE數(shù)據(jù)庫始終沒有落后。
那是在1985年,當時曾經(jīng)的獨立軟件公司Cullinet(主要銷售網(wǎng)狀數(shù)據(jù)庫)已經(jīng)如流星般隕落。ORACLE的主要競爭對手是Ingres數(shù)據(jù)庫。Ingres在加州大學(xué)伯克利分校誕生,主要的設(shè)計者是當時鼎鼎大名的MichaelStonebraker教授??梢哉fIngres數(shù)據(jù)庫軟件是上個世紀80年代技術(shù)上數(shù)據(jù)庫,Ingres市場分額的快速增長已經(jīng)給ORACLE早成了很大的壓力。巧的是,這個時候,IBM公司再一次伸出“上帝之手”。
Ingres使用的是Stonebraker 發(fā)明的QUEL(Query Language))的查詢技術(shù),這和IBM的SQL大不相同。在某些地方QUEL甚至要優(yōu)于SQL。IBM當時擔心Ingres把QUEL變成標準會對自己不利。經(jīng)過一番衡量,決定把自己的SQL提交給數(shù)據(jù)庫標準委員會。而Stonebraker教授可不打算把QUEL提交給數(shù)據(jù)庫標準委員會,學(xué)院派的他認為這麼做實際上是扼殺了創(chuàng)新精神??梢钥闯?,學(xué)院派,大都會把事情搞雜。
1986年3月12日,ORACLE公司以每股15美元公開上市,當日以20.75美元收盤,公司市值2.7億美元。3月13日,微軟以每股21美元的發(fā)行價上市,以28美元收市,公司市值達到7億美元。遠遠超過了ORACLE。成功的光環(huán)的微軟和蓋茨遮蓋住了ORACLE和Ellison的光芒,可能這也是Ellison敵視微軟的開始。
ORACLE第6版于1988年發(fā)布。由于過去的版本在性能上屢受詬病,Miner帶領(lǐng)著工程師對數(shù)據(jù)庫核心進行了重新的改寫。引入了行級鎖(row-level locking)這個重要的特性,也就是說,執(zhí)行寫入的事務(wù)處理只鎖定受影響的行,而不是整個表。這個版本引入了還算不上完善的PL/SQL(Procedural Language extension to SQL)語言。第6版還引入了聯(lián)機熱備份功能,使數(shù)據(jù)庫能夠在使用過程中創(chuàng)建聯(lián)機的備份,這極大地增強了可用性。
在第六版剛發(fā)布之后,很多迫不及待開始使用的用戶就怨聲載道。這是個根本就沒有測試好就進行發(fā)布的產(chǎn)品(也怪Ellison,大話總要說在前頭,只好自嘗苦果)。用戶開始對ORACLE大肆抨擊,ORACLE的一些對手也開始落井下石,針對ORACLE產(chǎn)品的一些弱點進行威脅。
噩夢延續(xù)到ORACLE第七版的推出而結(jié)束。這個公司已經(jīng)空談了好幾年的新版本(一度被譏諷為不過是Ellison的故計重施而已),直到1992年6月才終于閃亮登場,這一次公司吸取了第六版匆忙上市的教訓(xùn),聽取了用戶的多方面的建議,并集中力量對新版本進行了大量而細致的測試。該版本增加了許多新的性能特性:分布式事務(wù)處理功能、增強的管理功能、用于應(yīng)用程序開發(fā)的新工具以及安全性方法。
ORACLE 第七版是ORACLE真正出色的產(chǎn)品,取得了巨大的成功。這個版本的出現(xiàn)真是好時機,當時Sybase公司的數(shù)據(jù)庫已經(jīng)占據(jù)了不少份額,ORACLE借助這一版本的成功,一具擊退了咄咄逼人的Sybase。公司的銷售人員這次算到了給用戶兌現(xiàn)空頭許諾的時候。公司經(jīng)過兩三年的治理,終于擺脫了種種麻煩,重新開始健康發(fā)展,銷售額也從92年的15億美元變?yōu)樗哪旰蟮?2億美元。
1997年6月,ORACLE第八版發(fā)布。ORACLE8支持面向?qū)ο蟮拈_發(fā)及新的多媒體應(yīng)用,這個版本也為支持Internet、網(wǎng)絡(luò)計算等奠定了基礎(chǔ)。同時這一版本開始具有同時處理大量用戶和海量數(shù)據(jù)的特性。
1998年9月,ORACLE公司正式發(fā)布ORACLE 8i。“i”代表Internet,這一版本中添加了大量為支持Internet而設(shè)計的特性。這一版本為數(shù)據(jù)庫用戶提供了全方位的Java支持。ORACLE 8i成為一個完全整合了本地Java運行時環(huán)境的數(shù)據(jù)庫,用Java就可以編寫ORACLE的存儲過程。對,Java,只要是能夠打擊微軟的武器,ORACLE都要派上用場。
在2001年6月的ORACLEOpenWorld大會中,ORACLE發(fā)布了ORACLE 9i。在ORACLE 9i的諸多新特性中,最重要的就是Real Application Clusters(RAC)了。說起ORACLE集群服務(wù)器,早在第五版的時候,ORACLE就開始開發(fā)ORACLE并行服務(wù)器(ORACLE Parallel Server ,OPS),并在以后的版本中逐漸的完善了其功能,不過,嚴格來說,盡管OPS算得上是個集群環(huán)境,但是并沒有體現(xiàn)出集群技術(shù)應(yīng)有的優(yōu)點。
2003年9月8日,舊金山舉辦的ORACLE World大會上,Ellison宣布下一代數(shù)據(jù)庫產(chǎn)品為“ORACLE 10g”。ORACLE應(yīng)用服務(wù)器10g(ORACLEApplication Server 10g)也將作為甲骨文公司下一代應(yīng)用基礎(chǔ)架構(gòu)軟件集成套件。“g”代表“grid ,網(wǎng)格”。這一版的特性就是加入了網(wǎng)格計算的功能。
最近兩年,Oracle先后又收購了People soft(103億$), BEA(80多億$),還有Sibel之類的就不說了。通過收購,實力大增。
2007年11月,Oracle 11g正式發(fā)布,功能上大大加強。11g是甲骨文公司30年來發(fā)布的最重要的數(shù)據(jù)庫版本,根據(jù)用戶的需求實現(xiàn)了信息生命周期管理(InformationLifecycle Management)等多項創(chuàng)新。大幅提高了系統(tǒng)性能安全性,全新的Data Guard可用性,利用全新的高級數(shù)據(jù)壓縮技術(shù)降低了數(shù)據(jù)存儲的支出,明顯縮短了應(yīng)用程序測試環(huán)境部署及分析測試結(jié)果所花費的時間,增加了RFID Tag、DICOM醫(yī)學(xué)圖像、3D空間等重要數(shù)據(jù)類型的支持,加強了對Binary XML的支持和性能優(yōu)化。
從Oracle的發(fā)展來看,它的市場策略直接引導(dǎo)著公司的發(fā)展。與別的公司有很大的不同。
數(shù)據(jù)庫廠商的發(fā)展歷史之DB2
1973年,IBM研究中心啟動System R項目,為DB2的誕生打下良好基礎(chǔ)。System R 是 IBM 研究部門開發(fā)的一種產(chǎn)品,這種原型語言促進了技術(shù)的發(fā)展并最終在1983年將 DB2 帶到了商業(yè)市場。
在這期間,IBM發(fā)表了很多數(shù)據(jù)庫領(lǐng)域的精典論文,前邊E.F.Codd就不說了,1976年, 身在IBM的Gim Gray發(fā)有了他的代表作:共享數(shù)據(jù)庫的一致性和鎖的粒度。他同樣也是數(shù)據(jù)庫領(lǐng)域的圖靈獎獲得之一。后來被微軟挖走(應(yīng)該是在他退休之后),去年他獨自一人出海,失蹤,不知下落如何。此君因為不喜歡Seattle的雨天,使得Bill Gates為拉他入Microsoft在San Francisco為其新建了一座研究院讓他做院長。據(jù)說此君在一次學(xué)術(shù)會議上demo他的新程序,聽眾中有人提出界面可以如何改進,此君竟然在講壇上就打開VC++開始改起代碼來,然后給人看新效果。這樣的大師,太讓人尊敬了。
1981年, E.F.Codd因為發(fā)明關(guān)系數(shù)據(jù)庫模型,獲得ACM圖靈獎,當然他前邊還有一位大師,Charles W.Bachman。
1982年,IBM發(fā)布SQL/DS for VSE and VM,以System R為原型。
1983年,發(fā)布Database2 (DB2) forMVS, 內(nèi)部代號為"Eagle",于是DB2正式誕生。
1986年,System/38 V7發(fā)布,配置查詢優(yōu)化器,能對應(yīng)用的存取計劃進行優(yōu)化。
1987年,DB2完成了到OS/2的擴展,進入微機領(lǐng)域。
1988年,發(fā)布SQL/400,為AS/400服務(wù)器提供SQL支持。到此時為止,感覺IBM的數(shù)據(jù)庫產(chǎn)品的發(fā)展十分凌亂,似乎同時在做多個產(chǎn)品,平臺又不統(tǒng)一。
1992年,IDUG大會在瑞士如開,DB2應(yīng)用開始全球化。DB2 for OS2 V1和DB2 for RS/6000 V1推出,在Intel和Unix平臺上推出DB2產(chǎn)品。
1993年,郭士納進入IBM,大刀改革。
1994年,DB2實現(xiàn)了HP unix和Solaris版本。實際上,還真不知道這兩個平臺上有多少用戶。
也是在1994年,AIX平臺上DB2開始支持對象型數(shù)據(jù)。
1995年,DB2開始支持Windows NT, Unix等多個平臺。(標志性的一年?)
1995年,收購Lotus,暈,現(xiàn)在我們還在用Lotus的郵件系統(tǒng)。不好用,但是不容易中毒。
1996年,DB2正式更名為DB2 通用數(shù)據(jù)庫。
1997年, DB2 UDB forUnix/windows/OS2同時發(fā)布
1998年,DB2 開始支持SCO Unixware
1998年, DB2 UDB5.2出現(xiàn)。(不知道以前的版本是怎么定義的,有些亂。。。)
1999年,DB2支持Linux on intel cpu
2000年,DB2 支持XML擴展
2000年,進一步支持Linux集群
2002年,收購Rational Soft,從此, rose這個大炮工具被IBM弄走了
2002/2003,DB2 V8.1出現(xiàn)
2007年, DB2 V9出現(xiàn),好像是一個混合模式(關(guān)系型、層次型)數(shù)據(jù)庫出現(xiàn),既有關(guān)系模型,又有直接支持XML的層次模型。不知道是否屬于叫好不叫座。
在這期間,忘了是哪一年,印象中,好像是2001/2002年的光景,IBM還收購了Informix,花了1個Billion$,那也是一家曾經(jīng)響當當?shù)臄?shù)據(jù)庫廠商。
數(shù)據(jù)庫廠商的發(fā)展歷史之MySQL
MySQL這個名字,起源不是很明確。一個比較有影響的說法是,基本指南和大量的庫和工具帶有前綴“my”已經(jīng)有10年以上,而且不管怎樣,MySQL AB創(chuàng)始人之一的Monty Widenius的女兒也叫My。這兩個到底是哪一個給出了MySQL這個名字至今依然是個密,包括開發(fā)者在內(nèi)也不知道。
MySQL的海豚標志的名字叫“sakila”,它是由MySQL AB的創(chuàng)始人從用戶在“海豚命名”的競賽中建議的大量的名字表中選出的。獲勝的名字是由來自非洲斯威士蘭的開源軟件開發(fā)者Ambrose Twebaze提供。根據(jù)Ambrose所說,Sakila來自一種叫SiSwati的斯威士蘭方言,也是在Ambrose的家鄉(xiāng)烏干達附近的坦桑尼亞的Arusha的一個小鎮(zhèn)的名字。
MySQL,雖然功能未必很強大,但因為它的開源、廣泛傳播,導(dǎo)致很多人都了解到這個數(shù)據(jù)庫。它的歷史也富有傳奇性。
MySQL的歷史最早可以追溯到1979年,那時Oracle也才小打小鬧,微軟的SQL Server影子都沒有。有一個人叫Monty Widenius, 為一個叫TcX的小公司打工,并用BASIC設(shè)計了一個報表工具,可以在4M主頻和16KB內(nèi)在的計算機上運行。過了不久,又將此工具,使用C語言重寫,移植到Unix平臺,當時,它只是一個很底層的面向報表的存儲引擎。這個工具叫做Unireg。
可是,這個小公司資源有限,Monty天賦極高,面對資源有限的不利條件,他反而更能發(fā)揮潛能,總是力圖寫出代碼。并因此養(yǎng)成了習慣。與Monty同在一起的還有一些別的同事,很少有人能堅持把那些代碼持續(xù)寫到20年后,而Monty卻做到了。
1990年,TcX的customer 中開始有人要求要為它的API提供SQL支持,當時,有人想到了直接使用商用數(shù)據(jù)庫算了,但是Monty覺得商用數(shù)據(jù)庫的速度難令人滿意。于是,他直接借助于mSQL的代碼,將它集成到自己的存儲引擎中。但不巧的是,效果并不太好。于是, Monty雄心大起,決心自己重寫一個SQL支持。
1996年,MySQL 1.0發(fā)布,只面向一小撥人,相當于內(nèi)部發(fā)布。到了96年10月,MySQL 3.11.1發(fā)布了,呵呵,沒有2.x版本。最開始,只提供了Solaris下的二進制版本。一個月后,Linux版本出現(xiàn)了。
緊接下來的兩年里,MySQL依次移植到各個平臺下。它發(fā)布時,采用的許可策略,有些與眾不同:允許免費商用,但是不能將MySQL與自己的產(chǎn)品綁定在一起發(fā)布。如果想一起發(fā)布,就必須使用特殊許可,意味著要花銀子。當然,商業(yè)支持也是需要花銀子的。其它的,隨用戶怎么用都可以。這種特殊許可為MySQL帶來了一些收入,從而為它的持續(xù)發(fā)展打下了良好的基礎(chǔ)。(細想想,PostgreSQL曾經(jīng)有幾年限入低谷,可能與它的完全免費,不受任何限制有關(guān)系)。
MySQL3.22應(yīng)該是一個標志性的版本,提供了基本的SQL支持。
1999-2000年,有一家公司在瑞典成立了,叫MySQL AB(不知道AB是什么意思,待查)。 雇了幾個人,與Sleepycat合作,開發(fā)出了 Berkeley DB引擎, 因為BDB支持事務(wù)處理,所以,MySQL從此開始支持事務(wù)處理了。
2000年4月,MySQL對舊的存儲引擎進行了整理,命名為MyISAM。同時,2001年,Heikiki Tuuri向MySQL提出建議,希望能集成他們的存儲引擎InnoDB,這個引擎同樣支持事務(wù)處理,還支持行級鎖。
如今,遺憾的是,BDB和InnoDB好像都被Oracle收購了,為了消滅競爭對手,哪怕是開源的,都是不擇手段。
MySQL與InnoDB的正式結(jié)合版本是4.0。
到了MySQL5.0,2003年12月,開始有View, 存儲過程之類的東東,當然,其間, bug也挺多。
在2008年1月16號 MySQL被Sun公司收購。
最近,MySQL的創(chuàng)始人Monty Widenius已經(jīng)向Sun提交了辭呈。head都要走了。
據(jù)說,被Sun收購的公司多薄命,不知道MySQL今后前途如何,希望一路走好。相信MySQL的生命力還是很長久的。
派生版本
派生版本有Drizzle,MariaDB,Percona Server及OurDelta等。
數(shù)據(jù)庫廠商的發(fā)展歷史之Sybase
Sybase公司成立于1984年,公司名稱“Sybase”取自“system”和“database”相結(jié)合的含義。Sybase公司的創(chuàng)始人之一Bob Epstein 是Ingres 大學(xué)版(與System/R同時期的關(guān)系數(shù)據(jù)庫模型產(chǎn)品)的主要設(shè)計人員。
Sybase公司的關(guān)系數(shù)據(jù)庫產(chǎn)品是1987年5月推出的Sybase SQLServer1.0。Sybase首先提出Client/Server 數(shù)據(jù)庫體系結(jié)構(gòu)的思想,并率先在SybaseSQLServer 中實現(xiàn)。
提到Ingres數(shù)據(jù)庫,不得不提一下Michael Stonebraker,他是Ingres的創(chuàng)始人。他是加州大學(xué)伯克利分校的教授,著名的數(shù)據(jù)庫學(xué)者,他在1992 年提出對象關(guān)系數(shù)據(jù)庫模型。Stonebraker 教授領(lǐng)導(dǎo)了稱為Postgres 的后Ingres 項目。這個項目的成果是非常巨大的,在現(xiàn)代數(shù)據(jù)庫的許多方面都做出的大量的貢獻。Stonebraker 教授還做出了一件造福全人類的事情,那就是把Postgres 放在了BSD 版權(quán)的保護下。如今Postgres名字已經(jīng)變成了PostgreSQL,功能也是日漸強大,我也非常喜愛這個數(shù)據(jù)庫。你可自由的瀏覽它的代碼庫,可以實時了解一線工程的思路。
話說,87年的時候,Sybase覺得單靠一家力量,難以把SQLServer(那時不叫ASE)做到老大,于是聯(lián)合微軟,共同開發(fā)。至于原始的代碼從何而來,這個應(yīng)該與Ingres有些淵源。后來1994年,兩家公司合作終止。截止此時,應(yīng)該是都擁有一套完全相同的SQLServer代碼。
然后可想而知了,Sybase繼續(xù)開發(fā),將Sybase SQLServer往各個平臺移植,版本也是跳躍式的變化,從4.2,好像一下子就到了11.0。
Sybase SQLServer后來為了與微軟的MS SQL Server相區(qū)分,改名叫:Sybase ASE(Adaptive Server Enterprise),其實,應(yīng)該改名字的是微軟。代碼的最初擁有者是Sybase,結(jié)果得到正式名字的居然是微軟。這筆交易,實在是有些虧。不過,ASE也還好記,把Sybase的前邊三個字母去就是ase了。
ASE如今已經(jīng)發(fā)展到了15.0.2版了。13和14兩個數(shù),對于老美來說,都不是好數(shù),所以直接從12.5.4跳到15.0了。估計Oracle以后也會這樣命名。
現(xiàn)在的Sybase,產(chǎn)品策略已經(jīng)有了調(diào)整,在移動數(shù)據(jù)庫市場上,它的ASA (SQL Anywhere)占據(jù)了絕對的老大地位,70%以上的市場。同時,Sybase ASE仍然保持著大型數(shù)據(jù)庫廠商的地位。在電信、交通、市政、銀行等領(lǐng)域,擁有強大的市場。它的產(chǎn)品全是多平臺支持。
Sybase ASE又分出了Replication Server(復(fù)制服務(wù)器), Sybase IQ等重量級產(chǎn)品,相當于對大型數(shù)據(jù)庫市場又進行了細分。
算起來,MS SQL Server應(yīng)該算是Sybase ASE的同胞兄弟了,不過,ASE血統(tǒng)更純正。無論誰更成功,都證明當初的那個SQL Server生命力還在持續(xù),它仍擁有強大的生命力。