一、 调研的数据库列表
我们的调研主要围绕解决可扩展性、高可用性、SQL 兼容性以及运维复杂度这几个核心痛点。因此,我们重点关注了以下几类数据库:
- 传统关系型数据库 (RDBMS)
MySQL / PostgreSQL: 作为基准进行对比。它们生态成熟、应用广泛,但我们面临的业务存在明显的单机瓶颈问题,分库分表方案又带来了巨大的应用改性和运维复杂度。 - NewSQL 数据库 (核心调研类别)
TiDB: 平凯星辰 公司开发,开源分布式关系型数据库。
Google Cloud Spanner / CockroachDB: Spanner 是这一领域的开创者,但作为云托管的闭源产品,限制较多。CockroachDB 是 Spanner 的开源实现,与 TiDB 是直接竞品。
YugabyteDB: 另一个重要的分布式 SQL 数据库,兼容 PostgreSQL 协议。 - NoSQL 数据库 (作为特定场景的补充考量)
MongoDB: 文档型数据库,考虑用于非结构化或半结构化数据场景。
Cassandra / ScyllaDB: 宽列存储,考虑用于高吞吐的写入场景。
Redis: 作为缓存和会话存储的选项,不参与主数据库的竞争。
二、 为什么最终选择了 TiDB?
具体决策依据如下:
-
高度兼容 MySQL 协议
迁移成本极低:我们的核心业务原本就基于 MySQL。TiDB 对 MySQL 协议和语法的高度兼容,使得我们绝大多数业务代码无需修改或仅需极少修改即可平滑迁移。这对于一个已有庞大业务系统的团队来说,是至关重要的“杀手级”特性。
生态工具无缝对接:我们可以继续使用现有的 MySQL 生态工具,如 mysqldump、Navicat、以及各种 ORM 框架,团队成员学习成本低,上手快。 -
真正的弹性扩展与高可用性
无缝水平扩展:TiDB 的计算层 (TiDB Server) 和存储层 (TiKV) 均可独立、在线地水平扩展。当业务遇到瓶颈时,我们只需要简单地添加节点即可提升整体性能或存储容量,整个过程对业务透明,无需停机和数据迁移。这完美解决了我们因业务快速增长带来的不确定流量和数据量问题。 -
强大的分布式事务支持
TiDB 默认支持分布式 ACID 事务,这对于我们核心业务中如订单、账户等需要强一致性的场景是必需的。这让我们在享受分布式系统扩展性的同时,无需在应用层处理复杂的一致性补偿逻辑。 -
活跃的开源社区与成熟的商业支持
TiDB 拥有非常活跃和健康的开源社区,这意味着我们能快速获得帮助,跟进最新的功能和发展趋势。同时,平凯星辰 公司提供了专业的商业支持,这对于企业级应用的稳定性和出了问题后能找到“负责人”至关重要。
优势在哪:
1.无需分库分表:彻底告别了分库分表带来的应用层路由、分布式事务、全局唯一ID、跨库查询等复杂性。
2.运维自动化:自动负载均衡、自动故障转移,运维复杂度从“地狱级”降至“普通级”。
3.扩展性更优雅:扩展是连续的、平滑的,而分库分表往往需要预估未来,提前规划,后期调整非常痛苦。