一、前言
早期銀行業(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ù)庫分類示意圖:
三、分布式數(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ù)框架如下圖所示:
四、各類分布式數(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é))。
(二)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)如下:
在上述架構(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)圖如下所示:
各廠商在對數(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ù)庫比較
五、分布式數(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ù)庫存儲和管理。
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ù)
3、應(yīng)用系統(tǒng)的數(shù)據(jù)庫規(guī)劃
六、關(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人員共同需要考慮的問題,本文拋磚引玉,希望對大家有所幫助。