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

2024-03-11 08:10

本文主要是介绍透析商业银行在云时代下的数据库需求与选型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

这篇关于透析商业银行在云时代下的数据库需求与选型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/797199

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

DM8数据库安装后配置

1 前言 在上篇文章中,我们已经成功将库装好。在安装完成后,为了能够更好地满足应用需求和保障系统的安全稳定运行,通常需要进行一些基本的配置。下面是一些常见的配置项: 数据库服务注册:默认包含14个功能模块,将这些模块注册成服务后,可以更好的启动和管理这些功能;基本的实例参数配置:契合应用场景和发挥系统的最大性能;备份:有备无患;… 2 注册实例服务 注册了实例服务后,可以使用系统服务管理,

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

内卷时代无人机培训机构如何做大做强

在当今社会,随着科技的飞速发展,“内卷”一词频繁被提及,反映了各行业竞争日益激烈的现象。对于无人机培训行业而言,如何在这样的时代背景下脱颖而出,实现做大做强的目标,成为每个培训机构必须深思的问题。以下是从八个关键方面提出的策略,旨在帮助无人机培训机构在内卷时代中稳步前行。 1. 精准定位市场需求 深入研究市场:通过市场调研,了解无人机行业的最新趋势、政策导向及未来发展方向。 明确目标

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试