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