按圖索驥,談談資料庫技術選型

qing_yun發表於2022-03-15

隨著企業數字化轉型深入,對於資料使用場景也呈現多元化趨勢,正有越來越多資料被企業利用起來。如何為眾多場景選擇一款合適的資料庫產品,是很多企業面臨的問題。而另一方面,近些年來資料庫技術蓬勃發展,初創新興廠商大量湧現。據不完全統計,僅國內的資料庫廠商就有近200家,還不算國外以及開源資料庫產品。上述情況更加劇了企業選擇資料庫的困難。本文從一些角度切入,通過圖譜的形式嘗試為企業選擇資料庫產品描述出一條路徑。

1. 技術選型:場景區分

當使用者面對資料庫選型時,首先是做場景的大致區分。這裡我們將業務場景分為三種型別:

❖ 通用場景

第一類為通用場景,是具有較為普遍的意義,絕大多數業務場景都是適用的。這裡麵包含了企業常規的業務系統,也包括像網際網路應用、實時互動分析等場景。

❖ 分析場景

第二類為分析場景,這類場景比較明確,是對企業內包含線上活躍和歷史在內的全量資料進行實時或批量的分析。這類場景主要強調對資料的加工處理能力,並將結果在資料視覺化平臺進行輸出。

❖ 特定場景

第三類較為特殊,此部分場景屬於相對較窄的範圍,屬於特定方向的資料應用。如比較常見的圖、時序等。這類應用有別於傳統的業務應用。

2. 技術選型:通用場景

針對通用場景,可進一步安裝資料模型、標準SQL訪問及ACID能力做進一步區分。大的方面可分為兩類:

❖ 非關係模型+無SQL+無ACID

此類產品提供較為多元的資料訪問需求。隨著網際網路興起,針對非關係模型的資料受到更多的重視。這類資料通常提供專有訪問介面且對ACID能力沒有需求,更多強調是對異構資料的儲存和擴充套件能力。其根據儲存資料模型,又可進一步細分為KV、文件型、寬列型等。這類產品與後面談到的特有場景資料庫產品不同,其往往是作為生產業務系統中的一部分,但兩者有時是有交叉的。

❖ 關係模型+SQL+ACID

絕大多數資料庫產品都是在此分類,它們提供結構化資料的儲存,提供SQL訪問介面,支援ACID能力,強調事務等能力。這類產品種類眾多、架構各異,因此後續按擴充套件能力、可用性水平等做進一步劃分。

1).按擴充套件性/可用性劃分

從這個維度進一步細分通用資料庫場景產品,可按照其架構分為單機、共享、叢集、分散式等多種架構。

·單機架構

單機資料庫是大家最為熟悉的,提供基礎資料庫功能。從擴充套件性來說,一般只具有Scale UP的能力,通過升級硬體來進行擴充套件其效能。從可用性角度來看,單機的可用性有限,一般作為非核心繫統或者作為研發、測試用途。

·共享架構

共享架構資料庫,是針對單機庫的升級,通過共享儲存資源,將上層計算資源實現水平擴充套件,可以提供更好的效能及可用性表現。從擴充套件性來說,其能提供計算能力的有限擴充套件,儲存能力擴充套件則取決於底層儲存。從可用性來看,可以解決例項級、主機級故障,提供整體可用性。

·叢集架構

叢集架構資料庫,是提供了在單機/共享模式之上的資料庫架構。通過複製技術,可實現資料庫主從的工作模式。從擴充套件性上看,這種方式可提供提供一定範圍內計算資源的水平擴充套件,這裡強調是一定範圍是指計算能力不能“完整擴充套件”,如僅能提供只讀的擴充套件能力。對可用性來說,通過叢集可實現主出現問題時,切換到從的能力,進而提升整體可用性。

·分散式架構

分散式架構資料庫,近些年來很火熱,其突破單機、共享、叢集架構下的資料庫侷限。通過存算分離技術,可實現上層計算資源、底層儲存資源的水平擴充套件,進而滿足更高效能、更大容量的承載。從擴充套件性來看,其擴充套件能力要遠遠優於前幾種架構。從可用性來看,分散式架構因其多副本技術等,原生提供了更高的可用性。但這部分的具體實現技術上有著不同的方式,下面針對這部分加以說明。

2).按規模/一致性/侵入性/負載特徵

·原生分散式架構

原生分散式架構,通過存算分離技術,可實現計算與儲存的獨立擴充套件。但受到其管理能力限制,一般擴充套件能力較後者稍差。技術上按分散式重構了整個架構,可提供全域性的MVCC、標準ACID、資料強一致等能力。對於使用者來說,可類似普通資料庫一樣去使用,無應用浸入性。在效能上,可提供很大的吞吐量,但受限於架構在響應時間上有一定劣勢。此外,還有些產品通過構造第二引擎及MPP的引入,也可提供一定的線上分析能力,滿足類似HTAP的要求。

·分散式計算+單機引擎

這種架構利用成熟的單機引擎與上層分散式計算層的結合,可實現存算分離。其擴充套件能力,較前者有更大的擴充套件能力。技術上此類產品僅重構了部分資料庫架構,可通過上層與底層的部分改造,實現全域性MVCC、ACID和強一致能力。但從實現上看,並不是十分優雅。此外,這種架構是需要使用者明確資料分片方法,帶有一定的侵入性,但也因這點其帶來較好的延時表現。在效能上,可提供很大的吞吐量。

·單機計算+分散式儲存

這種架構是以分散式儲存為基礎,在其上構建單機的計算層。通過底層儲存和上層無狀態計算節點的擴充套件能力,實現一定程度的存算分離和彈性擴充套件。但從整體擴充套件能力來看,相較於前兩者,有著明顯的劣勢。且受限於底座能力的約束,必須滿足一定的部署條件。從產品能力上看,其是非分散式資料庫最為接近的,使用者幾乎無感。

3. 技術選型:分析場景

針對分析場景,可以做進一步的功能細分。這裡可從支援事務情況、線上性、資料模型及實時性要求來做區分。

·MPP架構

第一類產品是MPP型別的資料倉儲,是一種大規模平行計算資料庫。此類產品屬於資料庫定位,提供資料庫特有的ACID能力,對使用者非常友好。提供標準的SQL能力及企業級能力(例如許可權、資源)等。此類產品曾經是資料分析的唯一選擇,後來面對更大規模、多模異構等場景不太適用,才出現後續基於大資料及其他方案。但隨著近些年產品的發展,此類產品突破之前叢集規模的限制,已經可以支援PB級及以上的規模。在使用體驗上更加接近於資料庫的能力。因此更為受到企業級使用者的歡迎。後續此類產品在向細粒度控制、資源彈性、異構計算等方向發展。

·大資料架構

第二類產品是大資料架構的產品,其本質是一種平行計算及儲存系統。從早期出現的Hadoop及Hive、Spark到後期一系列產品,對應產品非常多樣。此類產品提供多種計算方式,且通常為了降低使用成本也提供了類SQL的訪問方式。但在如資料一致性、事務等方面較前者有明顯的差異。通常適用於某類特定場景的資料分析,其擴充套件能力較前者更有優勢。

·分散式儲存架構

第三類產品是來自於分散式儲存產品,其原始訴求是提供各類資料的儲存。這裡包括結構化、半結構乃至非結構化資料。隨著這些資料被儲存,計算類的需求也被提出來。但通常這些計算往往是探索性的、無規律的。同時為了方便儲存的各類不同資料,還需提供統一的後設資料,建立整體資料視角。

4. 技術選型:特定場景

對於特定場景部分,其根據資料專項應用領域,通常是比較好選擇的。例如針對圖資料庫領域,Neo4j等是常規的選擇;針對時序資料庫InfluxDB等是常規的選擇。此類產品選擇,往往可選擇的產品範圍不同,只需關注被選產品的核心能力即可。

來自 “ 韓鋒頻道 ”, 原文作者:韓鋒頻道;原文連結:https://mp.weixin.qq.com/s/YZTH_LK5MtpfL35jLGr-oA,如有侵權,請聯絡管理員刪除。

相關文章