金融业数据库国产化感想
当前金融行业正逐步进行数据库国产化改造,以替代Oracle、DB2等外国商业软件,降低对国外的依赖,避免发生华为“芯片断供”类似风险,预防对国家金融秩序产生严重影响。笔者在一家国有银行从事数据库运维工作近9年,运维过Oracle数据库、开源MySQL数据库,以及近几年开始使用的多种国产数据库,如OceanBase、TiDB以及TDSQL等,也参与过行内国产分布式数据库选型工作。
最近看到墨天轮排行榜上新出了一个“核心案例”的版块,里面记录的国产数据库核心系统案例,都是金融、运营商行业的,而金融的数量是最多的。正好笔者又是这个行业的从业者,金融业的国产化正在如火如荼进行,作为其中一份子,也想给大家分享一些经验和总结。下面笔者就金融业数据库国产化的一般历程,谈一些个人感想,也欢迎大家批评指正。
1、数据库选型
金融业的系统通常较多,多的可能有几百个,如果直接替代,各方面风险都很高。所以第一步通常是选型,也就是选哪个数据库。选型也是有一系列的流程和标准,下面谈一些主要的。
1.1 产品海选
首先,搜集目标产品,尽量齐全。可以参考墨天轮中国数据库流行度排行https://www.modb.pro/dbRank,这个排行榜是墨天轮社区提供的,榜单几乎包含全量的国产数据库,是一份重要的参考依据。
榜单每周更新,且可以按不同维度进行分类统计,如关系型、时序型、图型、向量型等,关系型又可以细分为OLTP、OLAP、HTAP等,既可以按大类统计、又可以按细类统计,对于初期的数据库品类收集非常方便,如图1所示。
图1 2023年11月中国数据库流行度排行榜
1.2 技术指标
接着是梳理数据库技术能力指标,也就是明确我们对数据库的技术要求。因为替换意味着业务迁移后,核心能力不能缺失,所以必须对数据库的核心技术指标进行明确,以指导选型。
- 高可用
高可用能力是金融业数据库选型最重要的指标之一,只有保证了数据库的高可用,才能保证业务的连续性。而服务的可用能力,永远是金融业最优先考虑的。高可用能力从范围上可以分为单个集群的高可用、分布式数据库整个集群的高可用、跨机房跨地域跨城的高可用等。 高可用能力从恢复时间上又会考察RTO和RPO的时间长短,更细的评价指标还会考虑分布式数据库的高可用的探活能力、全局事务时钟分配瓶颈、管控软件自身高可用能力等。
- 数据一致性
数据一致性是金融业对数据库要求极其严格的一项指标,也是区别于其他行业的一个重要特征。因为金融业会涉及到资金,而资金对数据一致性要求极其严格。如果数据库不能满足数据一致性的要求,肯定是无法入选的。
这里的数据一致性,首先强调的是单个数据库服务自身的一致性,比如:A向B转账,不能A的账户余额减少了,而B的账户余额没有变化;或者A的账户余额没变,但是B的账户余额变多了,这种情况就是数据库自身的一致性没有达到,在金融业肯定是不允许的,而这种数据一致性一般是通过事务保证的,是单个节点上数据库实例的一致性。其次的数据库一致性,包括一套高可用集群中其他节点(MySQL中的从库)和读写节点(MySQL中的主库)数据的一致性,这里又涉及不同数据节点数据的一致性,因为高可用切换后,如果两个节点的数据不一致,将会导致错账的产生,所以是集群内不同节点数据的一致性。最后说的数据库一致性是不同高可用集群间的数据一致性,通常指容灾集群间的数据一致性,比如银行业要求的“两地三中心”、“多地多活”等,在灾难发生时,异地数据库业能快速对外提供服务。
- 应用侵入性
应用侵入性指应用系统代码是否需要改造。传统的Oracle、DB2等数据库的库表定义、数据存储类型、SQL逻辑、存储过程等不同数据库对象的改造程度是否大、业务代码是否需要重写、数据迁移的复杂程度、新老业务数据库数据双向同步是否可实现等,都是应用侵入性的考察点,也是选型需要重点考虑的方面。
1.3 服务能力
服务能力通常是指数据库厂商的服务能力。会重点考察数据库开发、使用年限;数据库厂商的技术研发实力和服务人员规模;数据库在业内的应用案例情况等。这些数据,也可以从墨天轮中国数据库流行度排行中获得一部分权威数据。
2、数据库试用
选型确定后,通常会选定几家数据库产品进行不同系统的试用,一是为了充分对比,二是避免被单家厂商绑定。试用大多数是会从管理类系统开始,或者部分核心系统的边缘业务,或者是核心系统的新老数据库并行。试用时,会着重考察以下几个方面。
2.1 数据库功能性
功能性方面主要考察是否能满足数据库的事务性、不同数据类型存储是否正常、各类业务SQL执行是否满足业务预期等。
2.2 数据库非功能性
非功能性主要包括数据库的稳定性、业务吞吐能力和响应时间(TPS\QPS)、高可用性等。
2.3 运维配套能力
传统数据库有较完善的运维配套工具,比如各类性能视图、常用的运维脚本和工具,能帮助DBA快速诊断数据库问题。国产数据库由于发展时间较短,很多只实现了数据库的基础服务能力,也就是只支撑了业务功能实现。而在数据库的运维配套上比较缺乏,比如数据库监控能力、数据库实例管理能力、分布式数据库的集中管理能力、问题分析和诊断能力等。对于新的数据库,这些配套运维能力是否具备,或者是否好用,也是选型中需要重点考虑的。毕竟新的数据库,需要各类业务压力和场景的磨练,而在试用期,如何发现和解决对应的问题,是至关重要的。
3、数据库收敛及推广
试用期基本可以检验各家数据库产品的能力,系统常规功能是否都满足、出BUG的次数多不多、系统的性能指标是否满足、高可用能力是否符合预期、开发及运维人员使用的满意度等,都会纳入试用期结束的评价指标。
通过评价,进行数据库产品收敛,最终可能会选两三家数据库产品。原因如下:
- 一:降低后期整体费用。
过多的数据库产品,会导致整体费用高。每家数据库产品都需要支付费用,如licence费用、服务费等。如果产品过多,会导致多份费用产生,但是集中选择几家,可以通过买断等方式降低费用。
- 二:集中力量办大事。
过多的数据库产品,意味着开发和运维人员需要学习和使用不同数据库,精力不集中,可能无法把每一种数据库研究的很深,不利于业务开发,运维质量无法保证。如果只选几款产品,则可以集中精力办大事。特别是金融行业,重点看重的是数据库的稳定性,把几款产品使用好,维护的稳定,才能更好保障大家对金融业服务的需求。
选好数据库产品后,再逐步推广至各系统。
4、后记
金融行业正逐步按照相关监管部门要求,进行数据库国产化替代。相信要不了多久,金融行业将实现数据库全面国产化。
最后,本人想说,国产数据库的发展离不开大家的支持,希望数据库从业者也能积极参与各数据库社区或论坛的活动,分享知识和经验,为国产数据库的发展贡献自己的一份力量。
本文为墨天轮社区特约作者 老王 独家供稿,内容原创,仅代表作者个人观点,欢迎大家交流、讨论。如需转载请联系作者或墨天轮官方。
文章被以下合辑收录
评论
