自2019年开始开始调研国产分布式数据库,2020年正式上线,2021推广应用。至今已有3年了。由于近2年国家在大力推动信创产业的发展,关于国产数据库的讨论也越来越热烈,不少业内的DBA专家也都发表了一些观点。作为最早一批试点应用国产数据库的金融机构,也想聊聊我们的一些经验。
为什么要用国产数据库?
我们的核心系统在AS400平台上已经跑了近20年了,在2019年,我行启动了新信贷系统的建设,同步规划新核心的建设,新核心必然不可能继续跑在AS400上,国内从事AS400的开发人员已经非常少了,国内也没哪家银行建新核心还用AS400了。那么新核心应该用什么数据库?如果没有2018年的中美开始的贸易战、科技战,我想毫无疑问答案是Oracle。但中美科技战背景下,Oracle关闭中国研发中心,Oracle再好也不必跪舔吧?因此,我行高层制定了在新一代核心系统使用国产数据库的目标,建立了统筹规划、分步建设、防控风险的指导思路,稳步推进国产数据库落地和应用。采用分步建设的方式,首先改造的是核心系统中的信贷核算模块,建设统一核算平台,其次再启动等其他业务核算模块的移植,最后完成核心系统的改造。在经历这几年的Oracle取消老盖等人的ACED、俄乌冲突等一系列事件后回过头来看,当初高层的这项决策实在是无比的正确英明。
用分布式还是集中式?
行业内很多专家关于这个话题都从技术层面谈了分布式数据库相对集中式数据库的一些弊端,在这里我也就不多说了,各有优缺点。我想说的是在央妈2019年印发的《金融科技(FinTech)发展规划(2019-2021年)》第七大点就是“加强分布式数据库研发应用”。分布式数据库和云计算、大数据、人工智能在金融科技发展规划里的几个重点课题。那是不是应该全面应用分布式呢?国内某大行的数据库负责人曾提出分布式数据库未来肯定是全面应用替换集中式数据库。对此我也不赞同,一家银行少则1百多个应用系统,多则几百个应用系统,作为中小银行,许多应用的数据量连100G都不到,有啥好分布式的?因此,作为中小银行,我们必然需要应用分布式数据库,分布式数据库对于中小行来说解决的更多的是高可用、高可靠的问题,在核心、互联网类等重要业务系统考虑使用分布式架构,但其它更多的一般业务系统、办公管理类系统仍然还是以集中式为主。
我们是如何选型的?
在2019年虽说国产数据库的厂家不如现在那么多,大概十几家。但我们目标是为将来的新核心系统选型,因此首先必须支持分布式,某些传统的国产数据库因为不支持分布式而不在考虑范围,剩下的是几家大厂和初创企业,某几家初创企业交流完后听说我们是为新核心选型,自己都不敢来就放弃了,当然也有可能不是对自己没信心而是对我们中小银行没信心。相比大行,我们在资金、技术、人员方面都有很大的差距,因此在选型时重点关注以下几个因素:
案例:在2019年,银行业核心系统应用国产分布式数据库的案例几乎没有,但中信银行的核心系统已经在GoldenDB上并行很长一段时间,最终信用卡核心在2019年10月上线,2020年5月上线了新核心。
服务支持:作为三线城市的中小银行,我们不像大行那样受厂家的重视,因此我们非常看重厂家的服务支持力度,在调研测试过程中,中兴公司高层重视,支持力度最大,整个数据库团队从高层到销售、售前、研发、售后支持的负责人均和我们进行了深入交流。而某些公司只能见到销售和售前。目前来看,GoldenDB的团队也相当的稳定,和我们打交道的这些人员至今还在,而其它公司当初跟我们交流的销售售前大部分都已经跳槽了,好几家公司后面有新的销售售前找到我来介绍他们的产品,但他们却不知道他们公司之前已经有人跟我们交流过了。而某公司的数据库产品总监现在已经是另一产品的总监了。 技术路线:传统数据库技术经过60年的发展,多个生态都已经成熟。从分布式数据库研发的技术路线来看,选择稳定安全的生态是更加适合金融行业的安全性及可靠性要求的。基于MySQL的生态,在行业内已经应用多年,相对来说是更为成熟安全的路线,既可以分布式也可以集中式,对于开发运维人员和应用厂商来说更容易适应且容易接受。
测试情况:作为中小银行,在测试时我们重点关注分布式事务的一致性、数据库的高可用性,其次才是性能。GoldenDB在测试时的综合表现也是最好的,另一家公司的产品测试时在多节点(管理节点、计算节点、数据节点)同时故障时连数据一致性都无法保证。
所以,当时从案例、服务支持、技术路线、测试情况均是GoldenDB最适合我们,价格也是最优的,因此我们最终选择了GoldenDB,截止到目前,我们已上线近30个应用。
那么国产数据库是否好用?跟Oracle比当然有不小的差距,但我们愿意和厂商一起共同成长,只有越来越多的人用起来国产数据库才可能越来越好。在商业数据库方面,监控运维相关的工具都已经相当的成熟,而国产数据库在这方面的生态是还未完全建立起来。但这块的能力是我们的强项,下一篇文章将分享下我们在国产数据库运维过程中做的一些工作。




