資料庫發展史(上)

Gauss松鼠會發表於2021-04-12

資料庫技術是資訊科技領域的核心技術之一,幾乎所有的資訊系統都需要使用資料庫系統來組織、儲存、操縱和管理業務資料。資料庫領域也是現代計算機學科的重要分支和研究方向。目前,在資料庫領域已經產生了四點陣圖靈獎得主,他們在資料庫理論和實踐領域均有突出貢獻。

在資料庫誕生之前,資料儲存和資料管理已經存在了相當長的時間。當時資料管理主要是透過表格、卡片等方式進行,效率低下,需要大量人員參與,極易出錯。

20世紀50年代,隨著計算機的誕生和成熟,計算機開始運用於資料管理,與此同時,資料管理技術也迅速發展。傳統的檔案系統難以應對資料增長的挑戰,也無法滿足多使用者共享資料和快速檢索資料的需求。

在這樣的背景下,20世紀60年代,資料庫應運而生。在資料庫技術領域,資料庫所使用的典型資料模型主要有層次資料模型(Hierarchical Data Model)、網狀資料模型(Network Data Model)和關係資料模型(Relational Data Model)。這三種模型是按照它們的資料結構來命名的,它們之間的根本區別就在於資料之間聯絡的表達方式不同。

上圖是分別使用三種資料模型來表示學校教育系統的樣例。其中,層次資料模型是以“樹結構”表示資料記錄之間的聯絡; 網狀資料模型是以“圖結構”表示資料記錄之間的聯絡; 關係資料模型則是以“二維表”(或稱為關係)的方式表示資料記錄之間的聯絡。因為資料模型貫穿了整個資料庫技術的發展歷史,接下來將以資料模型為依據,介紹資料庫的發展過程。

網狀資料庫和層次資料庫

網狀資料庫是資料庫歷史上的第一代產品,它成功地將資料從應用程式中獨立出來並進行集中管理。網狀資料庫基於網狀資料模型建立資料之間的聯絡,能反映現實世界中資訊的關聯,是許多空間物件的自然表達形式。

1964年,世界上第一個資料庫系統———IDS(Integrated Data Storage,整合資料儲存)誕生於通用電氣公司。IDS是網狀資料庫,奠定了資料庫發展的基礎,在當時得到了廣泛的應用。5 年後,美國資料庫系統語言協會(Conference on Data SystemsLanguages,CODASYL)下屬的資料庫任務組(Database Task Group,DBTG)釋出了一份報告,闡述了網狀資料庫系統的許多概念、方法和技術,成了網狀資料庫的代表。

在20世紀70年代與80年代初,網狀資料庫系統十分流行,在資料庫系統產品中佔據主導地位。例如,配備在富士通公司M 系列機上的AIM(Advanced Information Manager)系統和配備在UNIVAC(UNIVersal Automatic Computer)上的DMS1100 系統都是網狀資料庫系統。

緊隨網狀資料庫後出現的是層次資料庫,其資料模型是層次資料模型,即使用樹結構來描述實體及其之間關係的資料模型。在這種結構中,每一個記錄型別都用節點表示,記錄型別之間的聯絡則用節點之間的有向線段來表示。每一個子節點只能有一個父節點,但是每一個父節點可以有多個子節點。這種結構決定了採用層次資料模型作為資料組織方式的層次資料庫系統只能處理一對多的實體聯絡。

1968年,世界上第一個層次資料庫系統———IMS(Information Management System,資訊管理系統)誕生於IBM 公司,這也是世界上第一個大型商用的資料庫系統。

如上所述,網狀資料庫系統和層次資料庫系統在資料庫發展的早期比較流行。網狀資料庫模型對於層次和非層次結構的事物都能比較自然地模擬,相比層次資料庫應用更廣泛,在當時佔據著主要地位。

1973年,Charles W.Bachman獲得圖靈獎,以表彰他在資料庫領域,尤其是在網狀資料庫管理系統方面的傑出貢獻。但是,網狀資料庫也存在一些問題: 首先,使用者在複雜的網狀結構中進行查詢和定位操作比較困難;其次,網狀資料的操作命令具有過程式的性質; 最後,網狀資料庫對於層次結構的表達並不直接。

關聯式資料庫

雖然對於資料的集中儲存、管理和共享的問題,網狀資料庫和層次資料庫已經給出較好的解答,但是在資料獨立性和抽象級別上仍有較大的欠缺。為了解決這些問題,關聯式資料庫應運而生。

1970年,IBM 的研究員Edgar F.Codd發表了A Relational Model of Data forLarge Shared Data Banks 論文,提出了關係資料模型的概念,奠定了關係資料模型的理論基礎,這是資料庫發展史上具有劃時代意義的里程碑。

隨後,Edgar F.Codd又陸續發表了多篇文章,論述了正規化理論,用數學理論奠定了關聯式資料庫的基礎,為關聯式資料庫建立了一個資料模型———關係資料模型。關係資料模型的概念非常簡單,結構特別靈活,能滿足所有布林邏輯運算和集合運算規則形成的查詢要求; 可以搜尋、比較和組合不同型別的資料; 使用關係資料模型進行資料增加和刪除操作非常方便,關係資料模型具有較高的資料獨立性和更好的安全保密性。然而,當資料庫比較大的時候,查詢滿足特定關係的資料比較耗時,同時也難以描述空間資料關係。

在關係資料模型的基礎上,IBM 公司從1970年就開始了關聯式資料庫專案SystemR的研究和開發。然而,由於IBM 已有層次資料庫產品IMS,System R產品化程式十分緩慢,直到1980年才完成產品化,作為一個產品正式推向市場。後來,IBM 公司在System R的基礎上釋出了DB2資料庫系統。IBM 公司研發程式緩慢,沒能在產品上搶佔先機。

1973年,加州大學伯克利分校的Michael Stonebraker和Eugene Wong利用IBM 公司已釋出的資訊,以及關係模型的理論,開始開發自己的關聯式資料庫系統Ingres。1976年,霍尼韋爾公司(Honeywell)開發了世界上第一個商用關聯式資料庫系統———Multics Relational Data Store。

1974年IBM 的Ray Boyce和Don Chamberlin將Edgar F.Codd論述的關聯式資料庫的12條準則的數學定義以簡單的關鍵字語法表現出來,里程碑式地提出了SQL(Structured Query Language,結構化查詢語言)。SQL是一種操作關聯式資料庫的標準語言,它包括了對資料進行定義、操縱、查詢和控制功能的型別分句。使用者只需要在高層資料結構上進行資料處理,無須使用者指定資料的存取方法,也不需要使用者瞭解具體的資料儲存方式,就可以使用SQL對不同關聯式資料庫進行資料操作。SQL有著一體化、使用方式靈活、非過程化和簡單易用的特點,幾乎所有的關係RDBMS(Database Management System,資料庫管理系統)產品都支援SQL,例如Oracle、DB2、Sybase、SQL Server、MS Access、MySQL、PostgreSQL等。

1978年,Larry Ellison在為美國中央情報局做一個資料專案的時候,敏銳地發現關聯式資料庫的商機。幾個月後,Oracle 1.0誕生了,它除了完成簡單關係查詢之外,不能做任何事情。但是經過短短十幾年,Oracle公司的資料庫產品不斷髮展成熟,成為了資料庫行業的巨頭。至此,關係資料模型的理論才透過SQL在商業資料庫Oracle中使用。

雖然加州大學伯克利分校的Ingres專案結束於20世紀80年代早期,但在Ingres的基礎上產生了很多商業資料庫軟體,包括Sybase、Microsoft SQL Server以及Informix等其他眾多的資料庫系統。在20世紀80年代中期,加州大學伯克利分校又啟動了Ingres的後繼專案Postgres,該專案產出了很有影響力的PostgreSQL資料庫系統。Ingres作為比較早的資料庫系統,對關聯式資料庫的發展產生了重要影響,是資料庫發展史上最有影響力的專案之一。

關聯式資料庫系統以關係代數為堅實的理論基礎,經過幾十年的發展和實際應用,技術越來越成熟和完善,直到今天,關聯式資料庫仍然在資料庫領域佔據著最重要的地位,應用範圍非常廣泛。由於Edgar F.Codd在關聯式資料庫理論和實現方面的傑出貢獻,他於1981年被授予圖靈獎。為了表彰Michael Stonebraker在資料庫系統原型和初步商業化方面的巨大貢獻,2014 年Michael Stonebraker被授予圖靈獎。

雖然關聯式資料庫系統的技術很成熟,但隨著市場和資訊科技的發展,其侷限性也逐漸暴露出來,即它能很好地處理所謂的“表格型資料”,卻無法處理當前出現的越來越多的複雜型別資料(如文字、影像、影片等)。

分散式資料庫

在資料庫發展早期階段,使用單機資料庫就能滿足資料儲存和管理的規模,但是隨著網際網路的不斷普及,特別是移動網際網路的興起,資料規模爆炸式增長,單機資料庫越來越難以滿足使用者需求。解決這種問題的一個直觀方法就是增加機器的數量,把資料庫同時部署在多臺機器上,分散式資料庫就這樣應運而生了。

20世紀70年代中期分散式資料庫的研究就已經開始了,這個時期也出現了一些分散式資料庫系統。例如,1979 年,美國計算機公司(Computer Corporation of America,CCA)在DEC(Digital Equipment Corporation)計算機上實現了世界上第一個分散式資料庫系統SDD-1。隨後,在不到十年的時間內,分散式資料庫的發展十分迅猛。例如,IBM 公司在System R的基礎上研製了分散式資料庫R* ,加州大學伯克利分校開發了分散式Ingres等。

1987年,C.J.Date提出了完全的、真正的分散式資料庫系統應遵循的原則,該原則被作為分散式資料庫系統的理想目標。20世紀90年代以來,分散式資料庫系統進入商業化應用階段,傳統的關聯式資料庫產品均發展成以計算機網路及多工作業系統為核心的分散式資料庫產品。

2005年左右,研究人員對分散式資料庫的探索,推動了NoSQL資料庫的發展,這些資料庫解決的首要問題是單機上無法儲存全部資料,其中以HBase、Cassandra、MongoDB為代表。2012—2013年,業界在谷歌(Google)發表的Spanner和F1系統的論文中看到了關係模型和NoSQL的擴充套件性在一個大規模生產系統上融合的可能性,這些探索極大地推動了NewSQL資料庫的發展。

進入大資料和移動互聯時代後,因為資料的特性和應用場景的變化,註定著不論是傳統的關聯式資料庫,還是新型的NoSQL和NewSQL資料庫都會向著分散式的方向發展,分散式資料庫也成了資料庫領域的主流方向之一。但是分散式資料庫也存在一些問題。例如,眾多節點之間通訊會花費大量時間; 資料的安全性和保密性在眾多節點之間會受到威脅; 在分散式系統複雜的存取結構中,原本在集中式系統中有效存取資料的技術可能不再適用; 分散式的資料劃分、負載均衡、分散式事務處理和分散式執行技術缺乏新的突破。

雲資料庫

雲端計算(Cloud Computing)的迅猛發展使得資料庫部署和虛擬化在“雲端”成為可能。雲資料庫即是資料庫部署和虛擬化在雲端計算環境下,透過計算機網路提供資料管理服務的資料庫。因為雲資料庫可以共享基礎架構,極大地增強了資料庫的儲存能力,消除了人員、硬體、軟體的重複配置。

雲資料庫將傳統的資料庫系統配置在“雲上”,有專門的雲服務提供商進行這些“雲上”資料庫系統的管理和部署工作,使用者只需要透過付費的方式就能獲取資料庫服務。不同於傳統資料庫,雲資料庫透過計算儲存分離、儲存線上擴容、計算彈性伸縮來提升資料庫的可用性和可靠性。代表性的雲資料庫是亞馬遜的Aurora,它首先提出了日誌即是資料庫的理念,減少了網路消耗,提升了系統的可用性。

雲資料庫也能分成關聯式資料庫和非關聯式資料庫。典型的基於關係資料模型的雲資料庫就有亞馬遜的Aurora、微軟的SQL Azure雲資料庫。常見的基於非關係資料模型的有亞馬遜的DynamoDB,該資料庫採用鍵值儲存。

2019年6月,Gartner釋出The Future of the Database Management System(DBMS)Market Is Cloud 報告,明確提出傳統的部署資料庫的方式已經過時,雲是未來,所有組織,無論大小,都將越來越多地使用雲資料庫。但是,雲資料庫中存在的問題也不可忽略,雲端計算中最值得關注的是安全問題,雲端計算對資料安全帶來了極大威脅,資料極易洩露,存在意外丟失的風險。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997967/viewspace-2767585/,如需轉載,請註明出處,否則將追究法律責任。

相關文章