近期,由國家工業信息安全發展研究中心發布了2022年《分布式數據庫發展趨勢研究報告》。報告從數據庫產業發展、分布式數據庫產品價值、面臨調整、技術路線、發展趨勢、發展方向等多角度闡述了分布式數據庫的諸多問題。本文,從個人角度談談對上述研究報告的解讀。
1、背景篇:不鳴則已、一鳴驚人
伴隨著數字化轉型深化,企業對于數據的重視程度逐步加深。伴隨著以云計算、5G、IOT、人工智能、區塊鏈等新興技術的發展,催著更多新興數據場景的出現。這其中直觀帶來的就是數據規模呈現幾何級增長、數據結構復雜度與日攀升。
根據第三方機構的預測數據,全球數據存儲量在未來幾年將呈現爆炸式增長。除去數據規模外,在從數據采集、存儲、傳輸、展現、分析和優化等方面都對數據的載體數據庫提出了更高的要求。希望以此更好地實現企業對數據資產治理、增值與科學決策,數據高可靠高可用、數據在線分析等訴求,進一步發揮數據價值。上述訴求可以說為數據庫提出了更高的要求,但傳統數據庫架構在超大規模、高并發、實時處理、數據安全等方面明顯力不從心,此外高昂建設成本也難以迎合數字化時代的潮流趨勢。相較于傳統數據庫,新興分布式數據庫的優勢都凸顯出來。
突破規模化存儲能力
傳統單機或集中式架構下,承載的數據規模受限于本地磁盤或可對接的外部存儲空間。雖然后者可做到大規模(如PB級),但其建設周期長、擴展不靈活、投入成本高且依然還會面臨IO的性能瓶頸。而分布式架構數據庫,天然具有的數據分片能力,是有效解決超大規模數據承載的利器。
突破高性能計算瓶頸
作為承載計算的主要資源,CPU、內存資源對計算尤為重要。在傳統單機或集中式架構下,上述資源僅能通過Scale UP方式進行擴展,其擴展能力有限,無法整合更多資源參與計算。而分布式架構數據庫,通過網絡可匯聚更多計算資源參與其中,形成更大規模的算力支持。在高并發、高性能計算領域更有優勢。
填補數據分析能力短板
數據分析,是數據使用的重要方向之一,過去通常是由數據倉庫等技術承載。這種在線數據庫與離線數據倉庫的架構,能在一定程度上解決數據分析問題,但在實時性、一致性、成本等方面存在短板。理想的方式在單一系統完成,但傳統架構受限于資源,無法完全提供。而分布式架構數據庫,通過其算力的整合可滿足混合負載的業務壓力,大幅度提升分析時效性,并減少數據冗余,靈活性大大提高。
提升可用性與安全性
傳統架構下,數據庫可用性更多取決于單點(或存儲),設計上往往通過冗余硬件保護等方式去提升;但受限于架構約束難以達到非常高的可用性。針對數據安全,也通常是通過主備復制、備份等手段完成,但難以保證數據在線安全,需要窗口期完成恢復。分布式架構具備的存算分離、多副本、彈性擴展等能力,可有效提升整體可用性和數據安全。用戶可根據需要,靈活調整架構,提升可用性和安全性。
優化成本模型實現按需擴展
傳統架構數據庫的成本相對高昂,這主要是由于其架構限制,向上擴展相對容易,水平擴展比較困難。為了保證快速的業務發展,通常在項目設計初期就需要按最大容量進行規劃或為了更高的可靠性需要付出高額的成本。而分布式架構數據庫則不同,其架構天然就支持靈活擴展能力(包括存儲、計算),并可實現低成本的高可用解決方案(多副本)。上述能力,將有效降低企業在構建系統時的投入,特別是在面對快速、多變業務的場景更是如此。
2、技術篇:百花齊放、百家爭鳴
從上圖可見,分布式數據庫已經發展多年,特別是近些年來已經逐步成熟并落地使用。從大的技術路線來看,可大致分為幾種類型:
路線:分布式中間件+單機數據庫
這一技術路線是在單機數據庫系統上進行改造,主要解決計算存儲的擴展性問題。上層為一組無狀態計算節點,基于分片規則提供SQL解析,請求轉發和結果合并的能力。下層為增強的單機數據庫,提供單機數據庫的存儲和執行能力。這一架構通過數據在邏輯層的切割,可近似線性地對計算性能和存儲容量進行擴展,具有可規模化擴展的能力。
路線:分布式存儲構建
這一技術路線是通過構建分布式共享存儲實現擴展,采用非對稱計算節點,大部分公有云數據庫是這條路線。這條路線有限地解決擴展性問題,跨地域數據一致性主要依賴分布式存儲引擎。共享存儲能夠跨多個節點提供讀寫,上層的計算部分是無狀態的一組節點組成。當有寫能力的計算節點出現故障時,會自動從可用的讀節點中自動選出一個作為寫節點,實現寫能力的高可用。
路線:原生分布式
這一技術路線是原生分布式數據庫,各計算節點提供對等的讀寫服務。這條路線是根據分布式一致性協議做底層設計,與傳統數據庫有本質區別。原生分布式數據庫將分布式存儲、事務、計算有機的結合在一起,數據由系統自動打散并存儲多個副本,通過一致性協議保證多個副本和事務日志的一致性,對分布式事務、全局MVCC等支持更為徹底。整個分布式結構是包裹在集群內部的,應用對此無感知。
3、 趨勢篇:石以砥焉、化鈍為利
隨著分布式架構數據庫在眾多場景使用,再享受到其帶來的收益之外,也對這一新架構產品提出了更多的挑戰。這些挑戰也為未來分布式數據庫發展指明了方向。
(1)融合化原生設計
如上面談到的分布式數據庫存在不同路線,不同路線產品差異明顯。從長期發展來看,不同路線產品呈現逐步融合的現象,各家各取所長,不斷豐富產品能力。一方面相較于單機或集中式架構,分布式架構產品仍然存在諸多短板,可理解為基礎能力補齊;另一方面用戶對于分布式能力也提出了更高的要求,可理解為擴展能力增強。
- 基礎能力補齊
?在分布式架構下,相較于單機或集中式架構,仍存在大量短板問題。這些會直接影響到用戶的使用體驗。如分布式事務的一致性保證問題,對于單機較容易實現的ACID,分布式環境中出現了更多的難題。分布式數據庫將需要處理的事務進行拆分,再部署到不同的服務器上進行處理,理想狀況下,整個過程需要全局一致性協議的保護,而分庫分表兩階段的方式在一些意外情況下容易出現問題。再比如,分布式架構多采用存算分離架構,其天然會帶來分層間網絡開銷問題,如何解決低延遲需求值得考慮。 - 擴展能力增強
?隨著分布式數據庫的使用,如何使用好這一架構成為核心。例如在分布式場景下,如何做好數據分片的智能化。分布式通過分庫分表進行數據拆分,從而各表的數據量保持在閾值以下,從而應對高并發和海量數據,但如何高效的、高質量的進行分片,還需再探索。此外,作為以一種新架構產品,分布式數據庫所具備的彈性擴縮容、按需擴展、海量支持、多副本細粒度控制等課題,都是值得深入挖掘。
(2)負載一體化設計
企業級應用的業務場景通常可以分為聯機交易和實時分析兩種,通常稱為OLTP和OLAP的業務應用。由于是不同的應用場景,很多企業往往會選擇多款數據庫產品分別支持。這種組合式的解決方案要求數據在不同產品間進行流轉,數據的同步過程就帶來了時間延遲和數據不一致的風險,而且還會產生冗余數據,成本開銷被迫提高,這在一定程度上限制了企業的發展。分布式數據庫的出現,為企業解決上述問題帶來了契機,這也是近年來HTAP(混合負載)的興起,其旨在打破事務處理和分析之間“壁壘”。未來分布式數據庫都應具備混合負載能力,即在支持高并發、事務性請求的同時,也對分析型的復雜查詢提供了良好的支持,實現計算、I/O資源互不干擾。通過在線交易和分析互不影響,一站式地解決企業級應用的各種需求,從而大幅度降低成本,同時提高了企業決策的效率。
(3)云與云原生設計
根據全球知名咨詢公司Gartner指出,“到2022年,75%的數據庫將被部署或遷移到云平臺…”云化無疑代表了未來。數據庫作為IT基礎設施,如何與云環境融合成為大家的問題。特別是分布式數據庫,其架構需要大量資源構建。如何通過與云的結合,有效解決靈活部署、彈性擴縮容、資源管理乃至如何更好地利用云基礎資源做到真正的云原生,這些都是分布式數據庫需要考慮的。因此在分布式數據庫產品設計層面就要充分適配云環境、兼容更多云技術,從而添加更多資源管控、多部署形態、云原生資源利用等云化方面的能力。
(4)高可用一致性設計
作為數據庫的基本能力要求,服務高可用和數據一致性一直是企業選擇數據庫的重點考察要求。特別是隨著數字化轉型,更多數據參與到企業業務流轉中,這些都對如可用性提出更好要求。傳統數據庫架構,在滿足7×24小時的服務不中斷和數據零丟失方面往往已經超出其可承受能力,或者即使能解決其成本也十分高昂。分布式數據庫具備的分層、多組件、多節點架構成為解決高可用的基礎,有效控制故障范圍、主動發現自愈等手段可大幅提升服務可用性。同時,其多副本機制為數據一致性安全提供可能,這也是相較于傳統架構的突破,可做到數據更為精細粒度的一致性,滿足各種數據場景下對一致性的不同等級要求。
(5)軟硬結合異構設計
硬件和軟件是信息系統的核心組件,兩者之間相輔相成,互相促進。新型硬件的出現,可以為數據庫發展帶來更多的收益。一方面以基礎硬件如多核CPU、異構計算(如GPU、FPGA)持久化內存、高速網絡為代表的硬件出現,為分布式數據庫架構提供更多的想象空間;另一方面新型硬件也會為數據庫設計帶來更多挑戰,如何利用好新硬件值得各數據庫廠商思考,甚至會顛覆之前的設計模式。此外,作為關鍵基礎設施,數據庫還要為操作系統、芯片的灰度替換提供支持,而在關鍵行業及軟件領域,數據庫還需要提供對異構芯片的支持,從而提升數字化解決方案的嚴謹性,降低應用風險。
(6)全密態安全設計
當前信息安全已經上升到國家戰略高度,諸多行業監管機構和政府部門對數據存儲和使用都有明確的安全合規性要求。2021年11月公布的《中華人民共和國個人信息保護法》,監管部門已在金融等行業中推廣數據加密,要求敏感數據采用加密的方式進行存儲。而作為數據承載主體的數據庫,有義務為此提供堅實的數據安全保障。那么在分布式數據庫設計之初,就需考慮在數據傳輸、數據存儲、數據計算等多方面的安全問題。諸如透明數據加密、透明數據傳輸、多密鑰管理、國密算法支持、密態計算等方面,都需要考慮。
(7)低成本集約化設計
分布式數據庫,作為一種新架構產品,對于企業來說會帶來不小成本。從管理角度來看,分布式架構對運維人員都帶來新的要求,如何管理好成為要點。產品是否提供完整的管理能力、是否提供完備的生態工具等,將直接影響最終使用成果。從資源角度來看,分布式架構需要一定資源投入,如何規劃設計好并通過諸如租戶能力有效降低使用成本很重要。
(8)高兼容易遷移設計
對于底層數據庫替換,最為頭疼的就是數據庫的替換。大部分企業經過企業信息化的長期積累與革新,在內部積累了大量的業務系統。傳統的企業級數據庫產品提供了強大的能力,協助開發者快速便捷地構建應用程序,但同時也導致應用設計過度依賴數據庫功能。適配新的數據庫產品必須對應用代碼進行大量修改。沒有兩個數據庫是完全一樣的,分布式數據庫更是如此。其在底層架構、實現邏輯上必然存在差異。比較好的方式,就是提供高兼容能力,這將有利于大幅降低代碼改造成本。目前大多數分布式數據庫還不完全具備主流數據庫生態的兼容能力,兼容的種類還不夠豐富,兼容度還有待提高。此外,分布式架構對于設計上也有著特殊的要求,如何降低研發設計成本,近似透明地屏蔽這一差異很重要。此外,數據從傳統集中式數據庫遷移至分布式數據庫是一項復雜且龐大的工程。從前期兼容評估、應用設計改造,到中期的業務測試、性能測試,指導最終遷移完成并保證遷移準確性等,這些都需要提供全流程的支持。這也是目前分布式產品普遍有所缺失的。希望未來分布式數據庫產品將具備全方位、高標準、高可靠性的平滑遷移能力。
4、發展篇:知之非艱、行之惟艱
分布式數據庫作為新技術架構,如何推進是需要多方位的支持。從近些年來看,從國家、行業、用戶等多方位都給予大力支持。從政策層面,將在作為數據基礎設施之一的數據庫提升到一定高度,重點布局針對數據庫分布式轉型、應用創新戰略。在行業方面,越來越多的數據庫廠商加入進來,特別是以分布式為特征的產品已然成為主流。在用戶方面,以金融、電信為代表的高數據價值企業,已經開始在核心生產系統逐步使用。但同時我們也看到,分布式數據庫在推進中,仍然存在諸多不足之處,這也是未來需重點關注發展之處。
(1)培育自有生態
數據庫要想用好,是需要從“產、學、研、用”多角度考慮,是需要跟上下游生態形成合力,才能為客戶提供更為完整的服務。相較于之前國外商業數據庫或開源產品,國內數據庫生態還需要加大投入,培育自有生態。在這其中,可以通過生態兼容加速這一過程,如何有效利用之前成熟生態值得考慮。此外,開源作為一種有效的生態構建手段,也是生態化建設的利器。
(2)共建行業標準
作為一種新型數據庫,分布式架構尚未形成統一的行業標準或者事實標準。從最終用戶角度來看,不得不面對紛繁復雜的產品細節,這也阻礙了分布式數據庫的大范圍推廣。從行業整體發展角度來看,一方面可通過行業指導單位牽頭,由行業內眾多企業參與形成標準規范;一方面可通過構建標準化評測體系,建立可衡量標準。希望通過標準的建立,能探索出特色發展路徑,抓住機遇盡早實現分布式數據庫領域的換道超車。
(3)樹立專有評測
分布式數據庫,作為新產品有其架構特色。對于這一新產品的理解,各家各有不同。行業內急需統一的評測標準,從多維度評估這一新類型產品。這其中既包括傳統數據庫的基本能力,也需要包含分布式自有特點,如在高可用、備份恢復等。逐步建立其以功能測試、非功能測試及場景化測試相結合,形成完備的評測體系。
(4)填補最后路徑
企業更換底層數據庫,是一個頗為痛苦的過程,更換為一種全新架構產品更是如此。大量用戶使用分布式架構的擔憂是來自于對新架構、新產品的未知及對實施路徑的陌生。前者我們可通過專有評測標準逐步熟悉,后者則需要通過最后路徑的填補做好“最后一公里”。從選型評估、工作量評估、結構數據遷移、流量切換、上線保障等多角度,形成標準的實施路徑將大大加速這一過程。
寫在最后:
分布式數據庫,尚處于發展早期,但已呈現蓬勃之勢。雖然仍有很多不足,但發展空間巨大。這里送給分布式數據庫從業者一句話:道阻且長,行則將至;行而不輟,未來可期!
作者介紹
韓鋒,51CTO社區編輯,CCIA(中國計算機協會)常務理事,前Oracle ACE,騰訊TVP,阿里云MVP,dbaplus等多家社群創始人或專家團成員。有著豐富的一線數據庫架構、軟件研發、產品設計、團隊管理經驗。曾擔任多家公司首席DBA、數據庫架構師等職。在云、電商、金融、互聯網等行業均有涉獵,精通多種關系型數據庫,對NoSQL及大數據相關技術也有涉足,實踐經驗豐富。曾著有數據庫相關著作《SQL優化最佳實踐》、《數據庫高效優化》。