淺析分散式資料庫的技術框架及其在金融行業中的應用規劃
【作者】範永清,系統架構師,現就職於廈門銀行資訊科技部,目前主要負責廈門銀行技術架構設計。
一、前言
早期銀行業務系統處理的主要是交易型資料,資料量較少,傳統關係型資料庫(如SQL Server、Oracel、DB2等)已足夠應對。隨著網際網路金融業務的快速發展,業務系統需要處理的資料呈爆炸式增長,傳統資料庫因其擴充套件能力有限,已無法滿足業務系統越來越高的資料處理能力要求。於是,新型的分散式資料庫系統應運而生。
本文擬先對資料庫進行分類,瞭解各類資料庫的特點,參考人行的分散式資料庫技術架構規範,並結合業界主流分散式資料庫的技術實現,試圖梳理出通用技術框架,並根據各功能模組的主要技術特點,結合業務場景,提出分散式資料庫系統在金融領域的應用規劃,供大家參考。
二、資料庫的分類
為了更高效地瞭解不同廠商分散式資料庫的產品特點,我們需要對資料庫產品進行分類。業界對資料庫的分類尚未形成統一的標準,但都大同小異,本文資料庫分類參考了451 Group分析報告中的《資料庫行業全景圖》。
資料庫根據其資料模型,可分為關係型資料庫(RDBMS)和非關係型資料庫(NoSQL)。其中,關係型資料庫根據其技術特性,分為傳統關係型資料庫和NewSQL資料庫;根據業務負載特徵,可分為OLTP資料庫和OLAP資料庫。
根據部署架構,可分為集中式資料庫和分散式資料庫。其中NoSQL資料庫與NewSQL資料庫均為分散式資料庫。
各類資料庫的特性描述如下:
1、關係型資料庫與非關係型資料庫
關係型資料庫(RDBMS)即SQL資料庫,支援SQL操作,具備ACID屬性,用於處理儲存結構化資料,包括傳統關係型資料庫與NewSQL資料庫。
非關係型資料庫,通常為NoSQL資料庫。NoSQL(Not Only SQL)即“不僅僅是SQL”,提倡運用非關係型的、分散式的資料儲存系統,通常以犧牲複雜SQL、ACID 事務支援和資料的一致性為代價,以此換取彈性擴充套件能力。常用的NoSQL資料庫有基於鍵值(Key-Value)的,如 levelDB、Rocks DB、redis等;基於列儲存的,如:Bigtable、HBASE等;基於文件的,如:MangoDB;其他如基於圖的Neo4j,基於時間序列資料的InfluxDB等。
2、傳統關係型資料庫與NewSQL資料庫
傳統關係型資料庫與NewSQL資料庫均屬於關係型資料庫。早期使用的關係型資料庫是傳統關係型資料庫,擴充套件能力有限,如商業軟體Oracle、DB2,開源軟體MySQL、PostgreSQL等。
NewSQL資料庫為應對爆炸式增長的資料需求而生。採用分散式技術,支援SQL操作,滿足ACID屬性,同時具備良好的擴充套件能力,如Cockroach DB、Google Spanner/F1、TiDB、OceanBase等。
3、OLTP資料庫與OLAP資料庫
OLTP(On-line Transaction Processing 聯機事務處理)資料庫,適用於事務管理型系統,該類系統處理的是高併發且資料量級不大的交易,如INSERT, UPDATE, DELETE等。OLTP是傳統關係型資料庫的主要應用。
OLAP(On-line Analytical Processing聯機分析處理)資料庫,適用於查詢頻率較低,但通常會涉及到非常複雜的聚合計算的系統。該類系統需要進行復雜的分析操作,側重決策支援,並且提供直觀易懂的查詢結果。如資料倉儲,風險預警等。
4、集中式資料庫與分散式資料庫
集中式資料庫將資料在物理空間上集中儲存和處理,是一種較為經典、傳統的架構模式;
分散式資料庫是物理上分散而邏輯上集中的資料庫系統,利用分散式事務處理、資料自動分片、資料多副本儲存等技術,將分散在計算機網路的多個邏輯相關節點連線起來,共同對外提供服務。
NewSQL資料庫與NoSQL資料庫採用分散式部署,均為分散式資料庫。
5、資料庫分類示意圖:
三、分散式資料庫的技術框架
就分散式資料庫的技術框架而言,可分為計算模組、儲存模組和管理模組。各模組的技術框架介紹如下:
(一)計算模組
計算模組包括介面層、解析層和計算層。
1、介面層
介面層負責介面呼叫,是分散式資料庫對外提供服務的統一介面,可提供包括SQL介面、JDBC/ODBC以及其他驅動等方式的接入。
2、解析層
解析層包括解析器、最佳化器,負責解析資料庫收到的指令,(包括SQL語句和其他指令),同時對解析結果進行最佳化,生成執行計劃,並將指令與計劃自動分配到各計算節點並行執行。
在解析層中,我們需要關注產品對SQL的相容性,以及對儲存過程的支援情況
3、計算層
計算層負責資源管理,確定計算框架,採用合適的通訊協議,透過分散式事務處理等技術確保資料正確性,藉助併發控制、動態資源分配等技術提升分散式資料庫在複雜業務場景的計算效率,同時保證整體系統的可靠性。各模組功能如下:
- 資源管理
主要負責計算資源的管理,包括CPU、記憶體的排程,磁碟I/O管理、動態資源分配等。
合理的資源管理設計,能最大程度發揮計算資源的效率,提升分散式資料庫在複雜業務場景的計算效率。
- 計算框架
分散式資料庫通常採用MPP計算框架,實現平行計算的能力。
MPP(Massively Parallel Processing),大規模並行處理。MPP先對資料進行分塊, 交給不同節點儲存。查詢時,各資料塊利用所在節點的計算資源分別處理, 然後彙總到leader node進行合併。
MPP 有shared everything /Disk / Nothing三種型別。
- 負載管理
包括資源管控、租戶隔離、租戶的SLA、併發控制等等,合理的負載管理,能有效隔不同資料庫租戶之間的相互影響,確保租戶獲得需要的SLA。
- 通訊管理
分散式資料庫網路中,傳輸層通常可採用TCP/UDP協議,鏈路層可採用Ethernet/RDMA協議。
RDMA(Remote Direct Memory Access 遠端直接記憶體訪問),是為解決網路傳輸中伺服器端資料處理的延遲而產生的。其特點是:資料可透過網路與遠端伺服器間直接進行資料傳輸,不需要核心參與,從而減少了資料的額外移動和複製,有效提高了資料庫效能。
RDMA有三種實現方式:Infiniband、RoCE、iWARP。
- 分散式事務管理
分散式資料庫同常採用二階段提交(2PC)來保證分散式事務的ACID屬性。
為了實現併發訪問控制,分散式資料庫需支援分散式事務的隔離性,以解決併發事務執行過程中存在的髒讀、不可重複讀、幻讀等問題。支援的隔離級別包括:已提交讀、可重複讀、序列化;
分散式資料庫需具備鎖的管控能力,包括鎖的型別、鎖的級別、鎖的互斥、死鎖處理等。
在實際技術實現時,計算層和儲存層都需要實現分散式事務處理。
- 可靠性管理
可靠性管理包括服務的高可用和資料的高可用。
服務高可用主要從部署架構方面考慮,如採用的是叢集、還是主備部署,並從機房、機櫃、供電、佈線層面,保證基礎設施的高可用。
資料的高可用主要針對資料副本的管理,包括副本資料的複製技術(如流複製、塊複製和WAL重構)和資料的一致性管理(強一致性和最終一致性)。
資料的三種複製技術採用的實現方式不同:
流複製。包括操作日誌與SQL語句,透過重放操作,實現資料副本的複製。塊複製。透過資料塊的複製,實現資料副本的複製。
常用的資料一致性技術有Paxos、Raft。
WAL重構,定期進行快照複製,並實時複製快照之後的操作日誌,當需要資料恢復時,可用過快照+日誌的方式,將資料恢復到最新狀態。WAL重構常用於資料的災備。
在實際技術實現時,計算層和儲存層都需要可靠性管理。其中,服務高可用在計算層和儲存層上都要關注,而資料的高可用主要在儲存層上實現。
(二)儲存模組
儲存層屬於儲存模組,包括資料儲存組織管理和日誌組織管理。資料儲存組織管理包括資料分片/分割槽策略、資料更新機制、資料儲存結構、索引管理、資料物理結構等;日誌組織管理包括日誌型別和日誌的歸檔方式等。無論是資料還是日誌,最終儲存在物理介質上,儲存介質可以是本地磁碟或外部儲存。各模組功能如下:
1、資料儲存組織管理
- 資料分片/分割槽管理
資料的切分有兩個維度:水平分片和垂直分割槽。
水平分片,按照一定的規則,將資料集劃分成相互獨立、正交的資料子集後,再將資料子集分佈到不同的分片節點上。常見的資料分片策略有Hash、Roundrobin兩種方式
垂直分割槽,分片後的資料,按照一定的規則進行切分,再根據分割槽策略,將資料分佈在分片叢集內的各儲存單元上。常見的分割槽策略有一致性Hash/一致性Hash、range和list三種方式。
- 資料更新機制
資料在磁碟的組織和更新方式有兩種方式:In-place、Append-only
In-place,資料更新時,直接對記憶體緩衝區中的資料進行修改,然後重新整理到磁碟上,完成資料的更新操作。Append-only,資料更新時,將新的資料直接追加到記憶體檔案上,(而不對原來的資料進行修改),並定期儲存在磁碟上。
- 資料儲存結構
儲存上,資料可以以“行存”、“列存”、“KV”、“文件”、“圖”和“序列”等方式組織儲存,不同的資料儲存組織適用於不同的業務型別。
邏輯上,資料可以以“庫/表/記錄”的方式組織,如Oracle、DB2等傳統關係型資料庫;也可以以“庫/集合/文件”的方式組織,如MangoDB;或以“檔案”的方式組織,如RocksDB等。
常用的儲存演算法有B+樹,LSM和Hash。
資料最終組織成頁或LOB塊的方式,儲存到檔案系統中。
- 索引管理
索引的型別有文字、點陣圖、倒排等,各種索引的特點如下:
倒排索引,也叫反向索引(inverted index)。是實現“單詞-文件矩陣”的一種具體儲存形式,透過倒排索引,可以根據單詞快速獲取包含這個單詞的文件列表。倒排索引主要由兩個部分組成:“單詞詞典”和“倒排檔案”。單詞詞典常用的資料結構包括雜湊加連結串列結構和樹形結構
文字索引支援對字串內容的全文檢索查詢。文字索引可以包含字串或字串元素陣列。一個集合有且只能有一個文字索引,但是該索引可以包含多個欄位。
點陣圖索引是一種使用點陣圖的特殊資料庫索引。主要針對大量相同值的列而建立,索引塊的一個索引行中儲存鍵值和起止Rowid,以及這些鍵值的位置編碼,位置編碼中的每一位表示鍵值對應的資料行的有無。
2、日誌組織管理
- 日誌型別
常用的日誌型別有redo、undo等。
redo log,重做日誌,也是預寫日誌,記錄了資料的建立和修改,提供前滾操作,防止故障時的資料丟失,用來保證事務安全。
undo log,回滾日誌,記錄的是如何還原修改,提供回滾操作,同時提供MVCC,undo log也會產生redo log,
- 日誌歸檔方式
日誌可以有歸檔和未歸檔兩種方式。
未歸檔模式,不保留重做歷史的日誌操作模式,只能夠用於保護例程失敗,而不能夠保護介質損壞;
歸檔模式,指保留重做日誌歷史的日誌操作模式。這種日誌操作模式不僅可用於保護例程失敗,還可以用於保護介質損壞的情況。
3、儲存介質
儲存介質可以是本地磁碟,也可以是外部集中式儲存或分散式儲存。如採用本地磁碟,需利用複製技術,如raft或Paxos協議,實現多副本儲存,以保證資料的可用性。如採用外部儲存,則資料的可用性由外部儲存保證。
(三)管理模組
管理模組負責分散式資料庫的運維和管理,提供資料庫引數配置和執行監控介面,通用要求包括自動化部署、擴縮容、視覺化、多租戶等;維護要求方面包括自動告警、版本升級、狀態監控、效能監控、系統日誌、系統配置、故障的隔離、自愈等,資料管理部分包括匯入匯出、資料同步、資料遷移、備份恢復等;容災管理方面包括雙活/多活、讀寫分離、主備三種模式。
分散式資料庫的技術框架如下圖所示:
四、各類分散式資料庫的典型架構
NoSQL資料庫和NewSQL資料庫均為分散式資料庫,其中,NewSQL資料庫有兩大類:分庫分表的資料庫訪問中介軟體和原生分散式資料庫。
(一)NoSQL資料庫
NoSQL資料庫通常有三大元件:協調節點、資料節點和配置節點,各元件的功能如下:
協調節點。在叢集中可作為閘道器使用,提供客戶端應用程式和資料節點叢集之間的外部API介面,或簡單的SQL支援,負責語法解析、最佳化,形成執行計劃,下壓給資料節點執行,負責資料分片和聚合,記錄後設資料到配置節點,或從配置節點讀取後設資料。
配置節點。用於儲存叢集的配置資訊和資料分片的後設資料資訊等。
資料節點。負責分片資料的實際儲存和管理。資料可儲存在本地磁碟或分散式儲存,採用多副本方式保證資料的可靠性;如採用本地儲存,副本間的資料一致性採用Paxos或raft,如採用分散式儲存,由分散式儲存保證副本間的資料一致。
協調節點實現介面層、解析層、計算層的相關能力,資料節點實現儲存層的相關能力(具體能力和關鍵技術見上一章節)。
(二)NewSQL資料庫
業界常用的NewSQL資料庫有兩種技術路線:分庫分表的資料庫訪問中介軟體方式和原生分散式資料庫方式。
1、分庫分表的資料庫訪問中介軟體模式
分庫分表的資料庫訪問中介軟體方式由中介軟體和傳統關係型資料庫共同組成。傳統關係型資料庫天然具備良好的ACID屬性,透過資料庫訪問中介軟體進行分庫分表,滿足資料庫的擴充套件性要求。應用系統在訪問資料庫時,首先訪問資料庫中介軟體,由中介軟體根據規則,將資料分散到多個庫/表中進行儲存,查詢時,再將多個庫/表的資料聚合在一起,返回給應用。目前,資料庫訪問中介軟體大都以相容MySQL為主。其典型架構如下:
在上述架構中,資料庫訪問中介軟體實現介面層、解析層、計算層的相關能力,傳統關係型資料庫(如MySQL)實現儲存層的相關能力。
資料儲存在儲存層中,資料的可用性和可靠性由分片資料庫叢集保證(每個分片資料庫叢集可以是一個資料庫高可用叢集,如MySQL的MGR、Oracle的RAC等)。
資料庫訪問中介軟體本身不儲存資料,只做資料的分片、路由。
2、原生分散式資料庫模式
原生分散式資料庫對資料庫系統進行重構,原生支援分散式事務處理與資料切分,主要由SQL層和儲存引擎層兩部分組成。其中,SQL層為客戶端提供介面服務,並負責SQL語句的解析、最佳化,生成執行計劃,下發到資料庫儲存引擎層執行,SQL層不儲存資料。
資料庫儲存引擎層負責資料的分片和聚合,記錄後設資料,並將資料儲存到本地磁碟或外部儲存,資料儲存採用多副本方式。如採用本地儲存,副本間的資料一致性採用Paxos或raft,如採用分散式儲存,由分散式儲存保證副本間的資料一致。典型架構圖如下所示:
各廠商在對資料庫系統進行重構時,側重點有所不同:有的側重SQL層的重構,而儲存引擎採用開源的資料庫儲存引擎,如TiDB;有的產商則側重儲存引擎層的重構,而SQL層採用開源資料庫,如SequoiaDB。
3、兩種技術路線NewSQL資料庫比較
五、分散式資料庫的應用規劃
1、資料的分類
資料按其組織結構,可分為結構化資料、半結構化資料和非結構化資料。各類資料的特點如下:
結構化資料,也稱行資料,是由二維表結構來邏輯表達和實現的資料,嚴格遵循資料格式與長度規範,資料處理時效性要求較高,通常採用OLTP資料庫儲存和管理。如所要處理的資料量小,資料增長速度慢,可選用傳統關係型資料庫(RDBMS)處理,如所需處理的資料量大,資料增長速度快,可選用NewSQL資料庫處理;
非結構化資料,不宜採用關係型資料庫來處理的資料,如各類圖片、音訊、影片等。建立和管理資料項時,通常採用多值欄位和變長欄位,廣泛應用於全文檢索和各種多媒體資訊處理領域。該類資料量大、資料增長速度快,但對時效性要求相對較低。通常選用OLAP資料庫或hadoop等大資料平臺儲存和管理。
半結構化資料,不同於結構化資料和非結構化資料,它形式上是結構化的資料,但結構變化很大,如各種格式的辦公文件、XML、HTML、Json等。當我們要了解資料的細節時,就不能將資料簡單的組織成一個檔案,而是要做結構化處理。但因為結構變化很大,又不能簡單地建立一個表和他對應。半結構化資料通常採用OLAP資料庫儲存和管理。
2、應用系統的分類與特點
應用系統按其所處理的業務特點,可分為交易類系統、支撐類系統、渠道類系統、管理類系統和分析類系統,其中分析類系統可分為聯機分析類系統和離線分析類系統,各類系統特點如下:
交易類系統:為客戶提供銀行業務,面對的是銀行客戶,是銀行的主要業務系統。如核心系統、信貸、信用卡、支付類系統、理財業務、資金業務、特色業務等;
支撐類系統:該類系統用於支撐銀行其他系統的執行,如ESB、交換、排程、外聯等;
渠道類系統:該類系統為客戶提供使用渠道,如櫃面、ATM、網銀、手機銀行等系統,渠道類系統有傳統渠道和網際網路渠道;
管理類系統:為銀行內部使用者提供管理功能,面對的是銀行內部員工,如OA、績效、人力、財務管理等。
上述系統所處理的主要是結構化資料。
聯機分析類系統:該類系統為銀行的業務、決策、合規等提供資料支援,如風險管理、線上決策支援、反洗錢、關聯交易分析等。該類系統處理的資料有結構化資料和半結構化資料。其中結構化資料主要為後設資料,半結構化提供業務分析
離線分析類系統:主要用於離線分析,如大資料平臺、基礎資料平臺等。所處理的多為半結構化資料和非結構化資料
3、應用系統的資料庫規劃
六、關於分散式資料庫的選型思考
在進行分散式資料庫選型時,我們既要考慮到傳統技術的相容性和新技術的前瞻性。
在傳統技術的相容性方面,既要滿足傳統關係型資料庫的ACID要求,還要考慮對SQL的完整支援,儘量對應用無感知。
在新技術前瞻性方面,要考慮到資料庫的擴充套件能力,能根據業務需求,支援系統的平滑升級與擴容;根據業務場景,選擇合適資料庫,在此基礎下,進行適當創新:要求所選擇的資料庫能支援複雜的業務場景,儘量做到同個資料庫平臺既支援OLTP應用,又支援OLAP應用,打破資料的孤島效應;支援多模和多租戶模式,讓同個資料庫平臺能支援多種應用場景,同時簡化資料庫的運維;
適配性方面,能支援多種作業系統和多種程式語言,並適配多種硬體平臺(如 X86、ARM、MIPS 等架構);此外,還有考慮到多租戶隔離的有效性,併為不同使用者提供不同的SLA服務。
七、結束語
分散式資料庫是近幾年發展的新技術,率先應用在網際網路行業,因此成熟案例較多,但在金融行業的應用尚處起步階段,成熟案例相對較少。如何根據金融行業的業務特點,結合分散式資料庫技術,選擇合適的分散式資料庫產品,是目前產商和銀行IT人員共同需要考慮的問題,本文拋磚引玉,希望對大家有所幫助。
參考文獻:
[1] 人民銀行.《分散式資料庫技術金融應用規範技術架構》
[2] 楊冬青 李紅燕 唐世渭等譯.資料庫系統概念.機械工業出版社
[3] 周立柱 範 舉 吳 昊等譯.分散式資料庫系統原理.清華大學出版社
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994525/viewspace-2768821/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料分析在金融行業中的應用行業
- LLVM技術在GaussDB等資料庫中的應用LVM資料庫
- 搞懂分散式技術17:淺析分散式事務分散式
- RPC 技術及其框架 Sekiro 在爬蟲逆向中的應用,加密資料一把梭!RPC框架爬蟲加密
- 聊聊Oracle的分散式資料庫技術Oracle分散式資料庫
- 淺析WebRTC技術在智慧園區影片管理場景中的應用Web
- 悅數圖資料庫 | 圖技術在金融風控中的應用選型建議資料庫
- 面向金融業的分散式交易型資料庫關鍵技術及發展探討分散式資料庫
- 淺析大模型在銀行業客服中心的應用大模型行業
- Java技術在多資料庫系統中的應用研究Java資料庫
- 淺析RunLoop原理及其應用OOP
- 分散式資料庫 ZNBase 的分散式計劃生成分散式資料庫
- 雲流化技術在汽車行業中的應用行業
- 資料標籤與指標在金融行業的應用指標行業
- 分散式賬本技術的應用分散式
- 淺談資料庫防火牆技術及應用資料庫防火牆
- 為資料賦能:騰訊TDSQL分散式金融級資料庫前沿技術SQL分散式資料庫
- 分散式資料庫技術論壇分散式資料庫
- TiDB 分散式資料庫在轉轉公司的應用實踐TiDB分散式資料庫
- 淺析Java Web框架技術JavaWeb框架
- chatGPT在金融行業的應用前景ChatGPT行業
- 人工智慧技術在24個行業中的應用人工智慧行業
- 時間輪原理及其在框架中的應用框架
- 探秘資料庫中的平行計算技術應用資料庫
- 分散式賬本技術的應用(二)分散式
- 淺談深度學習的技術原理及其在計算機視覺的應用深度學習計算機視覺
- 國產資料庫在金融業應用現狀如何?資料庫
- 民生銀行牛新莊:大資料及分散式技術在銀行系統中實踐應用大資料分散式
- 騰訊雲分散式資料庫TDSQL在銀行傳統核心系統中的應用實踐分散式資料庫SQL
- 分享:CUDB for OceanBase分散式資料庫產品規模應用分散式資料庫
- 真正硬核分散式資料庫:開發分散式SQL資料庫的6種技術挑戰 - YugaByte分散式資料庫SQL
- 圖資料庫在中國移動金融風控的落地應用資料庫
- LLM大模型向量資料庫技術架構淺析大模型資料庫架構
- 大資料技術在電商的應用大資料
- 區塊鏈技術在金融領域的應用區塊鏈
- 在Linux中,如何進行容器技術的應用?Linux
- JSON資料格式及其在WEB開發中的應用JSONWeb
- 分散式資料庫技術的演進和發展方向分散式資料庫