范永清,系统架构师,现就职于厦门银行信息技术部,目前主要负责厦门银行技术架构设计。
一、前言早期银行业务系统处理的主要是交易型数据,数据量较少,传统关系型数据库(如SQLServer、Oracel、DB等)已足够应对。随着互联网金融业务的快速发展,业务系统需要处理的数据呈爆炸式增长,传统数据库因其扩展能力有限,已无法满足业务系统越来越高的数据处理能力要求。于是,新型的分布式数据库系统应运而生。
本文拟先对数据库进行分类,了解各类数据库的特点,参考人行的分布式数据库技术架构规范,并结合业界主流分布式数据库的技术实现,试图梳理出通用技术框架,并根据各功能模块的主要技术特点,结合业务场景,提出分布式数据库系统在金融领域的应用规划,供大家参考。
二、数据库的分类为了更高效地了解不同厂商分布式数据库的产品特点,我们需要对数据库产品进行分类。业界对数据库的分类尚未形成统一的标准,但都大同小异,本文数据库分类参考了45Group分析报告中的《数据库行业全景图》。
数据库根据其数据模型,可分为关系型数据库(RDBMS)和非关系型数据库(NoSQL)。其中,关系型数据库根据其技术特性,分为传统关系型数据库和NewSQL数据库;根据业务负载特征,可分为OLTP数据库和OLAP数据库。
根据部署架构,可分为集中式数据库和分布式数据库。其中NoSQL数据库与NewSQL数据库均为分布式数据库。
各类数据库的特性描述如下:
、关系型数据库与非关系型数据库关系型数据库(RDBMS)即SQL数据库,支持SQL操作,具备ACID属性,用于处理存储结构化数据,包括传统关系型数据库与NewSQL数据库。
非关系型数据库,通常为NoSQL数据库。NoSQL(NotOnlySQL)即“不仅仅是SQL”,提倡运用非关系型的、分布式的数据存储系统,通常以牺牲复杂SQL、ACID事务支持和数据的一致性为代价,以此换取弹性扩展能力。常用的NoSQL数据库有基于键值(Key-Value)的,如levelDB、RocksDB、redis等;基于列存储的,如:Bigtable、HBASE等;基于文档的,如:MangoDB;其他如基于图的Neo4j,基于时间序列数据的InfluxDB等。
、传统关系型数据库与NewSQL数据库传统关系型数据库与NewSQL数据库均属于关系型数据库。早期使用的关系型数据库是传统关系型数据库,扩展能力有限,如商业软件Oracle、DB,开源软件MySQL、PostgreSQL等。
NewSQL数据库为应对爆炸式增长的数据需求而生。采用分布式技术,支持SQL操作,满足ACID属性,同时具备良好的扩展能力,如CockroachDB、GoogleSpanner/F、TiDB、OceanBase等。
3、OLTP数据库与OLAP数据库OLTP(On-lineTransactionProcessing联机事务处理)数据库,适用于事务管理型系统,该类系统处理的是高并发且数据量级不大的交易,如INSERT,UPDATE,DELETE等。OLTP是传统关系型数据库的主要应用。
OLAP(On-lineAnalyticalProcessing联机分析处理)数据库,适用于查询频率较低,但通常会涉及到非常复杂的聚合计算的系统。该类系统需要进行复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。如数据仓库,风险预警等。
4、集中式数据库与分布式数据库集中式数据库将数据在物理空间上集中存储和处理,是一种较为经典、传统的架构模式;
分布式数据库是物理上分散而逻辑上集中的数据库系统,利用分布式事务处理、数据自动分片、数据多副本存储等技术,将分散在计算机网络的多个逻辑相关节点连接起来,共同对外提供服务。
NewSQL数据库与NoSQL数据库采用分布式部署,均为分布式数据库。
5、数据库分类示意图:三、分布式数据库的技术框架就分布式数据库的技术框架而言,可分为计算模块、存储模块和管理模块。各模块的技术框架介绍如下:
(一)计算模块计算模块包括接口层、解析层和计算层。
、接口层
接口层负责接口调用,是分布式数据库对外提供服务的统一接口,可提供包括SQL接口、JDBC/ODBC以及其他驱动等方式的接入。
、解析层
解析层包括解析器、优化器,负责解析数据库收到的指令,(包括SQL语句和其他指令),同时对解析结果进行优化,生成执行计划,并将指令与计划自动分配到各计算节点并行执行。
在解析层中,我们需要