我們上一章講到,近幾年,新的數據庫層出不窮,在性能和速度上都有優異的表現。但除掉具體業務場景的和架構方面的一些設計,例如具體不同業務場景的TPS和QPS。但一些最簡單的指標,例如IOPS,與MySQL做性能對比測試,還是難以超越。數據庫確實不像其他成熟的技術領域,能一兩種方案包打天下。比如Java開發發展到今天,基本上就被Spring統治了。而MySQL、Redis、HBase、Hive、MongoDB、RocksDB、CockroachDB等從誕生到發展於今天,並非誰取代誰的關係,而更傾向於每一種都有其擅長領域和適用場景,同時也有其突出短板。講到這裡,我們不得不花點時間回顧一下數據庫的歷史,這麼多的數據庫,數據庫是怎麼產生的。
數據庫演進
眾所周知,計算機的發明是為了做科學計算的,而科學計算需要大量的數據輸入和輸出。早期,可以使用打孔機控制燈泡的亮滅表示數據狀態,用這些狀態輸入,輸出數據。
1940年,數據可以存儲在磁帶上,順序的讀取寫入磁帶。1956年IBM發明了磁帶驅動器這個革命性產品,支持隨機訪問。隨著信息化時代的到來,有了硬件存儲技術的發展,有大量的數據需要存儲和管理。從1940年到2020年,經歷了5個時期的發展:
(一)從0到1,數據庫前期
1940至1980年這40年,是第一個時期,這個階段屬於數據庫的前期階段,大概分成四個階段:
在這個時期,雖然網狀數據庫和層次數據庫已經很好的解決了數據的集中和共享的問題,但是在數據獨立性和抽象級別上仍有很大缺陷。用戶在對這兩種數據庫進行存取時,仍然需要明確數據的結構,指出存取路徑,而關係數據庫就可以較好的解決這些問題。
(二)關係型數據庫開創新紀元
從1980年數據庫進入了一個新的40年發展,在40年的數據庫發展的第一個10年,是緊接前段敘述,從0到1的關係型數據庫時期。
1981年到1990年屬於商業關係型數據庫起步階段,關係型數據庫模型是把複雜的數據結構歸結為簡單的二元關係(即二維表格形式)。例如在新員工入職的時候公司都會給你一個編號,這個編號和該員工是一一對應的,這就是一個二元關係,在關係數據庫中,對數據的操作幾乎全部建立在一個或多個關係表格上,通過對這些關聯的表格分類,合併,連接或者選取等運算實現數據的管理(結構化查詢語言,sql語句來對數據進行處理)。
這個時期,Oracle、IBM DB2、Sybase以及SQL Server和Informix等開始逐步嶄露頭角。
(三)互聯網與開源世界崛起
1990年至2000年,開源數據庫開始展露頭角,出現了PostgreSQL和MySQL等。與此同時,出現了一些分析型數據庫,因為之前出現的都是OLTP數據庫。隨著大數據的出現,需要對數據進行分析,為了避免讀寫衝突,就需要建立專門的分析型數據庫系統,因此出現了OLAP。例如:Teradata、Sybase IQ、Greenplum等就快速成長起來。
(四)分佈式劃時代的到來
2000年到2010年期間,以谷歌為代表的互聯網公司逐漸推出了面向BigData的數據庫計算框架及存儲系統也就是所謂的谷歌GFS(Google File System)、Google Bigtable、Google MapReduce ——“三大技術”。Google File System解決了分佈式文件系統問題,Google Bigtable解決了分佈式KV(Key-Value)存儲的問題,Google MapReduce解決了在分佈式文件系統和分佈式KV存儲上面如何做分佈式計算和分析的問題。
之所以產生了這“三大技術”,是因為數據強一致性對系統的水平拓展以及海量數據爆發式增長的分析能力出現了斷層。因此就需要解決這個問題,把這種數據的強一致性需求弱化,換來能夠使用分佈式的集群做水平拓展處理。
谷歌“三大技術”在業界誕生以後,很快的衍生了一個新的領域叫NoSQL(Not Only SQL),就是針對非結構化、半結構化的海量數據處理系統。現在也有很多很好的商業公司基於NoSQL發展,比如說文檔數據(MongoDB)、緩存(Redis)等大家平常應用開發都會用到的NoSQL系統。
(五)New的10年,New的時代
而在2010年之後,到今年——2020年的這個新的10年,AWS Aurora、Redshift、Azure SQL Database、Google F1/Spanner(上篇文章——《(三)從Google F1 看HTAP數據庫的誕生》中有介紹)以及阿里雲的POLARDB和AnalyticDB等都發展起來了。數據從結構化數據在線處理到海量數據分析,從SQL+OLTP的RDBMS到ETL+OLAP的Data Warehouse,再到今天NoSQL+Data Lake的異構多源的數據類型的發展歷程。
於是這10年也很快度過,我們於是見證了像Google、Amazon、阿里巴巴這些雲計算廠商成了這個時期數據庫發展的主要源動力。給我們創造了主要的核心數據庫新技術,推動我們繼續不斷向前。
講完數據庫這五個時期,總結來看,數據庫從早先的原始階段,到關係型數據庫到NoSQL、NewSQL,不斷地在向雲原生、分佈式、多模和HTAP的能力演進。總體而言,我們可以展望,未來10年,也就是在今年這個承上啟下的一年所開始的下一個10年,會是HTAP和Cloud Native DB、Real-Time SQL主導的時期。
不知道各位有沒有做好準備來迎接新的時期呢?彆著急,我們會通過後面的文章,帶領大家一同走入這個時期,畢竟你我都是這個時期的見證者,更是參與者,也是共同締造者。讓我們攜手共進,創造新篇章。
END
閱讀更多 MaskVC 的文章