淺析數據庫的歷史,你了解了嗎?
1、1960-IDS
讓我們把時鐘撥回到上世紀 60 年代,美國通用電氣公司(General Electric Company,以下簡稱 GE)創造了早期的基于網狀模型的數據庫系統 Integrated Data Store,簡稱 IDS。
IDS 性能較好,在當時也被用于工業領域,在 1969 年,GE 將自己的計算機業務賣給了 Honeywell 這家公司。
IDS 的主要開發者是一個叫 Bachman 的人,因為其在數據庫方向的發明,他在 1973 年獲得了圖靈獎。
當時的主要計算機開發語言叫做 COBOL(Common Business Oriented Language),于是 Bachman 和其他人參與制定了計算機訪問數據系統的標準,叫做 CODASYL。
這個標準主要制定了網狀模型,以及 tuple-at-a-time 的查詢方式。
網狀模型(Network Model)使用有向圖來表示實體與實體之間的關系。
這種結構邏輯復雜,不利于查詢數據,后來逐漸被關系型數據模型取代。
2、1960-IBM IMS
同樣是在 60 年代,藍色巨人 IBM 研發了基于層級結構模型的數據庫系統 Information Management System,簡稱 IMS。
IMS 最初的研發目的是為了來自阿波羅登月計劃的訂單。
層次模型(Hierarchical Model)使用樹形結構來表示實體之間的關系。
這種結構比較符合人的直觀思維,從上至下,每個節點只能有向下的子節點。
3、1970-Relational Model
時間來到了 1970 年代,在層次和網狀模型的標準下,IBM 的工作人員會因為數據庫的結構表更而不斷地重寫代碼,這非常的浪費人力。
一個名叫 Ted Codd,在 IBM Research 工作的人,提出了幾個規范,來避免這種情況。
這幾個規范分別是:
- 存儲數據在簡單的數據結構中
- 能夠通過高級語言來訪問數據
- 上層不用關心數據物理存儲的細節
為了使數據庫脫離應用,成為一個更加獨立的系統,避免數據庫的變更影響到上層應用,Codd 提出了關系型模型。
關系型模型(Relational Model)是沿用至今的數據庫模型,已經事實上基本成為了行業標準。
關系模型基于二維表,每個實體都被映射為一張表,每個實體之間可以通過表中的記錄進行關聯。
基于關系型模型,在 1970 年代誕生了三個主要的數據庫系統,分別是由三位數據庫界的遠古大神開發的。
System R—來自 IBM Research 部門,主要開發者 Jim GrayIngres—這是 PostgreSQL 的前身,伯克利大學,主要開發者 StonebrakerOracle—拉里·埃里森(Larry Ellison),Oracle 公司的總裁
4、1980-Relational Model
到了 80 年代,數據庫仍然是關系型模型及相關數據庫蓬勃發展的階段。
IBM 在 1983 年發表了至今仍廣泛應用的數據庫系統 DB2。由于 IBM 在 System R 和 DB2 均使用了 SQL,于是他們將 SQL 制定成為了訪問數據庫的行業標準。
Oracle 和 Ingres 均完成了商業化,并且這時期還有很多其他的商業化數據庫,例如 Informix、Sybase、Teradata 等,但是數據庫市場主要被 Oracle 占據。
Stonebraker 回到了伯克利大學,并且創建了一個新的數據庫系統 Postgres,其含義是 Ingres 之后(post)的系統。
5、1990-Boring Days
90 年代,在數據庫設計方面并沒有太大的變化,這段時期可能看起來比較的無聊(Boring),但是仍然有一些值得關注的事情。
微軟進入了數據庫市場,他們 fork 了 Sybase 系統,并且創造了自己的數據庫系統 SQL Server。
MySQL 出現,主要由 Michael Widenius 開發,MySQL 這個名字主要源于他女兒(My)。
Postgres 系統支持了標準 SQL,于是它的名字也演化成了現在為人熟知的 PostgreSQL。
SQLite 也在在這個時期開始開發,并成為如今流行的嵌入式數據庫系統。
6、2000-Data Warehouse
在 2000 年代,針對特殊的應用場景,OLAP 類型的數據庫開始出現了。
這種類型的數據庫主要用于構建數據分析類型的數據倉庫(Warehouse),并且大多是分布式部署,以列存為主。
這時期主要的產品有 Greenplum、Vertica、MonetDB 等。
7、2000-NoSQL
同樣是在 2000 年代,人們發現一些場景下,數據庫的可擴展性、高可用特性更加的重要,而并不怎么依賴于關系型數據庫(不需要事務,不需要標準 SQL),于是誕生了很多 NoSQL 數據庫。
他們的主要特征有:
- 非關系型的數據模型,例如文檔型、Key/Value,Graph 等
- 不提供 ACID 的事務保證
- 自定義的 API,沒有標準的 SQL
- 通常是開源的
這時期 NoSQL 數據庫的主要產品有 HBase、DynamoDB、MongoDB、Redis 等。
8、2010-NewSQL
到了 2010 年代,為了兼容 NoSQL 的高可用、高性能,同時又不丟棄傳統數據庫的 ACID 事務等特性,誕生了一批被稱為 NewSQL 的數據庫系統。
它們的特征主要是:
- 基于關系模型,支持標準 SQL
- 分布式
這類數據庫的鼻祖應該是 Google Spanner,隨后基于此,誕生了一些著名的分布式 NewSQL 數據庫,例如 CockroachDB、YugaByte、TiDB。
9、2010-HTAP System
還是在 2010 年代,為了兼容 OLTP 和 OLAP 類型的數據庫系統,出現了一種 HTAP(Hybrid Transactional-Analytical Processing) 類型的數據庫。
這類數據庫的特征是,既能兼容 OLTP 數據庫的高性能,執行 SQL 查詢,并且能夠像數據倉庫(Data Warehouse)那樣進行大規模的數據分析。
其主要數據庫有 HyPer、MemSQL、SAP HANA 等。
10、2010-Cloud System
在 2010 年代,還開始出現了一些運行在云上的數據庫系統,這類數據庫需要從一開始就適配云環境,提供類似 Database-as-a-service(DBaaS)的服務。
最著名的產品例如 snowflake、Amazon REDSHIFT 等。
11、2010-Graph&Timeseries Database
除了傳統的關系型數據庫,前面已經提到了一些 NoSQL 數據庫,在大約 2010 年代,誕生了一些其他類型的 NoSQL 數據庫。
例如 Graph Database(圖數據庫)、Timeseries Database(時序數據庫)等。
圖數據庫比較知名的產品有 neo4j、TigerGraph、Nebula Graph 等。
時序數據庫比價知名的產品有 InfluxDB、Timescale、TDengine 等。
12、Conclusion
隨著硬件技術、應用場景等不斷的變化,最近的這些年,在不同的領域,不同的應用方向,誕生了很多不同類型的數據庫。例如多模數據庫(Multi-Model)、區塊鏈數據庫(Blockchain)、流式處理數據庫(Streaming)等等。
數據庫行業呈現出了百花齊放的格局。這也造就了這些年資本市場對于數據庫行業的垂青,數據庫創業也火的一塌糊涂。
未來數據庫會朝著什么樣的方向發展,會呈現出什么樣的格局呢,讓我們拭目以待吧。