關係這個詞無論是對資料庫圈子裡的人,還是對我們中國人,都有特殊的意思。我記得本科剛上資料庫的時候,老師特地解釋說我們講的是關係資料庫,底下很多人一臉懵逼,不知道此關係和彼關係到底是什麼關係。

講Oracle的成長發展史,就離不開講關係資料庫的成長發展史。很湊巧,今年是2019年,也是關係資料庫誕生的50週年。關係資料庫誕生於1970年。所以今天我們先回到50年前,那個時候Larry Elison才20多歲,後世靠資料庫稱霸全球的Oracle帝國還未誕生。

1970年,地球上最牛逼的計算機公司叫IBM:International Business Machine。那個時候的IBM不是上世紀末的I Blame Microsoft,更不是現在的藍色小藥丸(要完),那是切切實實的藍色巨人。IBM稱霸的年代裡,不僅僅人才鼎盛,而且抖一抖整個計算機界都要地震一圈。這種牛逼程度,後世微軟谷歌亞馬遜鼎盛時期,是無法比擬的。

1970年,在加州聖何塞矽谷實驗室裏工作的Edgar Frank Codd公開發表了一篇論文:A Relational Model of Data for Large Shared Data Banks。翻譯成中文就是一個為大容量共享數據銀行設計的數據的關係模型。

這篇論文是基於1969年他在IBM的內部工作報告的基礎上修改的。所以關係模型到底誕生於哪一年,是一個有爭論的事情。很多人通常認為1970年是它誕生的時候。

但是資料庫圈子裡的老頭子們,則把1969年作為關係模型的誕生時間。這就是為什麼資料庫頂級會議SIGMOD每逢9的時候,都要紀念一下關係模型的誕生。上一次是2009年在美國羅德島的SIGMOD,我湊巧在場。

如果說計算機的祖師爺是圖靈

和馮諾依曼,我們每個程序員都需要拜一拜的話。那麼1970年的時候,這個在IBM加州聖何塞矽谷實驗室裏工作的數學家兼計算機科學家 Edgar Frank Codd,就是我這樣的做資料庫產業的祖師爺了。

每個做資料庫的人,如果沒有拜過這個祖師爺的話,多少顯得有點不尊敬。當然我相信很多人沒拜過這個祖師爺。特別是國內改開源資料庫代碼出身的那批程序員,可能沒有我這種國外讀了一個資料庫PhD這樣的人的那種宗教一般的信仰。無論如何,我們需要給大家科普一下關係資料庫教的祖師爺的樣子:

Edgar Frank Codd,英格蘭人,早年學習數學和化學。二戰時候是飛行員。二戰後來到美國給IBM服務。後來因為美國麥卡錫風潮輾轉去了加拿大。之後又回美國IBM工作,順便去密西根大學拿了一個PhD。Edgar Codd的PhD做的是馮諾依曼架構計算模型的擴展,非常的理論。

1970年他發表了這篇論文,提出了數據的關係模型,也就是著名的關係代數。從此以後,他就開啟了關係資料庫長達50年至今屹立不倒的整個產業。他1981年獲得計算機界最高獎圖靈獎,2003年年去世。2004年為了紀念祖師爺,SIGMOD把SIGMOD的最高獎改名為SIGMOD Edgar F. Codd Innovations Award。

資料庫的關係模型,也就是關係代數,是本科資料庫教材裏必然要講的東西。SELECT, PROJECT, JOIN這些基本操作,每個從事計算機工作的人多少都耳熟能詳。作為傳記類的文章,我也就不一一展開介紹了。

Edgar Codd最初提出關係模型的時候,他以為好日子很快就要到來了。但是IBM並不是很願意去實現這個模型。一直到類似Oracle這樣的公司都紛紛上戰場了,IBM才被迫進入戰場。

IBM不願意做的原因也很簡單。資料庫既然有關係模型,在關係模型之前,也會有其他的模型。1966年IBM就開啟了一個資料庫項目:IBM Information Management System。看得出來當時的人們都很淳樸,不知道怎麼取名字。

這個簡稱為IMS的系統1968年發行了第一個版本。大企業蜂擁而至。賣的不是一般的好。而且奇蹟一般的,到今天還有很多的客戶跑在IMS上,這個古董堪稱生命力頑強。

IMS用的是一個層次模型。和關係模型裡面完全攤平的表結構不一樣,層次模型裡面的數據有層次的概念。某種程度上來說,你可以理解為比較像類似今天MongoDB這樣的文檔資料庫,或者某種形態的圖資料庫。

事實上即使到了關係資料庫已經佔據統治地位的今天,到底資料庫的關係模型好,還是層次模型好,一直都是一個有爭議的問題。層次模型的資料庫也以半結構化數據的形式某種程度的在復活。如果你要問我的話,我也只能說各有千秋。

但是關係資料庫兩個明顯的優點:易於讓普通人理解,相對容易實現。所以關係資料庫1970年出來以後不久,這架馬車就開起來了,再也回不了頭了。即使IBM自己磨磨蹭蹭不想上車,也無濟於事。

Edgar Codd一生致力於維護關係資料庫的純潔性,為此還提出了關係資料庫必須具備的12條這樣的規則,由此還和IBM產生了衝突。但是誰也說不清楚,這種Edgar Codd式的純潔性,對於商業化的關係資料庫到底有什麼意義。

無論如何,祖師爺賞飯喫,對於在關係代數薰陶下長大的我,一定是旗幟鮮明的高喊關係資料庫永垂不朽,關係代數永垂不朽的。


推薦閱讀:
相關文章