商业银行数据库管理实践
上QQ阅读APP看书,第一时间看更新

1.6 新技术运用和输出

近年来,数据库新技术层出不穷。

从数据库发展来说,已经经历三代。第一代是支持SQL的关系数据库;第二代是支持非结构化数据、强扩展能力,但不保证ACID事务特性的NoSQL数据库;第三代是NewSQL数据库,提供了与NoSQL相同的可扩展性,基于关系模型,保留了SQL作为查询语言,保证了ACID事务特性等。

从支持SQL的关系数据库本身以及周边生态圈的成熟度、数据查询的灵活度、开发工程师以及DBA对其的掌控程度等方面来看,无论是NoSQL还是NewSQL,实难于近期完全取而代之。

另外,在微服务和云原生大潮的卷席之下,服务化一直以来是人们关注的重点。那么,对于微服务架构中越来越多的数据库垂直拆分,以及数据量急剧膨胀后的数据库水平拆分,是否存在行之有效的方案来管理呢?当今大为流行的服务网格(Service Mesh)理念又能否对数据库的服务治理带来一些启示呢?

数据库网格(Database Mesh,DBMesh)是一个搭乘Service Mesh浪潮衍生出来的新兴词汇。Database Mesh使用一个中间层,将散落在系统各个角落的数据库统一治理起来,提供应用与数据库之间的交互网络,就像蜘蛛网一样复杂而有序。

这些数据库新技术和当前商业银行的科技兴行战略不谋而合。基于这个战略,商业银行应积极拥抱NoSQL和NewSQL新技术,并持续推进数据库的服务化运用,完成向传统+互联网混合架构的转型,以提升信息科技的核心竞争力,并在合适的时机开展对外科技输出行动。

1.6.1 NoSQL数据库

传统的关系数据库基于关系代数和元组(Tuple)操作,这样的数据被称为结构化数据。同时还有很多半结构化数据,例如文档类型的数据,通常数据量很大,具有一定的结构,但是结构会经常变化。关系数据库在处理此类非结构化或者半结构化数据时遇到很大挑战,此时NoSQL数据库应运而生。

NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。NoSQL泛指非关系型的数据库,区别于关系型的数据库,它们不保证关系数据的ACID特性。NoSQL是一项全新的数据库革命性运动,其拥护者们提倡运用非关系型的数据存储,相对关系数据库,这是一种全新的思维。

NoSQL数据库具有下面的特点。

1.灵活的可扩展性

传统的关系数据库由于自身设计机理的原因,通常很难实现“横向扩展”,在面对数据库负载大规模增加时,往往只能选择开销很大的纵向扩展。但是,对于NoSQL数据库,在设计之初就是为了满足横向扩展的需求,横向扩展仅需要非常廉价的标准化x86服务器,因此天生具备良好的水平扩展能力。

2.灵活的数据模型

NoSQL数据库天生就旨在摆脱关系数据库的各种束缚条件,摒弃了流行多年的关系数据模型,转而采用键/值、列族等非关系模型,允许在一个数据元素中存储不同类型的数据。

3.良好的读写性能

关系数据库为了维护数据的一致性付出了巨大的代价,面对海量数据的时候效率较低。NoSQL存储的格式都是Key-Value类型的,并且存储在内存中,容易存储,而且对于数据的一致性是弱要求,具有非常高的读写性能。

4.与云计算紧密融合

云计算具有很好的水平扩展能力,可以根据资源使用情况进行自由伸缩,各种资源可以动态加入或退出,NoSQL数据库可以凭借自身良好的横向扩展能力,充分自由利用云计算基础设施,很好地融入到云计算环境中,构建基于NoSQL的云数据库服务。

商业关系数据库都是付费的,并且价格昂贵,成本较大;主流的NoSQL数据库有Redis、MemCache、MongoDB、BigTable、HBase等,这些NoSQL数据库都是开源免费的。

早期随着缓存的发展,例如10年前最早的TC/TT,发展到后来的MemCached和Redis,应用可以通过Key-Value结构在内存里操作经常使用的数据。

针对很多半结构化的数据,例如文档类型的数据,它们具有一定的结构,但是这些结构可能经常变化,随时可以需要调整,这就出现了文档数据库,例如MongoDB和CouchDB。

近年来,越来越多的NoSQL数据库加入了列式存储的能力。大部分传统的关系数据库是面向行组织数据。基于列式存储,每一列本身就相当于索引,在做一些需要索引的操作时,就不需要额外的数据结构来为此列创建合适的索引;另外,列式存储利于数据压缩,大部分列数据其实是重复的,而且数据类型一致,这样利于数据结构填充的优化和压缩。典型的使用列式存储的NoSQL数据库,包括BigTable、HBase等。

针对NoSQL数据库,建议在数据量大但数据模型简单、对数据一致性无要求、对扩展性要求高的应用场景下选择使用。

1.6.2 NewSQL数据库

NoSQL数据库提供了良好的扩展性和灵活性,很好地弥补了传统关系数据库的缺陷,但是它也存在自己的不足之处,不具备高度结构化查询等特性,查询效率尤其是复杂查询方面不如关系数据库,而且不支持数据库事务ACID特性。

在这个背景下,NewSQL数据库开始逐渐升温。NewSQL一词是由451 Group的分析师Matthew Aslett在研究论文中提出的,它代指对老牌数据库厂商做出挑战的一类新型数据库系统。NewSQL数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。不同的NewSQL数据库的内部结构差异很大,但是它们有两个显著的共同特点:都支持关系数据模型,都使用SQL作为其主要的接口。

如表1-3所示,NewSQL数据库就是在传统关系数据库上集成了NoSQL强大的可扩展性。传统的SQL架构设计基因中是没有分布式的,而NewSQL生于云时代,天生就是分布式架构。NewSQL的主要特性如下。

(1)支持关系模型,支持对传统SQL数据库的继承。

(2)支持SQL接口,支持复杂查询和大数据分析。

(3)支持ACID事务,支持多种隔离级别。

(4)水平扩展,扩容缩容对应用完全透明。

表1-3 传统SQL、NoSQL和NewSQL数据库区别

1.6.3 数据库网格

服务网格(Service Mesh)是近年来一个热门话题,主要关注服务发现、负载均衡、动态路由、降级熔断、调用链路等。不同于常见的Apache Dubbo或者Spring Cloud微服务方案,在服务网格里把所有对服务的通信、控制等基础设施和策略,从应用系统中抽离出来,下放到更基础的组件中(称作Sidecar)。这样,就把系统划分成了应用服务所在的数据面,以及控制节点所在的控制面。

同样地,把这些概念应用到数据库领域,就产生了一个新组件,可以先称为Sharding-Sidecar。这样应用就不用去管数据是通过什么协议传输、具体存储在什么地方,而仅需要把所有数据都当作本地数据,向Sharding-Sidecar组件申请使用即可。所有跟数据库本身相关的配置,所有的数据质量、安全、流控和治理的策略,也不需要应用系统直接感知。

相应地,可以把Sharding-Sidecar加入到数据面板,把分布式数据库治理和UI加入到控制面板,把对应用系统完全透明的数据库节点例如MySQL实例、GoldenDB分布式数据库实例、Db2实例等都作为一个新的层,称为存储面板。

此时,一个完备的云原生的数据库中间件解决方案就产生了,称为数据库网格(Database Mesh,DBMesh),如图1-1所示。

通过数据库网格,可以实现统一数据源、统一接口和统一事务的目标,具体如下。

(1)统一数据源。该目标旨在屏蔽分布式系统下的通信复杂性,按照服务规范,应用以库名和表名直接访问数据,开发人员只需关心如何实现具体的业务逻辑即可,无须知道属于哪个数据源;数据面通过语句分析得到语句所涉及的表,查询控制中心,得到其归属的数据源以及连接信息。

(2)统一接口。应用无须关心各数据源的语法差异,数据面统一控制转换为各数据源的语法;数据面提供一个受限制的语法集合,作为其标准语法,同时定义其标准的JDBC访问,支持R2DBC访问;数据面访问数据源时,需要时依据语义转换为具体的访问语句。

图1-1 数据库网格示意图

(3)统一事务。全局流水号唯一标识跨微服务事务,微服务事务的执行,由控制面与数据面控制统一提交或回滚。

1.6.4 新技术运用建议

对于新技术领域的布局,商业银行不能被动等待,要积极投入资源、追踪引进世界金融科技前沿技术,加大对金融科技重大科学前沿问题的前瞻性与战略性研究攻关,打造自主、安全、可控的“技术硬实力”。

在商业银行数据库转型实践中,可以利用NewSQL、数据库网格、人工智能、大数据等新技术,实现使用数据库服务就像使用自来水和电一样简单。新技术的运用充满机遇,但也在银行这样严监管的组织中存在挑战。

针对新兴技术在商业银行数据库转型实践中的运用,有以下建议。

(1)建议提前布局新兴技术,力争实现自主掌控。由于历史原因,我国商业银行的技术创新主要集中在应用技术层面,但核心技术也包括新兴技术依赖国外厂商。银行需要加速实现数据库核心技术研发和掌控,才能在数字化转型实践中建立竞争优势。

(2)新兴技术的研发,建议以需求为导向,产学研深度融合,这既是技术发展的内在需求,也是我国金融信息科技安全稳定的要求。

(3)建议继续加大对金融科技的资金投入。例如,建议金融科技投入占到营业收入的3%以上;建议每年用净利润的1%以上支持新兴技术孵化。

(4)建议继续加大数据库技术的知识管理。随着数据库技术的推广和使用,很多商业银行都积累了相当多的经验知识,建议将这些经验知识都纳入知识库管理。

(5)建议加大知识产权保护和激励机制。对前瞻性的创新技术或者产品,特别是原创性和独创性的创新,要善于利用知识产权进行保护。对知识产权的创造与个人绩效全面挂钩。

1.6.5 新技术输出建议

从目前趋势来看,商业银行与科技产业相互融合更加紧密。已有多家商业银行相继成立金融科技公司,并出台金融科技发展战略落地举措;央行也宣告成立“成方金融科技有限公司”。国内外头部科技公司、基础技术厂商不断加码与金融机构的战略合作及联合孵化,多方参与、竞争合作、融合发展的态势已然形成。未来仍会有更多的银行同业及其他行业机构参与布局金融科技,形态也将越来越丰富。

如表1-4所示,工商银行、建设银行、中国银行、招商银行、民生银行、兴业银行、光大银行等成立了金融科技公司,专门负责对外数字化技术输出。

表1-4 各大银行金融科技公司清单

针对金融科技公司对外数字化技术输出方面,有以下建议。

(1)传统银行成立金融科技子公司,是银行业市场化体制创新的重要平台,也是传统银行未来业务支撑点之一,建议各大银行积极试点和推广。

(2)金融科技公司在组织架构、管理机制等方面可以担当技术输出,在对外输出科技能力上可以轻装上阵,建议各大银行将这种能力加以深挖,最终形成独特的核心竞争力。

(3)金融科技公司在对象选择上,建议优先选择大金融业,包括银行、证券和保险。这样向同属行业输出,成本最低,见效最快。