---
title: '以一当十丨TiDB 在东吴证券秀财 APP 的应用实践'
date: '2024-03-14T19:21:17+08:00'
status: publish
permalink: /blog/tidb-in-soochow-securities
author: '周, 盛虎'
excerpt: '本文介绍了东吴证券旗下东吴秀财 APP 在数据库转型中选择 TiDB 的思考与实践。东吴证券选择将 MySQL 分库分表和 MongoDB 替换为 TiDB，这一举措极大简化了架构，实现了兼容 MySQL 生态、性能飞跃、金融数据强一致性的 HTAP 以及便捷运维等优势，提升了业务效率和管理效能。'
type: post
id: 6376
category:
    - 案例实践
tag:
    - MySQL
    - '一栈式 HTAP'
    - 金融
post_format: []
profile:
    - 李豪奇
---
本文作者：东吴证券信息技术部 系统架构师 李豪奇

导读
--

本文介绍了东吴证券旗下东吴秀财 APP 在数据库转型中选择 TiDB 的思考与实践。原有架构使用 MySQL 分库分表和 MongoDB，但面临着架构复杂、业务扩展性不足、性能问题、开发和运维负担重等挑战。为了有效应对这些问题，东吴证券选择将 MySQL 分库分表和 MongoDB 替换为 TiDB。这一举措极大简化了架构，实现了兼容 MySQL 生态、性能飞跃、金融数据强一致性的 HTAP 以及便捷运维等优势，提升了业务效率和管理效能。未来，东吴证券计划进一步利用 TiDB 的特性，解决存量 MySQL 实例管理成本高的问题，提升资源利用率和运维效率。

> 东吴证券股份有限公司（以下简称“东吴证券”）成立于 1993 年，是拥有全部证券类业务牌照的综合券商。2011 年 12 月 12 日，东吴证券作为全国第 18 家上市券商、首家地级市上市券商在上海证券交易所挂牌上市。东吴证券重新塑造了中国投资银行的业务模式，凭借差异化的领先优势，为客户提供全生命周期的金融服务。目前，东吴证券在全国设有 22 家分公司和 132 家营业网点。

数据库转型势在必行
---------

东吴秀财 APP 是东吴证券倾力打造的新一代移动端财富管理平台，汇集了自助开户、行情交易、业务办理、基金理财、投顾资讯、社交分享等丰富业务功能，不仅满足用户基本的交易需求，还为用户带来个性化的理财体验。用户可以订阅“五牛组合”等资深投资顾问的股票组合，查看最新最全的重磅金融消息，并一站式购买爆款理财产品。东吴秀财 APP 开启了互联网理财服务的新模式，这些业务要求底层数据库具有非常好的开发敏捷性和业务弹性。

长期以来，金融行业主要依赖国外厂商提供的基础软件产品，尤其是在关键的核心数据库领域，使用由 Oracle 等国外科技公司的产品。然而，国外数据库产品存在技术壁垒，其核心技术封闭且不可控，版权费用高昂，存在着潜在的风险。在自主创新的环境下，选择国产数据库替代主流的国外商业和开源数据库，已成为当前的主要趋势之一。

东吴秀财 APP 是一款面向 C 端的应用，具有庞大的活跃用户群和流量，是一个具有强烈互联网属性的产品。其原有架构主要基于 MySQL ，并在部分场景结合使用 NoSQL 数据库，如 MongoDB 提供服务。部分 MySQL 实例基于模块和项目组独立搭建和维护，采用了基于 MyCat + 分库分表架构的逻辑集群。该架构存在以下问题：

- 架构复杂：使用多款数据库产品，一个模块的应用使用一个独立的 MySQL，当业务量增长时，还需要采用基于 MyCat 的分库分表数据库，对于一些文档类的场景还，还需要单独使用 MongoDB。多个数据库产品的堆积导致了烟囱式的发展，使得数据架构变得复杂，且无法有效解决业务问题。
- 业务扩展性不足：在东吴秀财 APP 的业务中，尤其是用户行为、运营、消息等业务都呈现出明显的互联网特征，数据需要根据业务的需要实现灵活的扩展。然而，无论是单机 MySQL，还是基于 MyCat 的分库分表数据库，都未能满足这种灵活扩展的需求。
- 性能不能满足要求：业务对数据插入和查询的效率要求相当高，尤其是在业务高峰期，性能要求更为严格。在一些复杂场景下，查询响应时间甚至超过了 10 秒，这对于 C 端应用来说是无法接受的。
- 开发心智负担重：对于分库分表的集群，研发层面需要提前设计好分库分表的逻辑，原本由数据库处理的工作需要应用程序来实现，这给研发人员带来了相当大的心智负担。
- 运维复杂：一方面，在监控和运维方面需要投入大量精力。最重要的是，许多独立的 MySQL 实例只是最基本的读写分离或者主备架构，无法做到故障情况下的自动恢复。

使用一个 TiDB 替换多个数据技术栈
-------------------

在经过对多款产品进行严格测试验证并综合考虑研发、运维等方面的因素后，东吴证券最终选择了 [TiDB](https://cn.pingcap.com/blog/tag/tidb/ "TiDB") 分布式数据库作为东吴秀财 APP 底层的数据库产品，一举替换了 MySQL、MongoDB、MyCat 等多个数据技术栈，解决了日常业务中的各种需求和痛点。经过三年时间的实践探索，TiDB 在 MySQL 兼容性、功能、性能、运维层面的表现达到了业务预期，主要情况如下：

![东吴证券秀财 APP 数据架构示意图](https://img1.pingcap.com/files/2024/03/20240314111010714.png)<center>东吴证券秀财 APP 数据架构示意图</center>**1 兼容 MySQL 生态，应用平滑过渡**

在研发层面，无需修改代码即可实现从 MySQL 平滑迁移至 TiDB。对于涉及大事务或特定函数的场景，可能需要考虑一些优化和调整，但改造成本相对较小。此外，无需引入额外的数据库驱动，对于使用标准框架进行开发的项目组来说，几乎没有额外的学习成本。对于遗留项目的迁移，TiDB 提供了一系列与 MySQL 生态兼容的工具，支持多种迁移和并轨的运行模式，可以实现应用的平滑过渡。总体上做到了对应用研发人员的透明无感知。

**2 性能实现质的飞跃**

得益于 TiDB 原生分布式架构设计，可按需对计算和存储节点分别进行在线扩容或者缩容，而这个过程对应用运维人员是透明的。在单机数据库无法应对因数据爆炸性增长的场景下，TiDB 成为一种性价比高的解决方案，其规模可以线性扩展，集群容量已经支持到 PB 级别。

TiDB 提供灵活的可伸缩性，除了实现大容量之外，还带来了高性能。在迁移到 TiDB 后，在结构和查询语句设计合理的前提下，各个项目组基本上都反馈性能得到了大幅提升，从原来的 10+ 秒提升到 100+ 毫秒级别，实现了质的飞跃。TiDB 提供了一系列监控、诊断和巡检工具，通过可视化的方式方便地分析和识别性能瓶颈，并对整个集群进行健康检查。

**3 满足金融数据强一致性的 HTAP**

TiDB 提供了行存储引擎 [TiKV](https://cn.pingcap.com/blog/tag/tikv/ "TiKV") 和列存储引擎 [TiFlash](https://cn.pingcap.com/blog/tag/tiflash/ "TiFlash") 两款存储引擎。TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据，确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。在增加少量存储成本的情况下，可以在同一个系统中进行联机交易处理和实时数据分析，极大地节省了数据分析和聚合查询的成本。以运营和用户行为数据为例，传统的数据处理流程需要经过线上库、数据仓库、数据集市等一系列采集、处理、聚合的流程。不仅耗时，还涉及到与数据组的对接和合作，对于一些本来就简单直观的业务，整体上线和升级流程显得比较缓慢。

使用 TiDB 的 [HTAP](https://cn.pingcap.com/blog/tag/htap/ "HTAP") 特性后，相关业务的交付效率大幅提升，整个处理流程都在 TiDB 和单一应用内完成，数据链路短，排障难度也大幅降低，极大地节省了人力和时间成本。TiFlash 提供了强一致性的数据保证，确保数据分析结果与业务数据完全一致，避免了数据延迟和不一致的问题。在金融行业中，这一特性显得尤为重要。

**4 运维便捷**

对于运维人员来说，TiDB 提供直观的监控 Dashboard、管理控制台，集群本身的扩容能力也使得日常的运维监控、服务器上下线、配置升级等操作更加容易。此外，统一对一个 TiDB 数据库集群进行监控维护的成本也会比维护多个零散的 MySQL 实例更为简洁。使用 TiDB 集群不仅提高了服务器的资源利用率，也大幅度减少了运维人员时间成本的碎片化，极大地提升了工作效率。

未来展望
----

TiDB 是目前最受欢迎的开源分布式关系数据库之一，无论是从活跃度、版本迭代速度还是周边工具的完善程度来看，都已经达到了较高的水平。东吴证券的技术人员积极参与到 TiDB 开源社区中，根据应用情况提出了不少 issue。未来，希望在内部培养更多的相关专家和 Contributor，进一步推动分布式数据库在券商场景的深度应用。

当前，很多证券企业遇到了存量 MySQL 实例的标准化和管理成本问题。这些 MySQL 实例部署和使用的周期不同，在版本、配置和工具的使用方面都大相径庭，导致在升级、维护和管理上需要投入大量成本。因此，东吴证券计划引入 TiDB 新版本的[资源管控](https://cn.pingcap.com/blog/tag/resource-control/ "资源管控")功能，结合 TiDB 的可伸缩特性，通过构建 TiDB 统一集群的方式对通用服务资源进行分配和隔离，实现对存量 MySQL 实例的归集和统一管理，提升资源利用率，降低运维投入，同时解决不同业务之间的资源争抢问题。

**延展阅读**：

- 金融行业内容专区上线，为金融机构数据库选型和应用提供深入洞察和可靠参考路径。[立即浏览](https://cn.pingcap.com/resources/finance/ "立即浏览")

<div class="button-group item-start"> [下载 TiDB 社区版](/product-community/) [咨询 TiDB 企业版](/contact#submit-form)<div>[免费试用 TiDB Cloud](https://tidbcloud.com/free-trial?utm_source=website_cn&utm_medium=direct&utm_campaign=blog)<div class="text-center text-small mt-sm">适用于中国出海企业和开发者</div> </div> </div>