首頁>技術>

1974年,圖靈獎獲得者查爾斯·巴赫曼參加一次資料庫會議,遇到了埃德加·科德。

科德還沒有圖靈獎加身,但其關係資料庫卻如同一輪紅日從東方升起,圖靈獎是早晚的事兒。

一位是網狀資料庫的領袖,另外一位是關係資料庫的旗手, 兩位大宗師展開了一場火星撞地球般的論戰。

對於現在的程式設計師來說,MySQL,Oracle等關係資料庫是司空見慣的事情。

在資料庫的課本上,幾乎通篇介紹關係資料庫, 層次資料庫和網狀資料庫僅僅是作為資料庫歷史的一個小小的點綴。

但是在70年代,新生的關係資料庫卻飽受質疑。

因為當時大家都認為,程式設計師應該是資料結構的導航者, 程式設計師能在網狀資料庫中記住每條記錄和其他記錄之間的關係,然後透過“指標”在各條記錄之間導航訪問。

科德的想法完全不同:程式設計師不應該接觸底層的物理結構

應該有個更高層的、宣告式的語言來訪問資料,完全和資料庫的底層資料儲存方式隔離。

用宣告式的語言來描述查詢,那資料庫能不能“聰明地”把它轉化成底層的物理查詢呢?

要知道,高階語言(如Fortran)的編譯器,可是費了很大的勁才被開發出來。

1972年,IBM招兵買馬,決定攻下這座山頭。

IBM以科德所在的加州聖何塞研究院為中心,開發一套關係資料庫的原型產品。

加入這個原型專案的有兩個年輕的博士生,他們兩個一起將會做出一個名垂青史的偉大貢獻。

張伯倫和博伊斯都非常認可科德的關係模型。

覺得這個想法既簡單又優美,只有一個缺點:太數學化了!

基於關係模型,科德提出的查詢方案更加讓人生畏。

張伯倫和博伊斯決定把數學部分給隱藏起來。

他們把關係稱為表,然後把複雜的數學符號替換成簡單的英語SELECT FROM WHERE, 這樣普通人都能理解。

最終,晦澀的關係代數和關係演算變成了非專業人士都能理解的英語。

他倆把這門語言叫做 SEQUEL:Structured English Query Language ,既結構化的英語查詢語言。

後來,由於SEQUEL已經是一家英國公司的商標,兩人靈機一動,改名為更簡單,更容易記憶的SQL

在當時,IBM還沒有把SEQUL給產品化的想法,於是允許張伯倫和博伊斯把論文在一個技術會議上發表。

他們倆透過擲硬幣的方式來確定誰去宣讀論文,最後博伊斯贏了。

但不幸的是,會議之後僅僅一個月, 博伊斯便因為腦瘤去世,年僅27歲。

博伊斯的貢獻還不僅僅是SQL,他和科德合作,建立了一個數據庫課本上必講的概念:BCNF正規化

痛失摯友的張伯倫繼續前行,完成博伊斯的遺志。

他被任命為System R的技術經理,在System R中實現SQL, 同時用來證明關係資料庫的能力:能不能勝任商業的事務處理。

於此同時,為了同一個目的, UC Berkeley也在開發一個叫做Ingres的關係資料庫, 不過他們提出了一套自己的查詢語言:QUEL

到了80年代, 計算機的價格持續下降,終於到了一個臨界點:大量的公司都可以購買計算機和軟體,把他們的紙質表格放到計算機中儲存。

對資料庫的需求開始激增, 由於“表”非常容易理解,開發基於關係資料庫的程式變得簡單,System R 和 Ingres 都獲得了成功, 但是SQL和QUEL到底誰能一統江湖呢?

這時候,在科德所在的城市聖何塞,一個叫Larry的年輕人改變了天平的平衡。

Larry 立刻和他兩個朋友一起成立了一個小公司,開發基於VAX小型機的關係資料庫。

深受張伯倫和博伊斯論文影響的他自然選擇了SQL。

1979年,Oracle正式問世,Larry憑藉“關係”,成功地把資料庫賣給了多個美國政府部門。

Oracle 在美國政府中的應用非常成功,以至於美國政府釋出了一個聯邦資訊處理標準,指定在聯邦資料庫中要使用SQL,而不是別的查詢語言!

你絕對想不到吧,現在惡名累累的Oracle居然對SQL的普及做過重大的貢獻。

很快,SQL被ANSI, ISO等重磅機構採納為正式標準。

得到官方認證的SQL擊敗了QUEL,成為了最終的勝利者。

到了90年代,連Ingres自己也放棄了QUEL ,開始擁抱SQL。

關係資料和SQL在八九十年代橫掃市場,佔據了主流。

科德於1983年獲得圖靈獎。張伯倫於1988年獲得ACM 軟體系統獎。

90年代後期,一個新的資料格式出現了:XML

XML非常火熱,大家恨不得什麼都要和XML扯上關係。

這種資料格式和關係資料庫大相徑庭,它也面對這樣一個問題,如何從中進行查詢。

張伯倫發揮自己的專長,為它定義了一套新的查詢語言 XQuery

但是時間證明,XML並沒有成為廣泛使用的資料儲存格式, 所以XQuery也就沒有像SQL那樣被廣泛使用。

SQL經過多年的發展,產生了廣泛的影響力,成功地佔據了廣大程式設計師的心智。

很多產品為了降低學習成本,雖然底層不是關係資料庫,也努力向SQL靠近,尤其是SELECT、FROM 、 WHERE、Order By、Group等核心概念。

SQL成了資料查詢的王者。

直到有一天,有個叫NoSQL的傢伙帶著一幫小弟出現了。

NoSQL將會在下週和朋友們見面,敬請期待!

20
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 微服務進階:設計層面詳解Eureka配置部分原始碼