分布式数据库技术框架.docx
04,一、刖百早期银行业务系统处理的主要是交易型数据,数据量较少,传统关系型数据库(如SQ1.Server、Orace1.DB2等)已足够应对.随着互联网金融业务的快速发展,业务系统需要处理的数据呈爆炸式增长,传统数据库因其扩展能力有限,已无法满足业务系统越来越高的数据处理能力要求.于是,新型的分布式数据库系统应运而生.本文拟先对数据库进行分类,r解各类数据库的特点,参考人行的分布式数据球技术架两规检,并结合业界主流分布式数据库的技术实现,试图榛理出通用技术框架,并根据各功能模块的主要技术特点,结合业务场景,提出分布式数据库系统在金融犊域的应用规划,供大家参考.二、数据库的分类为了更高效地了解不同厂商分布式数据库的产品特点,我们需要对数据库产品进行分类.业界对数据库的分类尚未形成统一的标准,但都大同小异,本文数据库分类参考了451Group分析报告中的数据库行业全景图.数据库根据其数据模型,可分为关系型数据库(RDBMS)和非关系型数据由(NoSQ1.),其中,关系型数据库根据其技术特性,分为传统关系型数据库和NewSQ1.数据麻;根据业务负载特征,可分为O1.TP数据阵和O1.AP数据库.根据部署架构,可分为集中式数据库和分布式数据库.其中NoSQ1.数据库与NewSQ1.数据库均为分布式数据库.各类数据库的特性描述如下:1、关系型数据库与非关系型数据库关系型数据库(RDBMS)即SQ1.数据库,支持SQ1.操作,具备ACID属性,用于处理存储结构化数据,包括传统关系型数据库与NewSQ1.数据库.非关系型数据库,通常为NoSQl数据库.NoSQ1.(NOtOnlySQ1.)即“不仅仅是SQ1.",提倡运用非关系型的、分布式的数据存储系统,通常以牺牲豆杂SQ1.、AClD事务支持和数据的一致性为代价,以此换取弹性扩展能力.常用的NoSQ1.数据库有基于键值(Key-Value)的,如IeveIDB.RocksDB.redis等;基于列存储的,如:BigtablexHBASE等;基于文档的,如:MangoDB;其他如基于图的Neo4j,基于时间序列数据的InfIuxDB等。2.传统关系型数据库与NewSQ1.数据库传统关系型数据库与NeWSQ1.数据库均属于关系型数据库.早期使用的关系型数据库是传统关系型数据库,扩展能力有限,如商业软件Oracle、DB2,开源软件MySQ1.、PostgreSQ1.等.NewSQ1.数据库为应对爆炸式增长的数据需求而生.采用分布式技术,支持SQ1.麋作,满足AelD属性,同时具备良好的扩展能力,如CockroachDB.GoogleSPanner/F1、TiDB.OCeanBaSe等。3、O1.TP数据库与O1.AP数据库O1.TP(On-lineTransactionProcessing联机事务处理)数据库,适用于事务管理型系统,该类系统处理的是高并发且数据量级不大的交易,如INSERT,UPDATE.DE1.ETE等.O1.TP是传统关系型数据库的主要应用.O1.AP(On-lineAnalyticalProcessing联机分析处理)数据库,适用于直询频率较低,但通常会涉及到非常夏杂的聚合计算的系统.该类系统需要进行夏杂的分析操作,侧电决策支持,并且提供亘观易懂的查询结果。如数据仓库,风睑预警等.4、集中式数据库与分布式数据库集中式数据库将数据在物理空间上集中存储和处理,是一种较为经典、传统的架构模式;分布式数据库是物理上分散而逐辑上集中的数据库系统,利用分布式事务处理、数据自动分片、数据多副本存储等技术,将分散在计或机网络的多个逻辑相关节点连接起来,共同对外提供服务.NeWSQl.数据库与NOSQl数据库采用分布式部署,均为分布式数据库。5、数据库分类示意图:Z-关系型数据库'、Z一1厂集中式麻库一、八|分/Fh、O1.TP/非库、)A三、分布式数据库的技术框架就分布式数据库的技术框架而言,可分为计算模块、存储模块和管理模块.各模块的技术框架介绍如下:(一)计算模块计算模块包括接口层、解析层和计凭层.1、接口层接口层负责接口调用,是分布式数据库对外提供服务的统一接口,可提供包括SQ1.接口、JDBC/ODBe以及其他驱动等方式的接入.2、解析层解析层包括解析器、优化器,负责解析数据库收到的指令,(包括SQ1.语句和其他指令),同时对解析结果进行优化,生成执行计划,并将指令与计划自动分配到各计算节点并行执行.在解析层中,我们需要关注产品对SQ1.的兼容性,以及对存储过程的支持情况3、计算层计第层负责资源管理,确定计算框架,采用合适的通讯协议,通过分布式事务处理等技术确保数据正确性,借助并发控制、动态资源分配等技术提升分布式数据库在豆杂业务场景的计算效率,同时保证整体系统的可靠性.各模块功能如下:-资源管理主要负责计凭资源的管理,包括CPU、内存的调度,跟盘I/O管理、动态资源分配等.合理的资源管理设计,能最大程度发挥计箕资源的效率,提升分布式数据库在基杂业务场景的计算效率.-计算框架分布式数据库通常采用MPP计算框架,实现并行计算的能力.MPP(MassivelyParallelProcessing),大规模并行处理。MPP先对数据进行分块,交给不同节点储存.直询时,各数据块利用所在节点的计算资源分别处理,然后汇总到leadernode进行合并。MPP有sharedeverything/Disk/Nothing三种类型。- 负载管理包括资源管控、租户隔需、租户的S1.A.并发控制等等,合理的负载管理,能有效隔不同数据库租户之间的相互影响,确保租户获得需要的S1.A.- 通讯管理分布式数据库网络中,传输展通常可采用TCP/UDP协议,道路层可采用Ethernet/RDMA协议.RDMA(RemoteDirectMemoryAccess远程直接内存访问),是为解决网络传输中服务器端数据处理的延迟而产生的.其特点是:数据可通过网络与远程服务器间直接进行数据传临,不需要内核参与,从而减少了数据的额外移动和豆制,有效提高了数据库性能.RDMA有三种实现方式:Infiniband、RoCE.iWARP- 分布式事务管理分布式数据库同需采用二阶段提交(2PC)来保证分布式事务的AQD,属性。为了实现并发访问控制,分布式数据库需支持分布式事务的隔离性,以解决并发事务执行过程中存在的脏读、不可重复读、幻读等问题。支持的隔渤级别包括:已提交读、可更豆读、串行化;分布式数据库需具备锁的管控能力,包括锁的类型、锁的级别、锁的互斥、死锁处理等.在实际技术实现时,计算层和存储层都需要实现分布式事务处理.- 可靠性管理可靠性管理包括服务的高可用和数据的高可用。服务商可用主要从部署架构方面考虑,如采用的是集群、还是主备部署,并从机房、机柜、供电、布线展面,保证基础设施的高可用.数据的高可用主要针对数据副本的管理,包括副本数据的复制技术(如流夏制、块豆制和WA1.更构)和数据的一致性管理(强一致性和最终一致性)数据的三种豆制技术采用的实现方式不同:流豆制.包括操作日志与SQ1.语句,通过重放操作,实现数据副本的豆制.块豆制.通过数据块的复制,实现数据副本的复制.常用的数据一致性技术有Paxos、Raft.WA1.重构,定期进行快照算制,并实时算制快照之后的操作日志,当需要数据恢豆时,可用过快照+日志的方式,将数据恢豆到最新状态.WA1.重构常用于数据的灾密.在实际技术实现时,计算层和存储层都需要可靠性管理。其中,服务高可用在计算展和存储蜃上都要关注,而数据的高可用主要在存储展上实现.(二)存储模块存储层属于存储模块,包括数据存储组织管理和日志组织管理。数据存储组织管理包括数据分片/分区策略、数据更新机制、数据存储结构、索引管理、数据物理结构等;日志组织管理包括日志类型和日志的归档方式等无论是数据还是日志,最终存储在物理介质上,存储介质可以是本地磁盘或外部存储.各模块功能如下:1.数据存储组织管理- 数据分片/分区管理数据的切分有两个维度:水平分片和垂直分区.水平分片,按照一定的规则,将数据集划分成相互独立、正交的数据子集后,再将数据子集分布到不同的分片节点上。常见的数据分片策略有HaS"Roundrobin两种方式垂直分区,分片后的数据,按照一定的规则进行切分,再根据分区策略,将数据分布在分片集群内的各存储单元上.常见的分区策略有一致性HaSh/一致性Hash、range和list三种方式。- 数据更新机制数据在磁盘的组织和更新方式有两种方式:In-place.Append-onlyIn-place,数据更新时,直接对内存缓冲区中的数据进行修改,然后刷新到磁盘上,完成数据的更新操作.Append-only,数据更新时,将新的数据直接追加到内存文件上,(而不对原来的数据进行修改),并定期保存在磁盘上.- 数据存储结构存储上,数据可以以行存"、"列存"、"KV"、"文档"、"图"和"序列"等方式组织存慵,不同的数据存储组织适用于不同的业务类型.逻辑上,数据可以以"库/表/记录"的方式组织,如Oracle、DB2等传统关系型数据而;也可以以"麻/集合/文档”的方式组织,如MangoDB;或以“文件"的方式组织,如RocksDB等。启用的存储比法有B+树,1.SM和Hash.数据最终组织成页或1.OB块的方式,存储到文件系统中.- 索引管理索引的类型有文本、位图、倒排等,各种索引的特点如下:倒排索引,也叫反向索引(invertedindex).是实现"单词-文档矩阵"的一种具体存储形式,通过倒徘索引,可以根据单词快速获取包含这个单词的文档列表.倒排索引主要由两个部分组成:"单词词典"和“倒排文件"。单词词典常用的数据结构包括哈希加链表结构和树形结构.文本索引支持对字符串内容的全文检索查询.文本索引可以包含字符串或字符串元素数组.一个集合有且只能有一个文本索引,但是该索引可以包含多个字段.位图索引是一种使用位图的特殊数据库索引.主要针对大量相同值的列而创建,索引块的一个索引行中存储梃值和起止R。Wid,以及这些犍值的位笆编码,位笆编码中的每一位表示键值对应的数据行的有无.2.日志组织管理-日志类型常用的日志类型有red。、undo等。redolog,至做日志,也是预写日志,记录了数据的创建和修改,提供前滚操作,防止故障时的数据丢失,用来保证事务安全.undolog,回滚日志,记录的是如何还原修改,提供回滚操作,同时提供MVCC1undolog也会产生redolog,-日志归档方式日志可以有归档和未归档两种方式.未归档模式,不保留重做历史的日志操作模式,只能够用于保护例程失败,而不能够保护介质损坏.归档模式,指保留重做日志历史的日志操作慢式。这种日志操作模式不仅可用于保护例程失败,还可以用于保护介质损坏的情况.3、存储介质存储介质可以是本地磁盘,也可以是外部集中式存惆或分布式存储.如采用本地磁盘,需利用豆制技术,如raft或Paxos协议,实现多副本保存,以保证数据的可用性.如采用外部存储,则数据的可用性由外部存储保证.(三)管理模块管理模块负责分布式数据库的运维和管理,提供数据库参数配置和运行监控接口.通用要求包括自动化部署、扩缩容、可视化、多租户等;维护要求方面包括自动告警、版本升级、状态监控、性能监控、系统日志、系统配百、故障的隔离、自感等,数据管理部分包括导入导出、数据同步、数据迁移、备份恢夏等;容灾管理方面包括双活/多活、读写分离、主备三种模式.分布式数据庵的技术框架如下图所示:计算模块管理模块运维营理接口层解析S计算层二存储层外豌口SQ1.jdb°d接口层资源管理事务管理ftfta计H框架I通讯HSfI存储模块日志继R管理日志类型日志归档通用要求堆护要求故据首理容灾安理存储介质块本地里回块、文件、对象分布式存储集中式存嘀四、各类分布式数据库的典型架构NoSQ1.数据库和NewSQ1.数据库均为分布式数据库,其中,NewSQ1.数据库有两大类:分座分表的数据库访问中间件和原生分布式数据席.(一)NoSQ1.数据库NoSQ1.数据库通常有三大组件:协调节点、数据节点和配百节点,各组件的功能如下:协调节点.在集群中可作为网关使用,提供客户端应用程序和数据节点集群之间的外部APl接口,或简单的SQ1.支持,负责语法解析、优化,形成执行计划,下压给数据节点执行,负责数据分片和聚合,记录元数据到配舌节点,或从配置节点读取元数据.配置节点.用于保存集群的配笈信息和数据分片的元数据信息等.数据节点。负责分片数据的实际存储和管理。数据可保存在本地磁盘或分布式存储,采用多副本方式保证数据的可靠性;如采用本地存储,副本间的数据一致性采用Paxos或raft,如采用分布式存储,由分布式存博保证副本间的数据一致。协调节点实现接口展、解析层、计算层的相关能力,数据节点实现存储屋的相关能力(具体能力和关键技术见上一章节).分布式数据库技术框架NOSQ1.数据库典型架构客户端客户端接口层数据节点数据节点配置节点存储层数据节点木地存储、分布式存他(二)NewSQ1.数据库业界常用的NeWSQ1.数据库有两种技术路线:分库分表的数据库访问中间件方式和原生分布式数据南方式.1.分库分表的数据库访问中间件模式分库分表的数据库访问中间件方式由中间件和传统关系型数据库共同组成.传统关系型数据库天然具备良好的AClD属性通过数据库访问中间件进行分库分表,满足数据库的扩展性要求.应用系统在访问数据库时,首先访问数据库中间件,由中间件根据规则,将数据分散到多个库/表中进行存博,查询时,再将多个库/表的数据聚合在一起,返回给应用。目前,数据库访问中间件大都以兼容MySQ1.为主.其典型架构如下:分布式数据库技术框架NewSQ1.数据库访问中间的典型架构在上述架构中,数据库访问中间件实现接口层、解析层、计算层的相关能力,传统关系型数据库(如MySQ1.)实现存储层的相关能力.数据保存在存储层中,数据的可用性和可靠性由分片数据库集群保证(每个分片数据库集群可以是一个数据库高可用集群,如MySQ1.的MGR.Oracle的RAC等).数据库访问中间件本身不保存数据,只做数据的分片、路由.2、原生分布式数据库模式原生分布式数据库对数据库系统进行重构,原生支持分布式事务处理与数据切分,主要由SQ1.层和存储引擎层两部分组成,其中,SQ1.层为客户端提供接口服务,并负责SQ1.语句的解析、优化,生成执行计划,下发到数据库存储引孥层执行.SQ1.层不保存数据.数据库存储引擎层负责数据的分片和聚合,记录元数据,并将数据保存到本地磁盘或外部存储,数据保存采用多副本方式.如采用本地存睹,副本间的数据一致性采用Paxos或raft如采用分布式存储,由分布式存储保证副本间的数据一致.典型架构图如下所示:分布式数据库技术框架NewSQ1.(原生分布式数据库)客户端1.oadBlance各厂商在对数据降系统迸行歪构时,测至点有所不同:有的侧至SQ1.层的更构,而存储引擎采用开源的数据库存储引擎,如TiDB;有的产商则侧重存储引擎层的更构,而SQ1.层采用开源数据库,如SequoiaDB.3.两种技术路线NeWSQ1.数据库比较6数据库访问中间件(分库分衣)2原生分布式数据库“优即 构建中间SQ1.解析层,尽可能将标准SQ1.拆分成多个子查询下压到下层数据库,在SQ1.层进行结构拼装:, 可对SQ1.语句和数据库访问进行优化,提高访问性能:” 对于底U数据库无特殊要求,在中间层进行SQ1.切分(支持XA协议即可);* 可根据业务需求,主动进行分库分表设计。- 计算和存储分离,水平扩展便利;, 数据库内部自动处理分布式事务与数据切分逻辑,对应用程序完全透明,无需感知底层数据分布;, 数据库内部原生支持分布式事务,性能高于分库分表;, 数据库内核原生支持高可用与容灾能力,不需要额外辅助工具。;劣势。 因中间件R构SQ1.,会造成某些数据库特性的缺失(如存储过程、视图、触发器等);“ 应用程序设计时,需要考虑分库分表策略,旦需感知底层数据分布结构,应用开发较复杂;” 由中间件实现分布式事务,跨库事务使用XA机制,在保证分布式事务一致性时,性能有所下降:“近几年发展的新技术,业界成熟案例相对较少,稳定性和可检性有待近一步验证;一辅助工具相对较少,生态环境有待完善“五、分布式数据库的应用规划1、数据的分类数据按其组织结构,可分为结构化数据、半结构化数据和非结构化数据,各类数据的特点如下:结构化数据,也称行数据,是由二维表结构来逻担表达和实现的数据,严格遵循数据格式与长度规范,数据处理时效性要求较高,通常采用OlTP数据库存储和管理.如所要处理的数据量小,数据增长速度慢,可选用传统关系型数据库(RDBMS)处理,如所需处理的数据.量大,数据增长速度快,可选用NewSQ1.数据库处理;非结构化数据,不宜采用关系型数据库来处理的数据,如各类图片、音频、视频等.创建和管理数据项时,通常采用多值字段和变长字段,广泛应用于全文检索和各种多媒体信息处理领域.该类数据量大、数据增长速度快,但对时效性要求相对较低.通常选用O1.AP数据库或hadoop等大数据平台存储和管理.半结构化数据,不同于结构化数据和非结构化数据,它形式上是结构化的数据,但结构变化很大,如各种格式的办公文档、XMUHTM1.,Json等.当我们要了解数据的细节时,就不能将数据简单的组织成一个文件,而是要做结构化处理.但因为结构变化很大,又不能简单地创建一个表和他对应.半结构化数据通常采用O1.AP数据库存储和管理。数据类型。数据特点2适合的数据库类型'推荐数据库结构化数据由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,数据处理时效性要求较高。一O1.TP数据库RDBMS或NewSQ1.p半结构化数据是结构化的数据,但是结构变化很大。通常需要了解数据细节“O1.AP数据库NewSQ1.或NoSQ1.a非结构化数据不宜采用关系型数据库来处理的数据,创建和管理数据项时,通常采用多值字段和变长字段,广泛应用于全文检索和各种多媒体信息处理领域。但数据处理时效性要求相对较低。“O1.AP数据库或Hadoop*3NewSQ1.NoSQ1.或Hadoopj2、应用系统的分类与特点应用系统按其所处理的业务特点,可分为交易类系统、支撑类系统、柒道类系统、管理类系统和分析类系统,其中分析类系统可分为联机分析类系统和离线分析类系统,各类系统特点如下:交易类系统:为客户提供银行业务,面对的是银行客户,是银行的主要业务系疣.如核心系统、信贷、信用卡、支付类系统、理财业务、资金业务、特色业务等;支撑类系统:该类系统用于支蹲银行其他系统的运行,如ESB.交换、调度、外联等;柒道类系统:该类系统为客户提供使用柒道,如柜面、ATM、网银、手机银行等系统,渠道类系统有传统渠道和互联网渠道;管理类系统:为银行内部用户提供管理功能,面对的是银行内部员工,如OA、绩效、人力、财务省理等.上述系统所处理的主要是结构化数据.联机分析类系统:该类系统为银行的业务、决策、合规等提供数据支持,如风睑管理、在线决策支持、反洗钱、关联交易分析等。该类系统处理的数据有结构化数据和半结构化数据.其中结构化数据主要为元数据,半结构化提供业务分析离线分析类系统:主要用于离线分析,如大数据平台、基础数据平台等.所处理的多为半结构化数据和非结构化数据系统类型'系统特点“所处理主要数据的特点“所属交易类型交易类系统”为客户提供银行业务,面对的是银行客户,如核心系统、信贷、信用卡、支付类系统、理财业务、资金业务、特色业务等“结构化数据“O1.TP“支撑类系统该类系统用于支撑银行其他系统的运行,如ESB、交换、调度、外联等。渠道道系系该类系统为齐户提供使用渠道,如柜面、ATM.网银、手机银行等系统,渠道类系统有传统渠道和互联网渠道一管理类系统一为银行内部用户提供管理功能,面对的是银行内部员工,如0A、绩效、人力、财务管理等联机分析类系统”该类系统为银行的业务、决策、合规等提供数据支持,如风险管理、在线决策支持、反洗钱、关联交易分析等结构化数据。01.TP“半结构化数据O1.APa离线分析类系统,用于离线分析,如大数据平台、基础数据平台等一半结构化数据非结构化数据离线分析3、应用系统的数据库规划系统类型“数据特点,适合的数据库类型推荐数据库一交易类系统一结构化数据”O1.TP数据库7RDBMS或XeWSQW支撑类系统“渠道类系统一管理类系统联机分析类系统一结构化数据7O1.TP数据库aRDBMS或NeWSQa半结构化数据一O1.AP数据库一NewSQ1.或NoSQ3非结构化数据一O1.AP数据库”NewSQ1.或XoSQ1.离线分析类系统,,半结构化数据7Hadoop或1O1.AP数据库aHadoop或NewSQ1.、NoSQ1.非结构化数据。六、关于分布式数据库的选型思考在进行分布式数据库选型时,我们既要考虑到传统技术的兼容性和新技术的前瞻性.在传统技术的兼容性方面,既要满足传统关系型数据库的ACID要求,还要考虑对SQ1.的完整支持,尽量对应用无感知。在新技术前瞻性方面,要考虑到数据库的扩展能力,能根据业务需求,支持系统的平滑升级与扩容;根据业务场景,选择合适数据库,在此基础下,进行适当创新:要求所选择的数据库能支持豆杂的业务场景,尽量做到同个数据库平台既支持O1.TP应用,又支持O1.AP应用,打破数据的孤岛效应;支持多模和多租户模式,让同个数据库平台能支持多种应用场景,同时简化数据库的运维;适配性方面,能支持多种操作系统和多种编程语言,并适配多种硬件平台(如X86、ARV、M11>S等架构):此外,还有考虑到多租户隔离的有效性,并为不同用户提供不同的S1.A服务.七、结束语分布式数据库是近几年发展的新技术,率先应用在互联网行业,因此成熟案例较多,但在金融行业的应用尚处起步阶段,成熟案例相对较少.如何根据金融行业的业务特点,结合分布式数据库技术,选择合适的分布式数据库产品,是目前产商和银行IT人员共同需要考虑的问题,本文拗砖引玉,希望对大家有所留助.