作為數(shù)據(jù)基礎(chǔ)設(shè)施的重要組成部分,數(shù)據(jù)庫在其中扮演著重要的角色。近些年來,數(shù)據(jù)庫整體發(fā)展也呈現(xiàn)出較之以往很大的不同。
其一是開源數(shù)據(jù)庫受到更為廣泛的關(guān)注,從多家機構(gòu)的最新報告來看,開源數(shù)據(jù)庫無論從產(chǎn)品數(shù)量還是受關(guān)注程度都超過商業(yè)數(shù)據(jù)庫。開源這一新模式,正成為未來數(shù)據(jù)庫發(fā)展的主流。
其二是云計算成為未來主要資源供給方式得到普遍共識。已經(jīng)有越來越多的企業(yè)選擇在云上構(gòu)建基礎(chǔ)環(huán)境,包括云上數(shù)據(jù)庫的發(fā)展速度也遠高于非云環(huán)境。據(jù)樂觀估計,在未來 5~10 年云數(shù)據(jù)庫將占據(jù)整體數(shù)據(jù)庫市場的七成以上。此外,對遷移到公有云、使用多云環(huán)境等問題,也普遍被企業(yè)所接受。
其三是數(shù)據(jù)融合趨勢,針對數(shù)據(jù)多場景應(yīng)用,使用融合技術(shù)簡化訪問,提升效率。作為數(shù)據(jù)使用高地,金融行業(yè)一方面對數(shù)據(jù)庫有著極高的要求,一方面又面臨很多來自數(shù)據(jù)新的挑戰(zhàn),諸如海量規(guī)模、高并發(fā)、數(shù)據(jù)安全、實時分析等訴求亟待解決。分布式數(shù)據(jù)庫的出現(xiàn),迎合這一發(fā)展趨勢,對于金融企業(yè)解決上述問題帶來新的解決思路。
本文從金融用戶角度入手,對如何選擇分布式數(shù)據(jù)庫及選型后的最優(yōu)實踐進行闡述。
金融業(yè)數(shù)據(jù)庫選型背景
隨著企業(yè)數(shù)字化轉(zhuǎn)型深入,對于數(shù)據(jù)使用場景也呈現(xiàn)多元化趨勢,正有越來越多數(shù)據(jù)被企業(yè)利用起來。金融行業(yè)作為數(shù)據(jù)庫應(yīng)用“高地”,這一趨勢表現(xiàn)更為明顯。同時我們也看到,近些年來數(shù)據(jù)庫領(lǐng)域也發(fā)展迅速,有分布式數(shù)據(jù)庫、多模數(shù)據(jù)庫、云數(shù)據(jù)庫為代表的產(chǎn)品不斷涌現(xiàn)。這些新興數(shù)據(jù)庫在特定場景有很好的使用前景?;谏厦鎯煞N趨勢,金融行業(yè)很多企業(yè)都在面臨選擇數(shù)據(jù)庫的問題。
選型技術(shù)層面要素分析
從技術(shù)角度來看,在數(shù)據(jù)庫選型中有哪些要素需要考慮呢?下面以近期比較關(guān)注的分布式數(shù)據(jù)庫的選型為例,說明下重點考量的技術(shù)要素。
分布式事務(wù)
分布式架構(gòu),自然會帶來分布式事務(wù)的問題。由于需要跨節(jié)點的網(wǎng)絡(luò)交互,因此較單機事務(wù)會有很多損耗,隨之帶來的是事務(wù)處理時間較長、事務(wù)期間的鎖持有時間也會增加,數(shù)據(jù)庫的并發(fā)性和擴展性也會受到影響。針對單筆事務(wù)來說,分布式事務(wù)執(zhí)行效率是肯定會有降低的,分布式帶來的更多是整體處理能力的提升。
性能
由于分布式數(shù)據(jù)庫通常使用的二階段提交和各節(jié)點之間的網(wǎng)絡(luò)交互會有性能損耗,分布式數(shù)據(jù)庫優(yōu)勢不是單個簡單 SQL 的性能,而是大數(shù)據(jù)量的 SQL 查詢,每個節(jié)點會將過濾之后的數(shù)據(jù)集進行返回,會提升性能,并且分布式數(shù)據(jù)庫的優(yōu)勢是并發(fā),大量的 SQL 并發(fā)也會比單機數(shù)據(jù)庫強大,應(yīng)用需要做分布式架構(gòu)的適配,將串行執(zhí)行機制盡量都改造成并發(fā)處理。對于含有需要節(jié)點間數(shù)據(jù)流動的 SQL 語句的事務(wù),OLTP 類的分布式數(shù)據(jù)庫處理效率一般較差,事務(wù)處理時間會較長,事務(wù)期間的鎖持有時間也會增加,數(shù)據(jù)庫的并發(fā)性和擴展性也會受到影響。建議盡量改造存在跨節(jié)點數(shù)據(jù)流動的 SQL 語句(主要是多表關(guān)聯(lián))的事務(wù)。
數(shù)據(jù)備份
分布式數(shù)據(jù)庫的一致性保證通過內(nèi)部時鐘機制所提供的全局時間戳,所有節(jié)點都會遵循該機制,所以備份恢復(fù)的增量也是基于全局時間戳,但是分布式數(shù)據(jù)庫的備份解決方案最重要的標志為是否支持物理級的備份,物理級的備份會比邏輯的備份性能吞吐大很多,還有就是是否支持一些分布式備份方案,比如 S3 協(xié)議接口,是否支持壓縮等功能。分布式數(shù)據(jù)庫基本都具備備份和恢復(fù)方案,通常從備節(jié)點進行連續(xù)備份(全量+日志),恢復(fù)的時候指定節(jié)點進行恢復(fù)到指定時間點,整個過程可配置自動任務(wù)、自動執(zhí)行。
高可用
分布式數(shù)據(jù)庫大多都是基于多數(shù)派協(xié)議,同城雙中心不適合多數(shù)派的要求,同城數(shù)據(jù)級多活建議采用三中心部署。如果同城主備可以采用集群級的異步復(fù)制,異地建議采用集群級的 binlog 異步復(fù)制,建議實例的主備節(jié)點設(shè)置在同城兩個雙活數(shù)據(jù)中心,仲裁節(jié)點三機房部署;異地災(zāi)備單獨啟實例與本地實例進行數(shù)據(jù)庫間同步,也可以將本地備份文件 T+1 恢復(fù)到異地災(zāi)備。
數(shù)據(jù)一致性
分布式數(shù)據(jù)庫大多都是通過獲取全局時鐘時間戳,采用二階段提交,可以實現(xiàn)一致性的保證,分庫分表架構(gòu)對于事務(wù)的一致性,需要應(yīng)用層考慮,比如通過合理的分區(qū)鍵設(shè)計來規(guī)避。部分分布式數(shù)據(jù)庫對于跨節(jié)點事務(wù)目前還是實現(xiàn)的最終一致,對于全局一致性讀,一般通過引入類似全局時間戳的組件統(tǒng)一管理全局事務(wù),在數(shù)據(jù)庫選型時可以重點關(guān)注廠商對這一塊的實現(xiàn)。如果目前暫時無法提供全局一致性讀的分布式數(shù)據(jù)庫,對于要依賴分布式事務(wù)“中間狀態(tài)”的業(yè)務(wù),優(yōu)先進行業(yè)務(wù)改造進行規(guī)避,其次通過合理的數(shù)據(jù)分片設(shè)計讓其在單節(jié)點內(nèi)完成。
數(shù)據(jù)分析
分布式數(shù)據(jù)庫,大多采用存算分離架構(gòu)。針對數(shù)據(jù)分析場景,需要對數(shù)據(jù)從下層存儲節(jié)點上移到計算節(jié)點,這對分布式數(shù)據(jù)庫提出了更高的要求。一方面可通過算子下推等技術(shù),減少需傳輸?shù)接嬎愎?jié)點的數(shù)量;一方面針對匯聚后的結(jié)果需要通過流式處理等方式,規(guī)避諸如 OOM 的問題;此外也可采用如 MPP 等并行處理技術(shù),加速數(shù)據(jù)分析過程。
選型過程問題痛點分析
在選型過程中,會遇到來自以下幾方面的痛點:
由于分布式數(shù)據(jù)庫整體架構(gòu)還比較新,也是近十年來逐步發(fā)展完善的。針對新型架構(gòu)的諸多特點,包括廠商和用戶還都在不斷摸索積累之中,還需要有個長期實踐的過程。此外,新架構(gòu)也需要有個逐步成熟完善的過程。
大量產(chǎn)品來自國內(nèi)數(shù)據(jù)庫廠商,其發(fā)展周期相對較短,還需要在產(chǎn)品成熟度、穩(wěn)定性、周邊生態(tài)等方面不斷完善。對于用戶來說,一方面需面臨產(chǎn)品多、技術(shù)棧多的現(xiàn)狀;另一方面還需面對成熟度不足等問題,存在較多痛點。
近些年金融行業(yè)發(fā)展迅速,各種新的業(yè)態(tài)產(chǎn)品不斷涌現(xiàn),這些對作為底層數(shù)據(jù)基礎(chǔ)的數(shù)據(jù)庫也提出了更高的要求。
數(shù)據(jù)庫選型技術(shù)架構(gòu)
分布式路線分析
針對分布式數(shù)據(jù)庫的發(fā)展路線,大體可分為兩種:
分布式中間件
這種架構(gòu)是從中間件路線演進而來。其采用存儲與計算分離架構(gòu),底層采用標準單機數(shù)據(jù)庫,副本間基于數(shù)據(jù)庫主從復(fù)制機制。上層承擔計算,并可將部分計算下推到存儲節(jié)點執(zhí)行。這種架構(gòu)在分布式事務(wù)、全局 MVCC 等方面,往往存在一定難點,各廠商也有各自解決之道。
原生分布式
這種架構(gòu)正是受到 Google 論文影響演進而來。其采用存儲與計算分離架構(gòu),底層采用單機庫(不一定是關(guān)系型),副本間采用分布式一致性協(xié)議完成復(fù)制,支持多數(shù)派提交。上層承擔計算,并可將部分計算下推到存儲節(jié)點執(zhí)行。
重點需求滿足情況
針對上述遇到的痛點,兩類產(chǎn)品實現(xiàn)邏輯也所有不同:
路線場景分析
從數(shù)據(jù)使用場景來講,可大致按下面進行劃分:
針對不同的場景,不同分布式數(shù)據(jù)庫路線產(chǎn)品各有所長:
針對事務(wù)類場景下,強調(diào)高并發(fā)聯(lián)機交易、對分析能力要求不高的場景比較適合分布式中間件路線產(chǎn)品。
針對事務(wù)類及事務(wù)/分析混合類場景,既要滿足常規(guī)聯(lián)機交易場景的同時,還需滿足分析類的一部分能力,這種情況比較適合原生分布式產(chǎn)品?;谠植际降?HTAP 數(shù)據(jù)庫,用一個數(shù)據(jù)平臺應(yīng)對規(guī)?;灰缀蛯崟r分析,提升業(yè)務(wù)決策的時效性,降低數(shù)據(jù)技術(shù)棧的復(fù)雜性,越來越多的混合負載需求推動了 HTAP 在金融場景的落地。
金融業(yè) HTAP 應(yīng)用場景實踐
金融場景下 HTAP 的分析
在金融企業(yè)數(shù)字化轉(zhuǎn)型的過程中,各類業(yè)務(wù)對“海量、實時、在線”的數(shù)據(jù)需求變得愈發(fā)迫切。在金融企業(yè)運營場景中,實時推薦、精準營銷是企業(yè)提升競爭力的一大因素。在企業(yè)風(fēng)險控制場景中,實時風(fēng)控、反欺詐等業(yè)務(wù)開展可以更早地識別和阻斷風(fēng)險可以讓企業(yè)減少損失,HTAP 正是基于上述背景誕生出的需求,為各類實時數(shù)據(jù)處理需求提供了解決方案。
某金融用戶 HTAP 的架構(gòu)設(shè)計和實踐
隨著金融市場同業(yè)業(yè)務(wù)的蓬勃發(fā)展,業(yè)務(wù)部門對于交易數(shù)據(jù)的實時統(tǒng)計分析和展現(xiàn)有了急切的需求。基于大數(shù)據(jù)技術(shù)棧的 T+1 報表模式,已無法滿足業(yè)務(wù)部門通過實時分析交易發(fā)生情況來防范風(fēng)險以及提供決策的需求,迫切的需要找到一種能讓數(shù)據(jù)實時變現(xiàn)的解決方案。結(jié)合金融行業(yè)特點,在技術(shù)選型過程中,重點考察待選產(chǎn)品如下能力:包括承載業(yè)務(wù)復(fù)雜查詢處理、海量數(shù)據(jù)容量存儲、應(yīng)用透明無侵入、開發(fā)協(xié)議可適配及混合負載下的表現(xiàn)等。經(jīng)過測試,選擇 TiDB 作為基礎(chǔ)數(shù)據(jù)庫平臺,基于其 HTAP 的特性,打造金融市場實時數(shù)據(jù)平臺,目前已投產(chǎn)了靈活報表和交易對手分析等應(yīng)用場景。整個處理流程包括:
·Flink 消費交易系統(tǒng)產(chǎn)生的實時增量數(shù)據(jù),對部分事實表進行拉寬處理并寫入 TiDB
·維表和其他明細表直接寫入 TiDB
·BI 工具直接連接 TiDB,提供秒級的實時計算和分析能力
這一案例中,構(gòu)建千萬及以上數(shù)據(jù)規(guī)模、超過五張表的復(fù)雜關(guān)聯(lián)實時查詢能力,讓業(yè)務(wù)人員在極短的時間內(nèi)(大部分報表執(zhí)行時間為幾十到幾百毫秒、個別報表秒級別)獲得實時交易的詳情。
未來 HTAP 的場景發(fā)展
實時數(shù)據(jù)處理技術(shù)還以某些具體的應(yīng)用場景為主,從現(xiàn)狀來看以事件驅(qū)動類、流式管道數(shù)據(jù)計算類為代表的場景,已經(jīng)開始使用 HTAP 場景的。未來隨著 HTAP 計算能力進一步的提升,實時全量數(shù)據(jù)的計算將帶來更多場景。
面向未來的架構(gòu)趨勢
云原生
從未來的發(fā)展趨勢來看,云方向是一個大的趨勢。
從上圖可見,云數(shù)據(jù)庫的發(fā)展經(jīng)歷了幾個階段,從云托管、云服務(wù)、云原生之路。
云托管,是最接近傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的部署模式。本質(zhì)是將原本部署于 IDC 機房內(nèi)物理服務(wù)器上的傳統(tǒng)數(shù)據(jù)庫軟件部署在了云主機上。這種模式下,云平臺提供諸如高可用、異地災(zāi)備、備份恢復(fù)、數(shù)據(jù)安全、SQL 審計、性能優(yōu)化和狀態(tài)監(jiān)測等企業(yè)級數(shù)據(jù)庫管理能力,用戶可減少運維投入即可享受之前同等的服務(wù)水平。
云服務(wù),之前的托管架構(gòu)中,受限于傳統(tǒng)數(shù)據(jù)庫架構(gòu)的局限,未能完全發(fā)揮云計算的優(yōu)勢。在諸如彈性擴展、高性能、高可用等方面,均有不足。到了云服務(wù)時代,充分利用云基礎(chǔ)設(shè)施的底層能力,提供定制化的數(shù)據(jù)庫產(chǎn)品。
云原生,與之前的云服務(wù)架構(gòu)不同,這一階段產(chǎn)品將更為充分地利用云基礎(chǔ)設(shè)施的能力,通過多層資源解耦,可享受云帶來的彈性擴展、按需供給、超大規(guī)模能力,真正做到了數(shù)據(jù)庫與云的深度結(jié)合。從長期來看,金融機構(gòu)逐漸把業(yè)務(wù)和技術(shù)向云原生演進,實現(xiàn)傳統(tǒng)應(yīng)用遷移上云和云原生改造是重要的方向。在這個過程中需要考慮分布式數(shù)據(jù)庫對 K8s、微服務(wù)應(yīng)用的支持,提供高效、彈性調(diào)度能力,同時需要兼顧開發(fā)運維和敏捷度。
多云方向
云作為未來主流的資源供給方式,多云必然是企業(yè)不得不考慮的問題。多云通常指金融機構(gòu)同時采用多種不同的云環(huán)境組合來滿足業(yè)務(wù)需求的多樣性和金融業(yè)監(jiān)管的要求。如何圍繞數(shù)據(jù)打造面向未來的多云 IT 架構(gòu),滿足在多云之間提供數(shù)據(jù)服務(wù)能力,擺脫單一供應(yīng)商的弊端,是必須考慮的問題。多云架構(gòu)對分布式數(shù)據(jù)庫的考察重點聚焦于跨地域、跨公有私有云、跨本地 IDC 和 K8s 的部署、服務(wù)提供與統(tǒng)一運維能力等。
(免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )