淺析分布式數(shù)據(jù)庫的技術(shù)框架及其在金融行業(yè)中的應(yīng)用規(guī)劃

隨著互聯(lián)網(wǎng)金融業(yè)務(wù)的快速發(fā)展,業(yè)務(wù)系統(tǒng)需要處理的數(shù)據(jù)呈爆炸式增長,傳統(tǒng)數(shù)據(jù)庫因其擴(kuò)展能力有限,已無法滿足業(yè)務(wù)系統(tǒng)越來越高的數(shù)據(jù)處理能力要求。于是,新型的分布式數(shù)據(jù)庫系統(tǒng)應(yīng)運(yùn)而生。

一、前言

早期銀行業(yè)務(wù)系統(tǒng)處理的主要是交易型數(shù)據(jù),數(shù)據(jù)量較少,傳統(tǒng)關(guān)系型數(shù)據(jù)庫(如SQL Server、Oracel、DB2等)已足夠應(yīng)對。隨著互聯(lián)網(wǎng)金融業(yè)務(wù)的快速發(fā)展,業(yè)務(wù)系統(tǒng)需要處理的數(shù)據(jù)呈爆炸式增長,傳統(tǒng)數(shù)據(jù)庫因其擴(kuò)展能力有限,已無法滿足業(yè)務(wù)系統(tǒng)越來越高的數(shù)據(jù)處理能力要求。于是,新型的分布式數(shù)據(jù)庫系統(tǒng)應(yīng)運(yùn)而生。

本文擬先對數(shù)據(jù)庫進(jìn)行分類,了解各類數(shù)據(jù)庫的特點,參考人行的分布式數(shù)據(jù)庫技術(shù)架構(gòu)規(guī)范,并結(jié)合業(yè)界主流分布式數(shù)據(jù)庫的技術(shù)實現(xiàn),試圖梳理出通用技術(shù)框架,并根據(jù)各功能模塊的主要技術(shù)特點,結(jié)合業(yè)務(wù)場景,提出分布式數(shù)據(jù)庫系統(tǒng)在金融領(lǐng)域的應(yīng)用規(guī)劃,供大家參考。

二、數(shù)據(jù)庫的分類

為了更高效地了解不同廠商分布式數(shù)據(jù)庫的產(chǎn)品特點,我們需要對數(shù)據(jù)庫產(chǎn)品進(jìn)行分類。業(yè)界對數(shù)據(jù)庫的分類尚未形成統(tǒng)一的標(biāo)準(zhǔn),但都大同小異,本文數(shù)據(jù)庫分類參考了451 Group分析報告中的《數(shù)據(jù)庫行業(yè)全景圖》。

數(shù)據(jù)庫根據(jù)其數(shù)據(jù)模型,可分為關(guān)系型數(shù)據(jù)庫(RDBMS)和非關(guān)系型數(shù)據(jù)庫(NoSQL)。其中,關(guān)系型數(shù)據(jù)庫根據(jù)其技術(shù)特性,分為傳統(tǒng)關(guān)系型數(shù)據(jù)庫和NewSQL數(shù)據(jù)庫;根據(jù)業(yè)務(wù)負(fù)載特征,可分為OLTP數(shù)據(jù)庫和OLAP數(shù)據(jù)庫。

根據(jù)部署架構(gòu),可分為集中式數(shù)據(jù)庫和分布式數(shù)據(jù)庫。其中NoSQL數(shù)據(jù)庫與NewSQL數(shù)據(jù)庫均為分布式數(shù)據(jù)庫。

各類數(shù)據(jù)庫的特性描述如下:

1、關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫

關(guān)系型數(shù)據(jù)庫(RDBMS)即SQL數(shù)據(jù)庫,支持SQL操作,具備ACID屬性,用于處理存儲結(jié)構(gòu)化數(shù)據(jù),包括傳統(tǒng)關(guān)系型數(shù)據(jù)庫與NewSQL數(shù)據(jù)庫。

非關(guān)系型數(shù)據(jù)庫,通常為NoSQL數(shù)據(jù)庫。NoSQL(Not Only SQL)即“不僅僅是SQL”,提倡運(yùn)用非關(guān)系型的、分布式的數(shù)據(jù)存儲系統(tǒng),通常以犧牲復(fù)雜SQL、ACID事務(wù)支持和數(shù)據(jù)的一致性為代價,以此換取彈性擴(kuò)展能力。常用的NoSQL數(shù)據(jù)庫有基于鍵值(Key-Value)的,如levelDB、Rocks DB、redis等;基于列存儲的,如:Bigtable、HBASE等;基于文檔的,如:MangoDB;其他如基于圖的Neo4j,基于時間序列數(shù)據(jù)的InfluxDB等。

2、傳統(tǒng)關(guān)系型數(shù)據(jù)庫與NewSQL數(shù)據(jù)庫

傳統(tǒng)關(guān)系型數(shù)據(jù)庫與NewSQL數(shù)據(jù)庫均屬于關(guān)系型數(shù)據(jù)庫。早期使用的關(guān)系型數(shù)據(jù)庫是傳統(tǒng)關(guān)系型數(shù)據(jù)庫,擴(kuò)展能力有限,如商業(yè)軟件Oracle、DB2,開源軟件MySQL、PostgreSQL等。

NewSQL數(shù)據(jù)庫為應(yīng)對爆炸式增長的數(shù)據(jù)需求而生。采用分布式技術(shù),支持SQL操作,滿足ACID屬性,同時具備良好的擴(kuò)展能力,如Cockroach DB、Google Spanner/F1、TiDB、OceanBase等。

3、OLTP數(shù)據(jù)庫與OLAP數(shù)據(jù)庫

OLTP(On-line Transaction Processing聯(lián)機(jī)事務(wù)處理)數(shù)據(jù)庫,適用于事務(wù)管理型系統(tǒng),該類系統(tǒng)處理的是高并發(fā)且數(shù)據(jù)量級不大的交易,如INSERT,UPDATE,DELETE等。OLTP是傳統(tǒng)關(guān)系型數(shù)據(jù)庫的主要應(yīng)用。

OLAP(On-line Analytical Processing聯(lián)機(jī)分析處理)數(shù)據(jù)庫,適用于查詢頻率較低,但通常會涉及到非常復(fù)雜的聚合計算的系統(tǒng)。該類系統(tǒng)需要進(jìn)行復(fù)雜的分析操作,側(cè)重決策支持,并且提供直觀易懂的查詢結(jié)果。如數(shù)據(jù)倉庫,風(fēng)險預(yù)警等。

4、集中式數(shù)據(jù)庫與分布式數(shù)據(jù)庫

集中式數(shù)據(jù)庫將數(shù)據(jù)在物理空間上集中存儲和處理,是一種較為經(jīng)典、傳統(tǒng)的架構(gòu)模式;

分布式數(shù)據(jù)庫是物理上分散而邏輯上集中的數(shù)據(jù)庫系統(tǒng),利用分布式事務(wù)處理、數(shù)據(jù)自動分片、數(shù)據(jù)多副本存儲等技術(shù),將分散在計算機(jī)網(wǎng)絡(luò)的多個邏輯相關(guān)節(jié)點連接起來,共同對外提供服務(wù)。

NewSQL數(shù)據(jù)庫與NoSQL數(shù)據(jù)庫采用分布式部署,均為分布式數(shù)據(jù)庫。

5、數(shù)據(jù)庫分類示意圖:

360截圖16450626515344.png

三、分布式數(shù)據(jù)庫的技術(shù)框架

就分布式數(shù)據(jù)庫的技術(shù)框架而言,可分為計算模塊、存儲模塊和管理模塊。各模塊的技術(shù)框架介紹如下:

(一)計算模塊

計算模塊包括接口層、解析層和計算層。

1、接口層

接口層負(fù)責(zé)接口調(diào)用,是分布式數(shù)據(jù)庫對外提供服務(wù)的統(tǒng)一接口,可提供包括SQL接口、JDBC/ODBC以及其他驅(qū)動等方式的接入。

2、解析層

解析層包括解析器、優(yōu)化器,負(fù)責(zé)解析數(shù)據(jù)庫收到的指令,(包括SQL語句和其他指令),同時對解析結(jié)果進(jìn)行優(yōu)化,生成執(zhí)行計劃,并將指令與計劃自動分配到各計算節(jié)點并行執(zhí)行。

在解析層中,我們需要關(guān)注產(chǎn)品對SQL的兼容性,以及對存儲過程的支持情況

3、計算層

計算層負(fù)責(zé)資源管理,確定計算框架,采用合適的通訊協(xié)議,通過分布式事務(wù)處理等技術(shù)確保數(shù)據(jù)正確性,借助并發(fā)控制、動態(tài)資源分配等技術(shù)提升分布式數(shù)據(jù)庫在復(fù)雜業(yè)務(wù)場景的計算效率,同時保證整體系統(tǒng)的可靠性。各模塊功能如下:

-資源管理

主要負(fù)責(zé)計算資源的管理,包括CPU、內(nèi)存的調(diào)度,磁盤I/O管理、動態(tài)資源分配等。

合理的資源管理設(shè)計,能最大程度發(fā)揮計算資源的效率,提升分布式數(shù)據(jù)庫在復(fù)雜業(yè)務(wù)場景的計算效率。

-計算框架

分布式數(shù)據(jù)庫通常采用MPP計算框架,實現(xiàn)并行計算的能力。

MPP(Massively Parallel Processing),大規(guī)模并行處理。MPP先對數(shù)據(jù)進(jìn)行分塊,交給不同節(jié)點儲存。查詢時,各數(shù)據(jù)塊利用所在節(jié)點的計算資源分別處理,然后匯總到leader node進(jìn)行合并。

MPP有shared everything/Disk/Nothing三種類型。

-負(fù)載管理

包括資源管控、租戶隔離、租戶的SLA、并發(fā)控制等等,合理的負(fù)載管理,能有效隔不同數(shù)據(jù)庫租戶之間的相互影響,確保租戶獲得需要的SLA。

-通訊管理

分布式數(shù)據(jù)庫網(wǎng)絡(luò)中,傳輸層通??刹捎肨CP/UDP協(xié)議,鏈路層可采用Ethernet/RDMA協(xié)議。

RDMA(Remote Direct Memory Access遠(yuǎn)程直接內(nèi)存訪問),是為解決網(wǎng)絡(luò)傳輸中服務(wù)器端數(shù)據(jù)處理的延遲而產(chǎn)生的。其特點是:數(shù)據(jù)可通過網(wǎng)絡(luò)與遠(yuǎn)程服務(wù)器間直接進(jìn)行數(shù)據(jù)傳輸,不需要內(nèi)核參與,從而減少了數(shù)據(jù)的額外移動和復(fù)制,有效提高了數(shù)據(jù)庫性能。

RDMA有三種實現(xiàn)方式:Infiniband、RoCE、iWARP。

-分布式事務(wù)管理

分布式數(shù)據(jù)庫同常采用二階段提交(2PC)來保證分布式事務(wù)的ACID屬性。

為了實現(xiàn)并發(fā)訪問控制,分布式數(shù)據(jù)庫需支持分布式事務(wù)的隔離性,以解決并發(fā)事務(wù)執(zhí)行過程中存在的臟讀、不可重復(fù)讀、幻讀等問題。支持的隔離級別包括:已提交讀、可重復(fù)讀、串行化;

分布式數(shù)據(jù)庫需具備鎖的管控能力,包括鎖的類型、鎖的級別、鎖的互斥、死鎖處理等。

在實際技術(shù)實現(xiàn)時,計算層和存儲層都需要實現(xiàn)分布式事務(wù)處理。

-可靠性管理

可靠性管理包括服務(wù)的高可用和數(shù)據(jù)的高可用。

服務(wù)高可用主要從部署架構(gòu)方面考慮,如采用的是集群、還是主備部署,并從機(jī)房、機(jī)柜、供電、布線層面,保證基礎(chǔ)設(shè)施的高可用。

數(shù)據(jù)的高可用主要針對數(shù)據(jù)副本的管理,包括副本數(shù)據(jù)的復(fù)制技術(shù)(如流復(fù)制、塊復(fù)制和WAL重構(gòu))和數(shù)據(jù)的一致性管理(強(qiáng)一致性和最終一致性)。

數(shù)據(jù)的三種復(fù)制技術(shù)采用的實現(xiàn)方式不同:

流復(fù)制。包括操作日志與SQL語句,通過重放操作,實現(xiàn)數(shù)據(jù)副本的復(fù)制。塊復(fù)制。通過數(shù)據(jù)塊的復(fù)制,實現(xiàn)數(shù)據(jù)副本的復(fù)制。

常用的數(shù)據(jù)一致性技術(shù)有Paxos、Raft。

WAL重構(gòu),定期進(jìn)行快照復(fù)制,并實時復(fù)制快照之后的操作日志,當(dāng)需要數(shù)據(jù)恢復(fù)時,可用過快照+日志的方式,將數(shù)據(jù)恢復(fù)到最新狀態(tài)。WAL重構(gòu)常用于數(shù)據(jù)的災(zāi)備。

在實際技術(shù)實現(xiàn)時,計算層和存儲層都需要可靠性管理。其中,服務(wù)高可用在計算層和存儲層上都要關(guān)注,而數(shù)據(jù)的高可用主要在存儲層上實現(xiàn)。

(二)存儲模塊

存儲層屬于存儲模塊,包括數(shù)據(jù)存儲組織管理和日志組織管理。數(shù)據(jù)存儲組織管理包括數(shù)據(jù)分片/分區(qū)策略、數(shù)據(jù)更新機(jī)制、數(shù)據(jù)存儲結(jié)構(gòu)、索引管理、數(shù)據(jù)物理結(jié)構(gòu)等;日志組織管理包括日志類型和日志的歸檔方式等。無論是數(shù)據(jù)還是日志,最終存儲在物理介質(zhì)上,存儲介質(zhì)可以是本地磁盤或外部存儲。各模塊功能如下:

1、數(shù)據(jù)存儲組織管理

-數(shù)據(jù)分片/分區(qū)管理

數(shù)據(jù)的切分有兩個維度:水平分片和垂直分區(qū)。

水平分片,按照一定的規(guī)則,將數(shù)據(jù)集劃分成相互獨立、正交的數(shù)據(jù)子集后,再將數(shù)據(jù)子集分布到不同的分片節(jié)點上。常見的數(shù)據(jù)分片策略有Hash、Roundrobin兩種方式

垂直分區(qū),分片后的數(shù)據(jù),按照一定的規(guī)則進(jìn)行切分,再根據(jù)分區(qū)策略,將數(shù)據(jù)分布在分片集群內(nèi)的各存儲單元上。常見的分區(qū)策略有一致性Hash/一致性Hash、range和list三種方式。

-數(shù)據(jù)更新機(jī)制

數(shù)據(jù)在磁盤的組織和更新方式有兩種方式:In-place、Append-only

In-place,數(shù)據(jù)更新時,直接對內(nèi)存緩沖區(qū)中的數(shù)據(jù)進(jìn)行修改,然后刷新到磁盤上,完成數(shù)據(jù)的更新操作。Append-only,數(shù)據(jù)更新時,將新的數(shù)據(jù)直接追加到內(nèi)存文件上,(而不對原來的數(shù)據(jù)進(jìn)行修改),并定期保存在磁盤上。

-數(shù)據(jù)存儲結(jié)構(gòu)

存儲上,數(shù)據(jù)可以以“行存”、“列存”、“KV”、“文檔”、“圖”和“序列”等方式組織存儲,不同的數(shù)據(jù)存儲組織適用于不同的業(yè)務(wù)類型。

邏輯上,數(shù)據(jù)可以以“庫/表/記錄”的方式組織,如Oracle、DB2等傳統(tǒng)關(guān)系型數(shù)據(jù)庫;也可以以“庫/集合/文檔”的方式組織,如MangoDB;或以“文件”的方式組織,如RocksDB等。

常用的存儲算法有B+樹,LSM和Hash。

數(shù)據(jù)最終組織成頁或LOB塊的方式,存儲到文件系統(tǒng)中。

-索引管理

索引的類型有文本、位圖、倒排等,各種索引的特點如下:

倒排索引,也叫反向索引(inverted index)。是實現(xiàn)“單詞-文檔矩陣”的一種具體存儲形式,通過倒排索引,可以根據(jù)單詞快速獲取包含這個單詞的文檔列表。倒排索引主要由兩個部分組成:“單詞詞典”和“倒排文件”。單詞詞典常用的數(shù)據(jù)結(jié)構(gòu)包括哈希加鏈表結(jié)構(gòu)和樹形結(jié)構(gòu)

文本索引支持對字符串內(nèi)容的全文檢索查詢。文本索引可以包含字符串或字符串元素數(shù)組。一個集合有且只能有一個文本索引,但是該索引可以包含多個字段。

位圖索引是一種使用位圖的特殊數(shù)據(jù)庫索引。主要針對大量相同值的列而創(chuàng)建,索引塊的一個索引行中存儲鍵值和起止Rowid,以及這些鍵值的位置編碼,位置編碼中的每一位表示鍵值對應(yīng)的數(shù)據(jù)行的有無。

2、日志組織管理

-日志類型

常用的日志類型有redo、undo等。

redo log,重做日志,也是預(yù)寫日志,記錄了數(shù)據(jù)的創(chuàng)建和修改,提供前滾操作,防止故障時的數(shù)據(jù)丟失,用來保證事務(wù)安全。

undo log,回滾日志,記錄的是如何還原修改,提供回滾操作,同時提供MVCC,undo log也會產(chǎn)生redo log,

-日志歸檔方式

日志可以有歸檔和未歸檔兩種方式。

未歸檔模式,不保留重做歷史的日志操作模式,只能夠用于保護(hù)例程失敗,而不能夠保護(hù)介質(zhì)損壞;

歸檔模式,指保留重做日志歷史的日志操作模式。這種日志操作模式不僅可用于保護(hù)例程失敗,還可以用于保護(hù)介質(zhì)損壞的情況。

3、存儲介質(zhì)

存儲介質(zhì)可以是本地磁盤,也可以是外部集中式存儲或分布式存儲。如采用本地磁盤,需利用復(fù)制技術(shù),如raft或Paxos協(xié)議,實現(xiàn)多副本保存,以保證數(shù)據(jù)的可用性。如采用外部存儲,則數(shù)據(jù)的可用性由外部存儲保證。

(三)管理模塊

管理模塊負(fù)責(zé)分布式數(shù)據(jù)庫的運(yùn)維和管理,提供數(shù)據(jù)庫參數(shù)配置和運(yùn)行監(jiān)控接口,通用要求包括自動化部署、擴(kuò)縮容、可視化、多租戶等;維護(hù)要求方面包括自動告警、版本升級、狀態(tài)監(jiān)控、性能監(jiān)控、系統(tǒng)日志、系統(tǒng)配置、故障的隔離、自愈等,數(shù)據(jù)管理部分包括導(dǎo)入導(dǎo)出、數(shù)據(jù)同步、數(shù)據(jù)遷移、備份恢復(fù)等;容災(zāi)管理方面包括雙活/多活、讀寫分離、主備三種模式。

分布式數(shù)據(jù)庫的技術(shù)框架如下圖所示:

360截圖16450626515344.png

四、各類分布式數(shù)據(jù)庫的典型架構(gòu)

NoSQL數(shù)據(jù)庫和NewSQL數(shù)據(jù)庫均為分布式數(shù)據(jù)庫,其中,NewSQL數(shù)據(jù)庫有兩大類:分庫分表的數(shù)據(jù)庫訪問中間件和原生分布式數(shù)據(jù)庫。

(一)NoSQL數(shù)據(jù)庫

NoSQL數(shù)據(jù)庫通常有三大組件:協(xié)調(diào)節(jié)點、數(shù)據(jù)節(jié)點和配置節(jié)點,各組件的功能如下:

協(xié)調(diào)節(jié)點。在集群中可作為網(wǎng)關(guān)使用,提供客戶端應(yīng)用程序和數(shù)據(jù)節(jié)點集群之間的外部API接口,或簡單的SQL支持,負(fù)責(zé)語法解析、優(yōu)化,形成執(zhí)行計劃,下壓給數(shù)據(jù)節(jié)點執(zhí)行,負(fù)責(zé)數(shù)據(jù)分片和聚合,記錄元數(shù)據(jù)到配置節(jié)點,或從配置節(jié)點讀取元數(shù)據(jù)。

配置節(jié)點。用于保存集群的配置信息和數(shù)據(jù)分片的元數(shù)據(jù)信息等。

數(shù)據(jù)節(jié)點。負(fù)責(zé)分片數(shù)據(jù)的實際存儲和管理。數(shù)據(jù)可保存在本地磁盤或分布式存儲,采用多副本方式保證數(shù)據(jù)的可靠性;如采用本地存儲,副本間的數(shù)據(jù)一致性采用Paxos或raft,如采用分布式存儲,由分布式存儲保證副本間的數(shù)據(jù)一致。

協(xié)調(diào)節(jié)點實現(xiàn)接口層、解析層、計算層的相關(guān)能力,數(shù)據(jù)節(jié)點實現(xiàn)存儲層的相關(guān)能力(具體能力和關(guān)鍵技術(shù)見上一章節(jié))。

360截圖16450626515344.png

(二)NewSQL數(shù)據(jù)庫

業(yè)界常用的NewSQL數(shù)據(jù)庫有兩種技術(shù)路線:分庫分表的數(shù)據(jù)庫訪問中間件方式和原生分布式數(shù)據(jù)庫方式。

1、分庫分表的數(shù)據(jù)庫訪問中間件模式

分庫分表的數(shù)據(jù)庫訪問中間件方式由中間件和傳統(tǒng)關(guān)系型數(shù)據(jù)庫共同組成。傳統(tǒng)關(guān)系型數(shù)據(jù)庫天然具備良好的ACID屬性,通過數(shù)據(jù)庫訪問中間件進(jìn)行分庫分表,滿足數(shù)據(jù)庫的擴(kuò)展性要求。應(yīng)用系統(tǒng)在訪問數(shù)據(jù)庫時,首先訪問數(shù)據(jù)庫中間件,由中間件根據(jù)規(guī)則,將數(shù)據(jù)分散到多個庫/表中進(jìn)行存儲,查詢時,再將多個庫/表的數(shù)據(jù)聚合在一起,返回給應(yīng)用。目前,數(shù)據(jù)庫訪問中間件大都以兼容MySQL為主。其典型架構(gòu)如下:

360截圖16450626515344.png

在上述架構(gòu)中,數(shù)據(jù)庫訪問中間件實現(xiàn)接口層、解析層、計算層的相關(guān)能力,傳統(tǒng)關(guān)系型數(shù)據(jù)庫(如MySQL)實現(xiàn)存儲層的相關(guān)能力。

數(shù)據(jù)保存在存儲層中,數(shù)據(jù)的可用性和可靠性由分片數(shù)據(jù)庫集群保證(每個分片數(shù)據(jù)庫集群可以是一個數(shù)據(jù)庫高可用集群,如MySQL的MGR、Oracle的RAC等)。

數(shù)據(jù)庫訪問中間件本身不保存數(shù)據(jù),只做數(shù)據(jù)的分片、路由。

2、原生分布式數(shù)據(jù)庫模式

原生分布式數(shù)據(jù)庫對數(shù)據(jù)庫系統(tǒng)進(jìn)行重構(gòu),原生支持分布式事務(wù)處理與數(shù)據(jù)切分,主要由SQL層和存儲引擎層兩部分組成。其中,SQL層為客戶端提供接口服務(wù),并負(fù)責(zé)SQL語句的解析、優(yōu)化,生成執(zhí)行計劃,下發(fā)到數(shù)據(jù)庫存儲引擎層執(zhí)行,SQL層不保存數(shù)據(jù)。

數(shù)據(jù)庫存儲引擎層負(fù)責(zé)數(shù)據(jù)的分片和聚合,記錄元數(shù)據(jù),并將數(shù)據(jù)保存到本地磁盤或外部存儲,數(shù)據(jù)保存采用多副本方式。如采用本地存儲,副本間的數(shù)據(jù)一致性采用Paxos或raft,如采用分布式存儲,由分布式存儲保證副本間的數(shù)據(jù)一致。典型架構(gòu)圖如下所示:

360截圖16450626515344.png

各廠商在對數(shù)據(jù)庫系統(tǒng)進(jìn)行重構(gòu)時,側(cè)重點有所不同:有的側(cè)重SQL層的重構(gòu),而存儲引擎采用開源的數(shù)據(jù)庫存儲引擎,如TiDB;有的產(chǎn)商則側(cè)重存儲引擎層的重構(gòu),而SQL層采用開源數(shù)據(jù)庫,如SequoiaDB。

3、兩種技術(shù)路線NewSQL數(shù)據(jù)庫比較

360截圖16450626515344.png

五、分布式數(shù)據(jù)庫的應(yīng)用規(guī)劃

1、數(shù)據(jù)的分類

數(shù)據(jù)按其組織結(jié)構(gòu),可分為結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。各類數(shù)據(jù)的特點如下:

結(jié)構(gòu)化數(shù)據(jù),也稱行數(shù)據(jù),是由二維表結(jié)構(gòu)來邏輯表達(dá)和實現(xiàn)的數(shù)據(jù),嚴(yán)格遵循數(shù)據(jù)格式與長度規(guī)范,數(shù)據(jù)處理時效性要求較高,通常采用OLTP數(shù)據(jù)庫存儲和管理。如所要處理的數(shù)據(jù)量小,數(shù)據(jù)增長速度慢,可選用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(RDBMS)處理,如所需處理的數(shù)據(jù)量大,數(shù)據(jù)增長速度快,可選用NewSQL數(shù)據(jù)庫處理;

非結(jié)構(gòu)化數(shù)據(jù),不宜采用關(guān)系型數(shù)據(jù)庫來處理的數(shù)據(jù),如各類圖片、音頻、視頻等。創(chuàng)建和管理數(shù)據(jù)項時,通常采用多值字段和變長字段,廣泛應(yīng)用于全文檢索和各種多媒體信息處理領(lǐng)域。該類數(shù)據(jù)量大、數(shù)據(jù)增長速度快,但對時效性要求相對較低。通常選用OLAP數(shù)據(jù)庫或hadoop等大數(shù)據(jù)平臺存儲和管理。

半結(jié)構(gòu)化數(shù)據(jù),不同于結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),它形式上是結(jié)構(gòu)化的數(shù)據(jù),但結(jié)構(gòu)變化很大,如各種格式的辦公文檔、XML、HTML、Json等。當(dāng)我們要了解數(shù)據(jù)的細(xì)節(jié)時,就不能將數(shù)據(jù)簡單的組織成一個文件,而是要做結(jié)構(gòu)化處理。但因為結(jié)構(gòu)變化很大,又不能簡單地創(chuàng)建一個表和他對應(yīng)。半結(jié)構(gòu)化數(shù)據(jù)通常采用OLAP數(shù)據(jù)庫存儲和管理。

360截圖16450626515344.png

2、應(yīng)用系統(tǒng)的分類與特點

應(yīng)用系統(tǒng)按其所處理的業(yè)務(wù)特點,可分為交易類系統(tǒng)、支撐類系統(tǒng)、渠道類系統(tǒng)、管理類系統(tǒng)和分析類系統(tǒng),其中分析類系統(tǒng)可分為聯(lián)機(jī)分析類系統(tǒng)和離線分析類系統(tǒng),各類系統(tǒng)特點如下:

交易類系統(tǒng):為客戶提供銀行業(yè)務(wù),面對的是銀行客戶,是銀行的主要業(yè)務(wù)系統(tǒng)。如核心系統(tǒng)、信貸、信用卡、支付類系統(tǒng)、理財業(yè)務(wù)、資金業(yè)務(wù)、特色業(yè)務(wù)等;

支撐類系統(tǒng):該類系統(tǒng)用于支撐銀行其他系統(tǒng)的運(yùn)行,如ESB、交換、調(diào)度、外聯(lián)等;

渠道類系統(tǒng):該類系統(tǒng)為客戶提供使用渠道,如柜面、ATM、網(wǎng)銀、手機(jī)銀行等系統(tǒng),渠道類系統(tǒng)有傳統(tǒng)渠道和互聯(lián)網(wǎng)渠道;

管理類系統(tǒng):為銀行內(nèi)部用戶提供管理功能,面對的是銀行內(nèi)部員工,如OA、績效、人力、財務(wù)管理等。

上述系統(tǒng)所處理的主要是結(jié)構(gòu)化數(shù)據(jù)。

聯(lián)機(jī)分析類系統(tǒng):該類系統(tǒng)為銀行的業(yè)務(wù)、決策、合規(guī)等提供數(shù)據(jù)支持,如風(fēng)險管理、在線決策支持、反洗錢、關(guān)聯(lián)交易分析等。該類系統(tǒng)處理的數(shù)據(jù)有結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)。其中結(jié)構(gòu)化數(shù)據(jù)主要為元數(shù)據(jù),半結(jié)構(gòu)化提供業(yè)務(wù)分析

離線分析類系統(tǒng):主要用于離線分析,如大數(shù)據(jù)平臺、基礎(chǔ)數(shù)據(jù)平臺等。所處理的多為半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)

360截圖16450626515344.png

3、應(yīng)用系統(tǒng)的數(shù)據(jù)庫規(guī)劃

360截圖16450626515344.png

六、關(guān)于分布式數(shù)據(jù)庫的選型思考

在進(jìn)行分布式數(shù)據(jù)庫選型時,我們既要考慮到傳統(tǒng)技術(shù)的兼容性和新技術(shù)的前瞻性。

在傳統(tǒng)技術(shù)的兼容性方面,既要滿足傳統(tǒng)關(guān)系型數(shù)據(jù)庫的ACID要求,還要考慮對SQL的完整支持,盡量對應(yīng)用無感知。

在新技術(shù)前瞻性方面,要考慮到數(shù)據(jù)庫的擴(kuò)展能力,能根據(jù)業(yè)務(wù)需求,支持系統(tǒng)的平滑升級與擴(kuò)容;根據(jù)業(yè)務(wù)場景,選擇合適數(shù)據(jù)庫,在此基礎(chǔ)下,進(jìn)行適當(dāng)創(chuàng)新:要求所選擇的數(shù)據(jù)庫能支持復(fù)雜的業(yè)務(wù)場景,盡量做到同個數(shù)據(jù)庫平臺既支持OLTP應(yīng)用,又支持OLAP應(yīng)用,打破數(shù)據(jù)的孤島效應(yīng);支持多模和多租戶模式,讓同個數(shù)據(jù)庫平臺能支持多種應(yīng)用場景,同時簡化數(shù)據(jù)庫的運(yùn)維;

適配性方面,能支持多種操作系統(tǒng)和多種編程語言,并適配多種硬件平臺(如X86、ARM、MIPS等架構(gòu));此外,還有考慮到多租戶隔離的有效性,并為不同用戶提供不同的SLA服務(wù)。

七、結(jié)束語

分布式數(shù)據(jù)庫是近幾年發(fā)展的新技術(shù),率先應(yīng)用在互聯(lián)網(wǎng)行業(yè),因此成熟案例較多,但在金融行業(yè)的應(yīng)用尚處起步階段,成熟案例相對較少。如何根據(jù)金融行業(yè)的業(yè)務(wù)特點,結(jié)合分布式數(shù)據(jù)庫技術(shù),選擇合適的分布式數(shù)據(jù)庫產(chǎn)品,是目前產(chǎn)商和銀行IT人員共同需要考慮的問題,本文拋磚引玉,希望對大家有所幫助。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論