您当前的位置:首页 > 生活百科 > 科学

透析商业银行在云时代下的数据库需求与选型

时间:2020-07-17 16:34:18  来源:  作者:

作者介绍

洪烨,多年银行业系统架构设计及DBA实战经验,2013年出版数据库书籍《DB2数据库内部解析与性能调优》。

伴随着云计算、分布式技术的逐步落地,近十年来数据库的形态也发生了很大变化,各类数据库如雨后春笋般不断涌现。从架构形态和应用功能的角度来区分,本文将这些新兴的数据库分为三类:分布式、NoSQL及云原生数据库。

过去关系型数据库滥用的时代已经逐渐结束,分布式、NoSQL及云原生数据库的出现,也带来了如SQL已死、NoSQL或NewSQL取代SQL的等各类声音。但以目前的发展趋势来看,将来更大可能性是会出现多种数据库共存的情况,各个数据库奋战在最适合的场景下。

因此,只有先对这些数据库有了深入的理解,才能更好地选择对应的场景。尤其在商业银行场景下,如何通过这些数据库来更好地实现业务诉求,相信是很多银行仍在持续探索的方向。

分布式数据库

2000年左右,以Teradata为代表的MPP架构的数据库在数据仓库系统逐步推广;2013年NewSQL一词的提出,标志着分布式数据库开始进军OLTP负载的领域。随着NewSQL不断发展成熟,出现了Spanner、TiDB等主要代表性的产品。

分布式数据库主要是将数据分布在多个物理节点上,通过网络传输的方式对多个物理节点进行协调,以横向扩展的方式突破了单机数据库在容量上的限制。但随之而来也出现了新的问题:如何保证节点间的数据一致性?如何保证多节点对外的事务一致性?如何跨节点实现join、聚合、自定义函数、存储过程等原有的SQL操作?

分布式数据库本质而言还是单机数据库的扩展,如果把单机数据库拆开来看(如图1所示),数据库的核心组件主要分为服务层(提供SQL接口,也称SQL引擎层)、引擎层(实现事务的ACID,也称为存储引擎层)及存储层(实现数据结构及物理存储)。

透析商业银行在云时代下的数据库需求与选型

图1

存储层解决节点间数据一致性问题

横向扩展为了降低成本,通常会采用廉价的硬件,并且由于节点间需要通过网络传输,硬件的不可靠以及网络的不可靠也标志分布式数据库本身就处于一个不可靠的物理环境,需要通过额外的手段提升可靠性。

目前主流的实现方式都是通过将数据写入到多个副本中,来确保数据的安全,由于网络传输的先后顺序,节点间收到数据同步请求也不一致,如果等待全部节点都同步写入成功,又会对性能有较大的影响。

目前数据库产品通常采用Raft、Paxos等算法或变种来实现节点间数据一致性,节点间的数据传输通常包含应用数据、元数据及事务日志。

引擎层保证对外的事务一致性

分布式数据库中不止需要考虑节点内部事务的一致性,更需要考虑全局事务,主流的工业实现在性能以及复杂度权衡,目前基本采用二阶段提交(2PC)来实现。但二阶段提交的缺陷在于:

在不同的分布式应用架构下,实现一个分布式事务要考虑的问题并不完全一样,比如对多资源的协调、事务的跨服务传播等,实现机制也是复杂多变。此外,针对全局时钟及序列的实现也是数据库产品的主要关注点。

服务层实现跨节点的SQL操作

SQL可以按算子处理先后顺序为扫描、关联、汇总三个阶段,基本上所有SQL语句都包含了扫描阶段,部分SQL包含了关联(join)或汇总阶段。

对于只进行扫描的SQL(就是SET/PUT某个表的一条或多条记录),这种SQL操作比较简单,在分布式数据库中此类SQL的性能关键点往往过滤条件中在于是否包含分布键,以及节点间的数据是否存在严重偏移。

包含关联逻辑的SQL语句在分布式数据库场景下,需重点考虑SQL是否会引起跨节点的数据传输,是否能够将过滤和join逻辑下推到本地节点处理,通常会对性能产生极大的影响。聚合操作的SQL通常为group by、order by、having、limit等子句以及聚合函数,数据库在读取数据之后,需要对结果数据在协调节点进行聚合,因此对于协调节点的内存开销较重,协调节点需要能够处理大数据量的内存轮换。对于以上两类的SQL语句,常见的优化方法包含创建本地表、join下推、排序下推、过滤下推等方式。

整体来说,分布式数据库的优势在于突破了单机数据库的容量限制,多节点可以实现高并发;而劣势在于,SQL的兼容性较差,落地过程伴随着应用程序改造,并且由于二阶段提交的问题,会导致额外的运维成本。

NoSQL数据库

2010年左右,MongoDB、redis、Neo4j、HBase等各类非关系型数据库的涌现引发了大家对NoSQL的思考,当时也不断有NoSQL会替代关系型数据库的声音。随着近十年来的发展,NoSQL数据库在细分领域表现得非常优异,常见的NoSQL主要包含以下几类:

  • key-value数据库:一种以键值对存储数据的一种数据库,目前主要代表为Redis。Redis支持存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove、取交集并集和差集等更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
  • 文档数据库:面向集合的数据库,无需进行结构定义(简单来讲就是不用创建表就可以使用),以MongoDB为代表。所谓“面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
  • 图数据库:随着社交、电商金融、零售、物联网等行业的快速发展,现实社会织起了一张庞大而复杂的关系网,传统数据库很难处理关系运算,以neo4j、ArangoDB等为代表的图数据库满足了此类需求,将结构化数据存储在网络(从数学角度叫做图)上而不是表中。
  • 列簇数据库:大数据的兴起也带动了列簇数据库的发展,主要代表为HBase和Cassandra。列簇数据库将数据存储在列族中,而列簇里的行则把许多列数据与本行的“行键”关联起来。行是列的集合,由相似行构成的集合就是列族。列族数据库的各行不一定要具备完全相同的列,并且可以随意向其中某行加入一列。

目前而言,NoSQL主要是活跃在擅长的细分领域,但由于架构、成熟度等诸多因素,其在事务的支持上还需进一步完善,并且对于SQL支持度不高,也导致了研发人员额外的开发成本,未来会向哪些方向发展有待观望。

云原生数据库

2015年,全球市场份额最大的云厂商AWS发布了云原生的数据库产品Aurora,提出了log is database的新一代数据库理念,也从性能及可靠性上与RDS形成了差异化。

随后各个云厂商也推出了Aurze SQL Database、PolarDB以及CynosDB等云原生数据库。在将计算和存储等节点分离之后,各模块的性能和弹性就可以各自提升,具备应对大规模存储的能力。

以Aurura为例,通过log is database的设计哲学,将数据的更改变为只写日志,即write-once,极大地降低了数据库的写入操作。同时为了更好地适应云计算,他们认为应该将数据库系统这个“盒子”打开,在不同的层面进行扩展。

Aurora将恢复子系统委托给底层可靠的存储系统,依赖这个来保障系统服务层级(Service Level Agreement, SLA)。使得Aurora在没有引入分布式事务以及无需对应用进行改造的前提下,将性能和弹性扩展能力进行了极大的提升。

商业银行的挑战与选型思考

对于商业银行而言,随着国产化浪潮、线上支付的兴起以及大数据、AI等新技术的成熟,银行IT系统主要发展向着国产化、智能化、服务化的方向演进。银行的IT系统按功能划分大致可以分为四类:渠道服务系统、业务前置系统、账务处理系统、管理信息系统。

渠道服务系统与传统业务相比,已经与各个线上平台进行了相关对接,随着双11、618等各类平台的促销活动,高并发的支撑和资源能否快速弹性扩展成为线上渠道服务系统的必要考量因素。在这种背景下,可以采用基于私有云的弹性扩容以及云原生数据库的极致扩展来应对此类的业务爆发场景。

由于历史原因,核心账务类系统目前大多运行在IBM的大型机或小型机上,此类系统作为银行系统的心脏,并发高、一致性要求高,且兼顾联机交易及批处理场景,随着业务发展,面临着扩容成本高、扩容难度大的问题。

并且随着国际形势的变化,也必将面临着国产化之路,如何将核心数据库从Power 下移到ARM或将成为银行需要面对的课题。由于硬件本身的差异性,如何将现在的传统关系型数据库迁移到分布式数据库也必将是这个课题的核心重点和难点。

随着金融业务放宽及渠道的拓展,需要通过数据支撑贷款审批、金融诈骗、洗钱以及实时营销等场景,对于数据类系统的实时性要求提高,数据处理也从传统的T+1、D+1向着D+0及实时的方向转变。在这些需求下,图数据库、KV数据库以及文档数据库等也快速地补充了进来,提供了多模数据处理及实时分析的能力。

总体来说,个人理解数据库的架构形态主要由三个原因引起:

  1. 由于业务量及数据量的增长,对数据库的容量提出了新的要求;
  2. 由于应用需求的变化,需要高速处理新型的数据类型;
  3. 由于基础架构的进步,对数据库扩展性和性能提出了新的解决方案。

而以上的三类挑战,将会是今后的常态化现象,未来会出现越来越大的数据量要求、更多种类的数据类型,以及更健壮强大的基础架构。而如何不断地使用新的工具来应对挑战,打造可扩展的系统,支撑业务发展和业务诉求,必将是银行业IT从业者长期的使命。

近几年,云和AI的崛起在数据库领域碰撞出许多新技术与新思想。想知道云时代下数据库将如何革新与创变?金融行业核心数据库迁移与建设如何安全平稳展开?来2020 DAMS中国数据智能管理峰会上海站寻找答案:

  • 《All in Cloud 时代,下一代云原生数据库技术与趋势》阿里巴巴集团副总裁/达摩院首席数据库科学家 李飞飞(飞刀)
  • 《金融行业分布式数据库需求及选型》工商银行 数据中心系统三部副总经理 赵永田
  • 《从自研演进看分布式数据库》中国银联 云计算中心团队主管 周家晶
  • 《开源数据库MySQL在民生银行的应用实践》民生银行 项目经理 徐春阳


Tags:云时代   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
常见的网络安全威胁1、照片泄密案日本情报专家根据左图破解中国大庆油田的“秘密”,由照片上王进喜的衣着判断出油田位于北纬46度至48度的区域内;通过照片油田手柄的架式,推断...【详细内容】
2020-07-21  Tags: 云时代  点击:(84)  评论:(0)  加入收藏
作者介绍洪烨,多年银行业系统架构设计及DBA实战经验,2013年出版数据库书籍《DB2数据库内部解析与性能调优》。伴随着云计算、分布式技术的逐步落地,近十年来数据库的形态也发生...【详细内容】
2020-07-17  Tags: 云时代  点击:(114)  评论:(0)  加入收藏
在过去10年出现的众多技术中,云计算因其快速发展而引人注目,从一个细分领域的技术发展成为了全球热点。云计算发展至今经历了几个阶段:第一阶段,是云计算的萌芽期;第二阶段,是公有...【详细内容】
2020-06-28  Tags: 云时代  点击:(63)  评论:(0)  加入收藏
IT发展以来,从个人电脑到云计算,唯一没有缺席的一个技术就是监控,当我们打开Windows任务管理器的时候看到CPU、内存就是监控,到我们今天大部分工程师打开云的控制台,大部分情况...【详细内容】
2020-05-07  Tags: 云时代  点击:(30)  评论:(0)  加入收藏
经过多年的发展,云计算技术逐步地融入工业、交通、金融、医疗、生活服务、教育等众多行业领域,广泛地服务于实体经济,成为众多企业数字转型的核心关键技术。那么,云计算发展现状...【详细内容】
2020-04-15  Tags: 云时代  点击:(92)  评论:(0)  加入收藏
▌简易百科推荐
日本在今年又给大家带来了一个巨大消息,日本著名的球星本田圭佑出资设立的一家公司,正式发售了飞行摩托车。 在之前可是在电视或者是电影中才能看到的,是具备了未来科幻的一个...【详细内容】
2021-12-28  科学知识点    Tags:飞行摩托   点击:(4)  评论:(0)  加入收藏
在海洋、陆地、天空三片领域中,都有处在食物链顶端的王者,它们站在食物链顶端,拥有王者的身份,如海洋霸主虎鲸是毫无争议的海洋王者,在海洋中,基本上是所向披靡,没有天敌,而草原王者...【详细内容】
2021-12-17  小楠动物世界    Tags:   点击:(8)  评论:(0)  加入收藏
氦元素在全宇宙的质量中大约占了24%,但是在地球大气中的浓度为5.2 ppm(1ppm=0.0001%)[1],因此称它为稀有气体。稀有气体也被称为惰性气体,化学反应上的惰性也是造成氦气在地球上含...【详细内容】
2021-12-15  中科院物理所    Tags:稀有气体   点击:(8)  评论:(0)  加入收藏
在管理工作中,有些传统的做法是错误的,我们要避免犯这些错误。以下这11条,都是错的。 01 . 拒绝承担个人责任有一次,有一项工作出了差错,董事长把我叫去骂了一顿。我对董事长说,“...【详细内容】
2021-12-14  股权设计布局    Tags:管理   点击:(5)  评论:(0)  加入收藏
对光的研究起源于古希腊,在那里,哲学家们开始思考视觉是如何工作的。柏拉图和毕达哥拉斯等思想家认为,我们的眼睛会发出微弱的光线进行探测。这些光线将收集我们周围物体的信息...【详细内容】
2021-12-08    中科院物理所  Tags:   点击:(12)  评论:(0)  加入收藏
据阿根廷布宜诺斯艾利斯经济新闻网12月6日报道,进食后感到困倦或疲惫是很常见的。这可以解释为,在那一刻,身体所有的能量都“投入”在消化过程中,短时间内感到有点昏昏欲睡非常...【详细内容】
2021-12-08    参考消息  Tags:犯困   点击:(8)  评论:(0)  加入收藏
量子力学能用来干什么?更该问的是它不能干什么!在知道了量子力学这个学科后,许多人就会来问:它能用来干什么?实际上,这个问题问偏了。真正有意义的问题是:量子力学不能用来干什么?因...【详细内容】
2021-12-07  中科院物理所    Tags:量子力学   点击:(16)  评论:(0)  加入收藏
电流是什么?首先回想下,我们学过的电流的定义是什么?很简单,导体中的带电粒子的定向运动就是电流。只有当物质内具有能自由移动的带电粒子,它才可以传输电流——即导电...【详细内容】
2021-12-07    中科院物理所  Tags:电流   点击:(25)  评论:(0)  加入收藏
要理解光速不变原理。首先要有抛弃固有的思维模式的思想准备,否则不容易理解。因为爱因斯坦这个理论有点离经叛道。 我们都知道,描叙一个运动,必须有参考系才有意义。说一列火...【详细内容】
2021-11-30  宇宙探索    Tags:光速不变   点击:(18)  评论:(0)  加入收藏
一半是彻夜无眠,而床上的另一半是呼噜声连绵不绝。这个场景恐怕是很多家庭的真实写照了吧。更让人崩溃的是,推一下不打了,下一秒又开始了“呼~~~呼~~呼”。给我闭嘴!!!那为什么“...【详细内容】
2021-11-17    科普中国  Tags:打呼噜   点击:(22)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条