關系這個詞無論是對數據庫圈子裡的人,還是對我們中國人,都有特殊的意思。我記得本科剛上數據庫的時候,老師特地解釋說我們講的是關系數據庫,底下很多人一臉懵逼,不知道此關系和彼關系到底是什麼關系。
講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式的純潔性,對于商業化的關系數據庫到底有什麼意義。
無論如何,祖師爺賞飯吃,對于在關系代數熏陶下長大的我,一定是旗幟鮮明的高喊關系數據庫永垂不朽,關系代數永垂不朽的。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!