业务挑战
信用卡账单查询业务支持客户通过手机、网页等方式查看账单明细,或通过邮件、APP等渠道接收定时账单推送。该业务特点为数据量大、查询频繁、时延要求高,属于银行关键 OLTP 系统。该系统每日凌晨需导入超 3 亿条账单数据,年增数据量超过 5TB,单表数据量超 180 亿行。随着业务增长,系统面临着以下挑战:
- 数据存储成本高昂:原有 Oracle 数据库的存储容量已达行内规范限制,如需进行垂直扩容,将带来高昂的数据存储成本;
- 影响用户体验:由于 Oracle 存储有限,仅能提供一个月以内的账单数据查询,一个月以上的账单数据查询从 ES 获取,在业务高峰时期,一个月以上的账单查询响应时间甚至达到秒级,严重影响客户体验;
- 业务功能拓展受限:业务存放到不同的数据库中,新增业务功能(如消费分类统计分析)应用开发难度加大,导致功能开发进展缓慢或只能拒绝需求;
- 缺乏安全可控能力:系统需满足生产安全及行业合规需求,具备国产化上下游兼容能力。
解决方案
经过多轮实际业务场景的验证测试,为了满足银行业务系统对性能和高可用性的严苛要求,招商银行最终选择了 TiDB 为信用卡账单查询系统提供服务。TiDB 集群采用同城三中心的部署架构,利用 TiCDC 和 TiDB binlog 等工具,实现了同城集群间的数据同步和增量备份。

- 生产集群采用同城三中心部署,利用 TiDB label 功能将数据均衡分布到三个机房,即使单个机房发生故障,业务仍可正常提供服务;
- 核心平台每日下发账单文件,应用的数据处理平台通过 batch insert 方式,快速完成账单数据的入库;
- 利用 TiCDC 工具,将生产集群的数据实时同步到备集群,一旦生产集群遇到异常,系统可快速切换域名至备集群,由备集群继续提供服务。
客户收益
- 性能与可用性提升:相较于之前的 ES 技术栈,数据导入效率提升了 50% 以上。鉴于原有 ES 的可用性限制,TiDB 的同城三中心方案提供了金融级别的高可用性,保障了业务的连续性。
- 业务开发效率提升:TiDB 的灵活横向扩展能力满足了信用卡历史账单未来在数据存储和计算方面的需求,集群的扩展对上层应用完全透明,使得业务开发团队可以专注于业务逻辑,无需分心于分库分表的问题。
- 存储成本大幅降低:得益于 TiDB 的数据高压缩特性,迁移后的数据存储量仅为原来的三分之一,从而将业务数据的存储周期从一年延长至五年或更久,实现了存储成本 67% 的降低。

客户简介
行业:金融
招商银行业务涵盖商业银行、金融租赁、基金管理、人寿保险、境外投行等领域,截至 2024 年 6 月末,在中国境内设有 143 家分行和 1794 家支行。2024 年,招商银在《财富》世界 500 强中位列第 179 位。