大数据时代,在面对海量的数据时,对数据库管理系统来说是极大的挑战。数据库是所有应用系统的核心,保证数据库稳定、高效、安全地运行是所有企业日常工作的重中之重。数据存储从TB发展到PB,科技业务量呈指数增长,线上化处理已经成为主流。
对于大型企业而言,核心系统是其业务的命脉,而数据库又是其中的基石,数据库本身的稳定性和安全性优先于一切,因此对于企业而言,核心系统的完全替代并非易事。数据总量呈现爆发式增长。如何存储和处理海量数据、如何实时集成庞大的数据,如何处理数据的安全性问题等,也将成为亟需解决的问题,必将带来新一轮的数据库系统底层技术的变革。
本期我们有幸采访了工商银行的魏亚东魏老师,一起探讨金融行业的核心需求、金融行业的安全管控核心诉求、工商银行MySQL落地实践等问题。
问题1:您好,魏老师!很荣幸有机会采访到您,先简单介绍一下您自己!
大家好,我是魏亚东,很荣幸收到ITPUB社区对我采访的邀请。本人有近14年大型国有银行科技体系工作经历,工行软件开发中心三级经理,资*深架构师,多次受邀参加业界分享,获得OCP(Oracle、MySQL)、信息安全工程师(中*级)认证,曾任杭州研发部数据库专家团队牵头人和开发中心安全团队成员,负责技术管理、数据库、安全相关工作。本人2009年加入中国工商银行软件开发中心,致力于推动管理创新、效能提升,提供全面技术管控,推动自动化实施,实现业务价值的高质量快速交付;同时作为技术专家,为生产安全提供技术支持;负责过信贷、教培、预付费等SaaS产品、银证转账、基金销售、数字生态基座( 组装式应用程序Composable Applications )等多条产品线建设。
问题2:您在09年加入工商银行,至今已有14年的金融行业工作经验,您认为金融行业数据库选型的需求核心是什么?应该怎么制定一些相关策略完成需求?
个人以为金融行业数据库选型需求核心至少包含五方面:
1)高可靠性,即具备企业级的业务支撑能力,支持多场景下高并发、可扩展和海量数据库存储及访问。
2)高可用性,一是提升数据库的运维自动化和智能化能力,支持与自身系统进行适配性定制;二是应支持多地多活,避免单点故障导致数据库不可用。
3)高安全性,金融行业的数据通常都是敏感的,因此数据库需要提供有效的安全措施以保证数据的保密性、可用性、完整性等,确保数据安全。
4)低成本,即应能大幅降低使用成本,一是可基于通用的廉价的X86、 ARM、RISC-V等硬件基础设施进行实施;二是平衡商业产品和开源产品的关系,规避开源许可证的潜在隐患,互联网企业的发展历程以及现在百花齐放的国产数据库浪潮为其提供了有力支撑。
5)社会声誉性和政治因素风险,一是客户对金融行业的期望很高,特别是对银行等金融组织,所以要求也更加严格,原则上应该是7*24小时的不间断服务;二是金融行业应将科技自立自强作为重要战略,密切跟踪新一轮数据库变革方向,加大前瞻性、基础性、颠覆性技术创新的超前布局,结合行业发展趋势和客户需求不断制定和完善相关策略,积极抢占未来产业制高点。比如积极研发新产品或引入相关产品以替代近长期霸榜的ChatGPT。
为了满足这些需求,金融行业需要结合行业发展趋势和客户需求,不断制定和完善相关策略,个人建议可以根据演进式架构体系构建四维目标式管控体系:一是数据库都有适用场景,不存在包打天下的数据库产品,需要结合业务场景逐步形成多数据库混合发展的演进路线;二是建立重点数据库的研发管控体系和安全管控体系,确保标准化、自动化、可度量,确保设计、研发、测试、交付与运维全流程的技术管控和安全管控的纳什均衡,确保生产安全和数据安全;三是基于海恩法则针对每个运维实践及时响应和溯源,反思研发过程中每个环节可以改进提升点,防止类似问题重复发生;四是开展开源产品的研究和落地,做到他山之石,可以攻玉,了解其中隐藏的一些bug风险以及商业风险。
问题3:工行已经在MySQL建设方面有丰富的经验,针对MySQL的研发管控体系,工行是如何结合DevOps进行管控的?
工行基于“标准化、自动化、可度量”的目标构筑了三位一体MySQL性能管控体系:
1)构筑线上DevOps全维度质量门禁和线下QA定期检查的融合体系,实现研发阶段的合规性,避免生产隐患流入下一环节,守护生产安全:一是设计环节确保顶层架构有管理、有流程、有规范。建立方法论,形成设计开发指引,基于三大设计原则规范设计开发人员,做到知其然亦知其所以然;通过表结构设计工具和软件资产管理系统,统筹数据标准,从源头规避生产风险,并为数据驱动能力做好支撑;开展能力提升课程,持续提升人员数据库能力。二是开发环节基于业界Sonarqube和Sonarlint插件工具扩展新增检查规则,涵盖常见错误,形成规范的自动化检查门禁,实现本地检查规则与云端同步,夯实开发管控。三是测试环节通过安全测试、性能测试以及混沌测试避免SQL性能和安全问题,保证系统不会因为某些节点故障导致突然性崩溃,有效提升分布式系统的可恢复性和对故障的容错性。如阿里的ChaosBlade就是一款业界常见的混沌测试工具,并在工行落地。四是发布环节通过sre视角去发布态势感知报告,基于技术层面、性能容量层面和安全层面提出针对性的意见建议,并形成后续的整改措施,持续提升应用能力;五是运营环节通过慢SQL监控、大事务查杀,持续构筑1-5-10的根因分析体系,确保运营体系的不断完善和演进,有效守护生产安全。
2)针对每个运维实践及时响应和溯源,基于海恩法则反思研发过程中每个环节可以改进提升点,防止类似问题重复发生。例如需求缺失场景,查询条件没有限定时间范围,导致数据查询范围过大影响语句性能;开发代码缺陷场景,Mybatis语句未使用#{param}进行预编译,而是使用${param}做字符串拼接,导致存在SQL注入漏洞。
3)能力沉淀为知识库、技术组件和度量模型,实现管控体系的不断演进。
问题4:您怎么看待业界安全态势?金融行业的安全管控核心诉求是什么?
随着互联网和黑灰产的蓬勃发展和进步,业界安全态势日益严重,数据安全危害程度日益加剧,一是APT和国家组织层面的外部活动频率日益增加,开源组件0day漏洞呈指数级增长,对业界安全造成巨大的威胁,如17年勒索病毒“WannaCry”迅速席卷150多个国家,波及超20万台机器,而这仅仅是美国NSA方程式组织(Equation Group)泄露的其中一个极小的工具;据统计,暗网21年信用卡买卖信息达到了450万条,从而引发电信诈骗、盗刷等黑产的觊觎;二是数据安全已上升到国家战略层面,自216年开始欧盟GDPR、美国CLOUD 法案、我国《网络安全法》的发布和正式实施日益强调了数据安全的重要性。风险基础安全(Risk Based Security)数据显示,2020年全球数据泄露达到360亿条。IBM《2021年数据泄露成本报告》显示,数据泄露事件平均带来424万美元损失并指出,2021年数据泄露85%涉及人为因素。特别是荷兰对 “抖音”国际版罚款75万欧元,中国企业(包括其控制的海外平台)次遭处罚,具有一定标志性意义。
因此,金融行业对安全管控的核心诉求是:
1) 提升人员安全意识(网络安全的关键和核心)。一是提升人员安全意识,避免被钓鱼、社会工程学等因素泄露一些关键数据;二是做好小权限管控,可以通过文档加密或加水印,避免人员有意识地泄露数据。
2) 基于DevOps等研发工具链实现安全左移,柔和嵌入现有开发体系。一是将安全工具嵌入DevOps流水线,建成高效安全门禁,自动化管控安全出口质量;二是应快速完成漏洞修补工作,降低安全漏洞。
3)强化运行时动态入侵检测。一是快速识别异常攻击行为,识别行为数据的的常见攻击路线;二是持续风险评估能力,快速识别行为偏离。
4)夯实快速响应。一是舆情影响范围快速聚焦;二是自动实现舆情分发和跟踪处置,提升应急响应时效。
问题5: 近年来,各种安全威胁层出不穷。银行业作为数据应用的核心区,高度重视用户数据的保护,在数据安全防护措施方面不断建设和升级,在所有行业中保持领先,需要体系化地考虑数据安全防护工作,工行是如何进行安全管控的?
工行基于“一个提升、两个降低”(提升应用安全开发技术水平及人员能力、降低应用风险漏洞数、降低应用监管合规风险)的目标构建开发运营一体化的安全管理及技术体系。
1)顶层架构有管理、有流程、有规范,有考核,即必须要有方法论基石,确保出问题后有法可依,从而形成的安全管理及标准体系包括两个方面:一是建立安全开发规范(应用需求规范、安全设计规范、开发规范,还有测试规范以及安全合规性的技术规范)和安全管理规范;二是开展人员管理建设,涉及组织架构与岗位角色的调整以及安全人员培养等等。
2)平台支持,即要求平台化技术规范的策略化可以做到全流程的覆盖,涵盖研发全流程。通过将工具链进行整合,降低使用门槛,提升人工效率以及提供闭环安全能力。这包括引入业界安全工具链和研发DevSecOps相关安全工具两种情况。
3)安全知识库,将专家能力进行沉淀,做到人人都要为安全负责,形成安全基线库、安全开发知识库、安全测试知识库、软件制品库、安全培训库等多种知识库。
问题6:工行MySQL数据库技术路线与同行业的区别在哪?对于金融行业数据库的未来,您有什么建议?
工行MySQL数据库路线与业界一样,都是逐步往已经经过业界广泛验证的MySQL8.0进行演进。随着国产数据库的喷涌勃发、云技术的普及和大数据时代步入成熟期,对于金融行业数据库的未来,个人认为未来大致可分为以下3点:
1) 基于混合数据库使用的场景日益丰富,从Gartner2023年技术趋势来看,数据驱动业务决策即将成为金融行业数据库的核心需求之一,通过传统数据库、NoSQL数据库和NewSQL数据库的协同必然是未来的趋势。
2) 基于隐私增强计算的数据库安全性和合规性将不断提升,满足各国数据安全管控要求,有效守护数据安全性,并通过多种隐私计算手段在保护客户隐私的基础上强化数据分析能力。
3) 好的数据库会优胜劣汰,拥有完善的工具和第三方支持生态体系,比如MySQL、PostgreSQL等数据库的生态会持续完善,方便金融行业结合业务场景进行选型。
问题7:开源,是这个时代的主旋律,也是必然的发展趋势,您怎么看待国内的开源形势?
开源一直是经久不衰的一个话题,一是解决了业界重复造轮子的问题,使大家可以站在巨人的肩膀上做事,事半功倍。二是为用户提供了更广的选择空间,技术的进步和对更灵活、更具成本效益的解决方案的需求不断增加,可能会推动开源采用的进一步增长。但是我们也要看到开源收益背后的安全风险,比如Log4j2是业界广泛使用的日志框架,其21年爆出来的0day漏洞组合拳让开发人员不眠不休至少72小时。
目前国内的开源形势迅猛发展,政府、企业、个人三个层面都在积极投入,各行各业都在大力推广和支持开源技术,开源社区也在不断壮大,这为国内的开源技术发展带来了很好的机会。但是,我们可以看到国内开源趋势会集中在技术的完善,比如有些开源数据库产品是基于MySQL或PostgreSQL进行扩展;亦或近期很火的ChatGPT是基于transformer模型进行开发,语言理解能力,而传统的基于统计的语言识别模型对于语义的理解性相差较大,智能化稍显不足。
问题8:每个数据库都有自己的优缺点和适用性,对于MySQL的性能排查方面,您是否有什么好的意见和建议?
关于MySQL的性能排查,其是一个需要能力不断提升的过程,个人建议可以通过如下三点进行:
1) 用5W1H原则了解问题现象,即什么问题在什么时间、什么地点如何发生,当时是谁做了怎样的处理。同时收集现场信息,包括常见的日志信息、流量信息等,尽量做到全面排查。
2) 判断系统连通性:检查mysql.err文件,如果发现access denied报错,则可能需要访问授权并确认防火墙开通情况。
3) 确认数据库语句执行效率低,则检查mysql.err、slow-queries.log等相关日志文件,并结合 performance_schema.events _statements_summary_by_digest等表中的语句执行情况进行查勘以便进一步调优。一是判断是否有死锁(关键字 deadlock detected)或其他锁(如间隙锁等),则优化相关业务逻辑;二是判断语句效率,通过 Explain 查看语句执行计划,添加相关索引或调整不合理的索引,确保执行计划少应该达到范围扫。三是分析事务、连接池、缓存等情况,确保参数设置和系统使用的正确性和合理性。四是确保硬件资源足够,确保是否需要进行分库分表以便缓解压力。
问题9:您在国有银行科技体系有14年的工作经验和行业成就,您对数据库行业从业者是否有一些好的意见和建议?
对于数据库行业从业者,个人有如下以下四点建议:
1) 与时俱进,厚积薄发:数据库技术不断发展,作为数据库行业从业者应该不断学习新的知识和技能,了解多种数据库技术的优点和缺点,以便根据项目需求合理进行数据库选型,比如ClickHouse、TiDB、MySQL、MongoDB、Neo4j等各种数据库的适用场景。
2) 知行合一,不断实践:数据库从业者应在知悉原理的基础上强化实际技能,避免纸上谈兵。
3) 研读开源代码,了解其隐藏的bug,做到它山之石可以攻玉。
4) 参加行业活动,与行业专家和同行交流,了解行业新动态和发展趋势。
专家照片: