近年來(lái),數(shù)據(jù)庫(kù)技術(shù)在多元化業(yè)務(wù)需求和系列政策驅(qū)動(dòng)下,發(fā)展快馬加鞭。數(shù)據(jù)庫(kù)百花齊放為 DBA 提供了更多的發(fā)展路徑的同時(shí),也徹底的改變了 DBA 的工作內(nèi)容、方式和標(biāo)準(zhǔn)。
在數(shù)據(jù)庫(kù)碎片化發(fā)展的趨勢(shì)下,SphereEx CEO 張亮總在 2021 年首次提出了 Database Plus 理念,該理念倡導(dǎo)在數(shù)據(jù)庫(kù)上層構(gòu)建統(tǒng)一標(biāo)準(zhǔn)的生態(tài)層,提供如分布式數(shù)據(jù)庫(kù)、異構(gòu)統(tǒng)一接入、數(shù)據(jù)庫(kù)能力增強(qiáng)、云原生及信創(chuàng)落地等方案。
本文從數(shù)據(jù)庫(kù)發(fā)展趨勢(shì)出發(fā)來(lái)介紹 Database Plus 理念、對(duì) DBA 的幫助及最佳實(shí)踐,記錄我個(gè)人對(duì) Database Plus 的理解。
數(shù)據(jù)庫(kù)發(fā)展趨勢(shì)
數(shù)據(jù)庫(kù)的發(fā)展需要從數(shù)據(jù)管理方式說(shuō)起,數(shù)據(jù)管理方式經(jīng)歷了三個(gè)發(fā)展階段,人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫(kù)系統(tǒng)階段,各階段特點(diǎn)如下圖。

圖源:華為云
人工管理階段和文件系統(tǒng)階段的數(shù)據(jù)管理方式在一定條件下滿足了數(shù)據(jù)的管理需求,但無(wú)法保證數(shù)據(jù)的完整性、唯一性及安全性。到了 20 世紀(jì) 60 年代初期,在計(jì)算機(jī)軟硬件技術(shù)飛速發(fā)展下,真正意義上的數(shù)據(jù)庫(kù)管理系統(tǒng)誕生,歷經(jīng)半個(gè)多世紀(jì)的技術(shù)發(fā)展,關(guān)系型數(shù)據(jù)庫(kù)始終占有著主導(dǎo)地位。
根據(jù)信通院發(fā)布的《數(shù)據(jù)庫(kù)發(fā)展研究報(bào)告(2021 年)》,數(shù)據(jù)庫(kù)管理系統(tǒng)的發(fā)展階段分為前關(guān)系型階段、關(guān)系型階段和后關(guān)系型階段。
-
階段一:前關(guān)系型階段(1960-1970)
層次和網(wǎng)狀數(shù)據(jù)庫(kù)管理系統(tǒng),為第一代數(shù)據(jù)庫(kù)管理系統(tǒng),該階段解決了數(shù)據(jù)的獨(dú)立存儲(chǔ)、統(tǒng)一管理和共享的問(wèn)題,為數(shù)據(jù)庫(kù)發(fā)展奠定了基礎(chǔ)。
代表產(chǎn)品: IDS(Integrated Data Storage) 和 IMS(Information Management System),其中 IDS 是世界上第一款數(shù)據(jù)庫(kù)管理系統(tǒng)。
-
階段二:關(guān)系型階段(1970-2008)
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),為第二代數(shù)據(jù)庫(kù)管理系統(tǒng),數(shù)據(jù)抽象級(jí)別較高,易于理解和使用。IBM 研究員 E.F.Codd 在 1970 年發(fā)表了著名的《A Relational Model of Data for Large Shared Data Banks》論文,拉開(kāi)了關(guān)系型數(shù)據(jù)庫(kù)的歷史序幕。
代表產(chǎn)品:DB2、Informix、Oracle、PostgreSQL 、SQL Server 和 Sybase 等。
-
階段三:后關(guān)系型階段(2008-至今)
新一代數(shù)據(jù)庫(kù)管理系統(tǒng),隨著各行業(yè)數(shù)字化轉(zhuǎn)型的推進(jìn),數(shù)據(jù)量呈爆發(fā)式增長(zhǎng)、業(yè)務(wù)流量激增,傳統(tǒng)數(shù)據(jù)庫(kù)的架構(gòu)在時(shí)代浪潮沖擊下升級(jí)轉(zhuǎn)型,如向分布式、云原生以及存算分離等架構(gòu)演進(jìn),解決了海量數(shù)據(jù)存儲(chǔ)、瞬時(shí)高并發(fā)以及彈性擴(kuò)展的問(wèn)題。
代表產(chǎn)品:Aurora、Clustrix、CockroachDB、OceanBase、Spanner、TiDB 和 VoltDB 等。

圖源:信通院
當(dāng)今,在新興業(yè)務(wù)需求和海量數(shù)據(jù)催生下,上層應(yīng)用程序和底層數(shù)據(jù)技術(shù)愈發(fā)多樣化,數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)也越來(lái)越靈活,這些變化均對(duì)數(shù)據(jù)庫(kù)能力不斷提出新挑戰(zhàn)。在交易場(chǎng)景外,如關(guān)聯(lián)分析、物聯(lián)網(wǎng)應(yīng)用等賽道,也對(duì)應(yīng)出現(xiàn)了圖數(shù)據(jù)庫(kù)、時(shí)序數(shù)據(jù)庫(kù)等場(chǎng)景分化的產(chǎn)品,數(shù)據(jù)庫(kù)技術(shù)不斷在演進(jìn)。
不同的數(shù)據(jù)庫(kù)發(fā)展階段會(huì)聚焦不同的問(wèn)題,當(dāng)前企業(yè)需要面對(duì)更細(xì)粒度的場(chǎng)景分化和更龐大的數(shù)據(jù)體量,也幾乎不可能使用一種數(shù)據(jù)庫(kù)來(lái)支撐所有的業(yè)務(wù)場(chǎng)景,因此,無(wú)論是 SQL、NoSQL 還是 NewSQL,都是不可或缺的存在,數(shù)據(jù)庫(kù)多元共存是不可否認(rèn)的現(xiàn)狀。
下圖是信通院發(fā)布的數(shù)據(jù)庫(kù)產(chǎn)業(yè)圖譜,旨在全面客觀展現(xiàn)全球數(shù)據(jù)庫(kù)產(chǎn)業(yè)中的關(guān)鍵領(lǐng)域、環(huán)節(jié)和代表企業(yè)。單從廠商 Logo 數(shù)量來(lái)看已經(jīng)有相當(dāng)大的篇幅,對(duì)應(yīng)數(shù)據(jù)庫(kù)產(chǎn)品數(shù)量之多就不言而喻了。


圖源:信通院-《全球數(shù)據(jù)庫(kù)產(chǎn)業(yè)圖譜(2022)》
數(shù)據(jù)庫(kù)碎片化,是當(dāng)前數(shù)據(jù)庫(kù)的發(fā)展趨勢(shì)。
數(shù)據(jù)庫(kù)碎片化給 DBA 帶來(lái)的難題
“我們?cè)谥v的 Database Plus,到底能解決什么樣的問(wèn)題?”提到了碎片化帶來(lái)的 4 個(gè)痛點(diǎn)問(wèn)題,分別是架構(gòu)選型困難、技術(shù)挑戰(zhàn)眾多、運(yùn)維復(fù)雜度高以及數(shù)據(jù)庫(kù)間缺乏協(xié)作和統(tǒng)管能力,覆蓋到了架構(gòu)師所關(guān)注的方方面面。碎片化對(duì)應(yīng)著變革,也改變著 DBA 的工作方式,下面我以 DBA 的角度,聊一聊在數(shù)據(jù)庫(kù)碎片化浪潮中的感受。
-
系統(tǒng)穩(wěn)定性堪憂
讓數(shù)據(jù)庫(kù)平穩(wěn)運(yùn)行是 DBA 的工作的重中之重,能否讓我們 DBA 睡個(gè)好覺(jué)、過(guò)個(gè)好節(jié),都取決于數(shù)據(jù)庫(kù)技術(shù)棧的成熟度。
在 DBA 心中穩(wěn)定性永遠(yuǎn)在第一位,因此無(wú)論是產(chǎn)品新增還是替換,系統(tǒng)穩(wěn)定性在一定時(shí)間內(nèi)將一直是一個(gè)問(wèn)號(hào)。
-
產(chǎn)品選型工作繁重
數(shù)據(jù)庫(kù)產(chǎn)品百花齊放,無(wú)論是基于內(nèi)驅(qū)還是基于外驅(qū)的選型工作都非常繁重,數(shù)十甚至上百的測(cè)試用例一遍又一遍的在不同的產(chǎn)品上進(jìn)行驗(yàn)證,選型工作時(shí)間緊、任務(wù)重。
也曾聽(tīng)到過(guò) DBA 圈的同學(xué)抱怨:“新產(chǎn)品接二連三,測(cè)不過(guò)來(lái)了”。
-
學(xué)習(xí)成本直線攀升
單一的數(shù)據(jù)庫(kù)產(chǎn)品無(wú)法滿足業(yè)務(wù)的全部需求,保守估計(jì),在企業(yè)內(nèi)部至少有 3 種數(shù)據(jù)庫(kù)產(chǎn)品并存,來(lái)滿足不同階段、不同業(yè)務(wù)的需求。隨著架構(gòu)升級(jí)、政策要求等原因,還會(huì)陸續(xù)加入新的產(chǎn)品,再也不是 MySQL+Oracle 一招鮮吃遍天的時(shí)代。
-
運(yùn)維體系被打破
數(shù)據(jù)庫(kù)運(yùn)維體系需要大量時(shí)間沉淀,相關(guān)運(yùn)維方法、平臺(tái)搭建以及團(tuán)隊(duì)的默契并非一朝一夕所能形成。數(shù)據(jù)庫(kù)碎片化,迫使 DBA 團(tuán)隊(duì)需要掌握多樣化數(shù)據(jù)庫(kù)的運(yùn)維方式,運(yùn)維體系不斷被打破再重整。
-
生態(tài)欠缺致挑戰(zhàn)多
文檔和工具是生態(tài)建設(shè)中一部分,配套工具是一站式解決方案必不可少的工具,如兼容檢查、異構(gòu)遷移以及性能分析報(bào)告等工具,同時(shí)文檔的結(jié)構(gòu)和內(nèi)容直接反映了產(chǎn)品的水平,是用戶體驗(yàn)最直接的感受。
目前新興產(chǎn)品普遍在文檔和工具方面表現(xiàn)均有所欠缺,起步晚、投入資源有限,也客觀的存在“寫(xiě)文檔的不懂技術(shù),懂技術(shù)的不屑于寫(xiě)文檔”的普遍問(wèn)題,文檔和工具的匱乏給 DBA 帶來(lái)更多的挑戰(zhàn)。
什么是 Database Plus?
Database Plus 是一種分布式數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)理念。旨在碎片化的異構(gòu)數(shù)據(jù)庫(kù)上層構(gòu)建生態(tài),在最大限度復(fù)用數(shù)據(jù)庫(kù)原生存算能力的前提下,進(jìn)一步提供面向全局的擴(kuò)展和疊加計(jì)算能力。使應(yīng)用與數(shù)據(jù)庫(kù)間的交互面向 Database Plus 構(gòu)建的標(biāo)準(zhǔn),從而屏蔽數(shù)據(jù)庫(kù)碎片化對(duì)上層業(yè)務(wù)帶來(lái)的差異化影響。
理念定位:生態(tài)和標(biāo)準(zhǔn)
生態(tài)和標(biāo)準(zhǔn),是最能體現(xiàn) Database Plus 定位的詞語(yǔ)。
Database Plus 不是重新來(lái)做一款數(shù)據(jù)庫(kù)產(chǎn)品,而是站在前人的肩膀上形成差異化核心能力、多元化產(chǎn)品生態(tài)和統(tǒng)一化接入標(biāo)準(zhǔn),來(lái)解決如分布式構(gòu)建、數(shù)據(jù)庫(kù)能力增強(qiáng)、異構(gòu)數(shù)據(jù)庫(kù)統(tǒng)一接入等問(wèn)題。
核心價(jià)值:連接、增強(qiáng)、可插拔
-
連接
Database Plus 以數(shù)據(jù)庫(kù)網(wǎng)關(guān)的形態(tài)為應(yīng)用系統(tǒng)提供統(tǒng)一數(shù)據(jù)庫(kù)入口,提供一個(gè)可以適配于各種數(shù)據(jù)庫(kù) SQL 方言和訪問(wèn)協(xié)議的中間層,Database Plus 將 SQL 解析而成的 AST(抽象語(yǔ)法樹(shù))根據(jù)其他數(shù)據(jù)庫(kù)方言的規(guī)則重新生成 SQL,來(lái)屏蔽異構(gòu)數(shù)據(jù)庫(kù)方言差異,數(shù)據(jù)庫(kù)網(wǎng)關(guān)是“連接”最佳的詮釋。
-
增強(qiáng)
在當(dāng)前眾多成熟數(shù)據(jù)庫(kù)產(chǎn)品的基礎(chǔ)之上,Database Plus 復(fù)用數(shù)據(jù)庫(kù)原生的存儲(chǔ)和計(jì)算能力,再對(duì)其算力、容量及功能進(jìn)行突破。
Database Plus 以全局化的方式在對(duì)數(shù)據(jù)庫(kù)的分布式、數(shù)據(jù)控制和流量控制三個(gè)方面進(jìn)行增強(qiáng),能夠靈活實(shí)現(xiàn)架構(gòu)升級(jí)或數(shù)據(jù)庫(kù)產(chǎn)品替換產(chǎn)生的需求,不需要業(yè)務(wù)層做妥協(xié)和重構(gòu)。
-
可插拔
隨著連接和增強(qiáng)的生態(tài)的豐富,Database Plus 的形態(tài)可能會(huì)變得臃腫,因此可插拔架構(gòu)是 Database Plus 必不可少的設(shè)計(jì)方案。在擴(kuò)展的同時(shí)還能做到合理收斂,讓用戶只關(guān)注真正需要的部分,做到生態(tài)無(wú)邊界,能力可插拔。
形態(tài)展現(xiàn):面向架構(gòu)師、開(kāi)發(fā)者和 DBA
面向不同的角色,Database Plus 所展現(xiàn)出的形態(tài)各有不同。
-
面向架構(gòu)師的數(shù)據(jù)庫(kù)計(jì)算增強(qiáng)平臺(tái)
通過(guò) Database Plus 更精細(xì)化地適配靈活多變的應(yīng)用場(chǎng)景,提供微服務(wù)后端數(shù)據(jù)庫(kù)單元化的最佳方案,在計(jì)算增強(qiáng)平臺(tái)中可盡情發(fā)揮設(shè)計(jì)靈感和創(chuàng)造力,逐個(gè)擊破架構(gòu)選型難、運(yùn)維復(fù)雜高以及異構(gòu)并存和協(xié)作等難題。
-
面向開(kāi)發(fā)者的統(tǒng)一標(biāo)準(zhǔn)接入層
在開(kāi)發(fā)過(guò)程中可使用 Database Plus 的 SQL 方言翻譯能力,可自動(dòng)識(shí)別協(xié)議和存儲(chǔ)節(jié)點(diǎn)類型,如使用 MySQL 的方言來(lái)訪問(wèn) PostgreSQL 的存儲(chǔ)節(jié)點(diǎn),降低開(kāi)發(fā)者的學(xué)習(xí)和研發(fā)成本。
-
面向 DBA 的分布式數(shù)據(jù)庫(kù)解決方案
DBA 可使用最熟悉的技術(shù)棧來(lái)構(gòu)建一套分布式數(shù)據(jù)庫(kù)解決方案,該方案中 Database Plus 為計(jì)算層,數(shù)據(jù)庫(kù)為存儲(chǔ)層,同時(shí)所有的配置變更操作可通過(guò) SQL 方式在 Database Plus 這一層中來(lái)完成。

圖:Database Plus 的多種形態(tài)
Database Plus 理念對(duì) DBA 有哪些幫助?
-
提供穩(wěn)定的基礎(chǔ)架構(gòu)
對(duì)于分布式解決方案的需求,DBA 可通過(guò)所擅長(zhǎng)的技術(shù)棧產(chǎn)品進(jìn)行構(gòu)建,如 MySQL、PostgreSQL 或其他數(shù)據(jù)庫(kù)產(chǎn)品,而無(wú)需擔(dān)憂全新產(chǎn)品所帶來(lái)的不確定性。
-
帶來(lái)靈活的擴(kuò)展能力
面對(duì)架構(gòu)擴(kuò)容或是功能擴(kuò)展需求,如分片擴(kuò)容或數(shù)據(jù)加密處理等增強(qiáng)功能,DBA 可在 Database Plus 層完成擴(kuò)容配置變更。
-
降低 DBA 學(xué)習(xí)成本
基于現(xiàn)有數(shù)據(jù)庫(kù)產(chǎn)品的生態(tài)體系,Database Plus 方案可讓 DBA 繼續(xù)沿用相關(guān)運(yùn)維體系和工具,有效降低 DBA 學(xué)習(xí)成本。
-
提供友好的維護(hù)體驗(yàn)
Database Plus 以數(shù)據(jù)庫(kù)形態(tài)呈現(xiàn)給 DBA,DBA 的日常操作都會(huì)在 Database Plus 中以 SQL 的形式來(lái)完成,具備數(shù)據(jù)庫(kù)原生般的操作體驗(yàn)。
Database Plus 最佳實(shí)踐-ShardingSphere
在 Database Plus 理念指導(dǎo)下,ShardingSphere 成為了 Database Plus 的最佳實(shí)踐。
ShardingSphere 起源于互聯(lián)網(wǎng)分片需求的業(yè)務(wù)場(chǎng)景,歷經(jīng)數(shù)年發(fā)展到如今的 Database Plus 實(shí)踐者,已從一款單一工具演變?yōu)閿?shù)據(jù)庫(kù)領(lǐng)域的新生態(tài)。在學(xué)習(xí) ShardingSphere 過(guò)程中發(fā)現(xiàn)了網(wǎng)絡(luò)上一些不準(zhǔn)確的描述,這里用幾行文字重新認(rèn)識(shí)下 ShardingSphere。
-
2016 年開(kāi)源,2020 年成為 Apache 頂級(jí)項(xiàng)目,目前有 17k Stars、400 多位貢獻(xiàn)者及近 200 家企業(yè)登記在用(截至 2022 年 8 月);
-
項(xiàng)目由 JDBC 和 Proxy 兩款產(chǎn)品組成,ShardingSphere 是項(xiàng)目的名稱,Sharding-JDBC 是曾用名;
-
以數(shù)據(jù)庫(kù)協(xié)議及 SQL 方式為業(yè)務(wù)提供數(shù)據(jù)庫(kù)增強(qiáng)功能,原生支持 MySQL、PostgreSQL、SQL Server、Oracle 等多種數(shù)據(jù)存儲(chǔ)引擎;
-
提供了面向分布式、面向數(shù)據(jù)控制(安全)和流量控制(全鏈路壓測(cè))的解決方案。
通過(guò) ShardingSphere,DBA 可基于指定數(shù)據(jù)庫(kù)產(chǎn)品快速構(gòu)建分布式數(shù)據(jù)庫(kù)方案,也可配置如讀寫(xiě)分離、數(shù)據(jù)加密及影子庫(kù)壓測(cè)等數(shù)據(jù)庫(kù)增強(qiáng)能力,內(nèi)置 DistSQL 命令為 DBA 運(yùn)維過(guò)程提供更友好的數(shù)據(jù)庫(kù)原生體驗(yàn)。
在性能方面,可關(guān)注發(fā)布在數(shù)據(jù)庫(kù)領(lǐng)域頂級(jí)會(huì)議 ICDE 的論文 “Apache ShardingSphere:A Holistic and Pluggable Platform for Data Sharding”中的數(shù)據(jù),Sysbench 的表現(xiàn)如下圖所示,性能明顯優(yōu)于其他產(chǎn)品。

圖源:Apache ShardingSphere: A Holistic and Pluggable Platform for Data Sharding
隨著國(guó)際環(huán)境的變化,國(guó)產(chǎn)數(shù)據(jù)庫(kù)的影響力快速擴(kuò)大,2021 年上半年,ShardingSphere+openGauss 聯(lián)合打造的分布式數(shù)據(jù)庫(kù)解決方案使用 16 臺(tái)服務(wù)器,在超過(guò) 1 小時(shí)的測(cè)試中得到了超過(guò) 1000 萬(wàn) tpmC 的結(jié)果,滿足了 openGauss 在海量數(shù)據(jù)場(chǎng)景下關(guān)于性能、可用性以及運(yùn)維成本這三方面的訴求。如有國(guó)產(chǎn)化分布式數(shù)據(jù)庫(kù)方案的需求,可多加關(guān)注。
本篇文章主要說(shuō)明 Database Plus 理念,因此 ShardingSphere 不展開(kāi)介紹,更詳細(xì)的介紹及說(shuō)明可參考 Apache ShardingSphere 在線文檔。
總結(jié)
在數(shù)據(jù)庫(kù)碎片化時(shí)代,Database Plus 理念給我們更多數(shù)據(jù)庫(kù)使用方式上的啟發(fā),隨著 ShardingSphere 在異構(gòu)數(shù)據(jù)計(jì)算增強(qiáng)平臺(tái)的持續(xù)發(fā)力,不久后可能會(huì)改變 DBA 的工作方式。
上面是我個(gè)人對(duì) Database Plus 理念的理解,下面通過(guò)一張腦圖回顧本文的內(nèi)容。

參考
[1] 張亮. 我們?cè)谥v的 Database Plus,到底能解決什么樣的問(wèn)題?
[2] 韓鋒. 談?wù)剬?duì) Database Plus 認(rèn)識(shí)與暢想
[3] 中國(guó)信通院. 數(shù)據(jù)庫(kù)發(fā)展研究報(bào)告(2021 年)
[4] Apache ShardingSphere:A Holistic and Pluggable Platform for Data Sharding
[5] Apache ShardingSphere. 16 臺(tái)服務(wù)器達(dá)成 1000 萬(wàn) tpmC!挑戰(zhàn)分布式數(shù)據(jù)庫(kù)性能極限




