在当今快速发展的互联网时代,数据量爆炸式增长和业务需求的多样化对数据库系统提出了更高的要求。我们,作为一家领先的科技公司,面临着海量数据存储、高并发处理、HTAP(混合事务/分析处理)以及业务的弹性灵活扩缩容等挑战。为了应对这些挑战,我们对NewSQL分布式数据库进行了深入的选型和实践,最终选择了TiDB作为其数据库解决方案。本文将详细介绍我们在选择和实施TiDB过程中的痛点、选型考量、实践规模、遇到的问题以及未来的展望。
一、业务痛点与难点
我们的数据库系统面临着以下主要挑战:
- 海量数据存储:需要存储的数据量巨大,传统的关系型数据库在扩展性上存在局限。
- 高并发:业务特性导致系统需要处理大量的并发请求。
- HTAP:需要同时支持事务处理和复杂查询,对数据库的性能提出了更高要求。
- 弹性灵活的扩缩容:业务的快速变化要求数据库能够灵活地进行扩缩容操作。
- 多AZ部署:为了提高业务的可用性和容灾能力,需要在多个可用区(AZ)中部署数据库。
二、分布式数据库选型
在选型过程中,我们主要考虑了以下几个关键因素:
- 业务需求:包括海量数据存储、支持MySQL协议/SQL查询、按需灵活扩缩容和HTAP能力。
- 稳定性:涉及数据一致性、高可用性和容灾能力。
- 成熟度:考量了开源产品、社区活跃度和周边生态。
- 改造成本:包括业务代码的改造成本和研发的使用设计成本。
我们觉得 TiDB就像一个开着“自动档”数据库,它通过自动化的分片和负载均衡,让团队无需关注复杂的数据库分表问题,从而更专注于业务逻辑和创新。
三、为什么选择TiDB
我们在对比了TiDB、OB、TDSQL-Mysql和PolarDB-X等分布式数据库产品后,基于以下理由选择了TiDB:
海量数据存储能力
随着我们业务的快速增长,数据量急剧膨胀,传统关系型数据库在处理大规模数据时遇到了扩展性瓶颈。TiDB作为一个分布式数据库,其天生的分布式架构能够高效地处理海量数据,很好地满足了我们对数据存储的需求。
高并发处理
我们的业务特性要求数据库系统能够处理大量并发请求。TiDB的分布式设计允许其通过水平扩展来提升系统的并发处理能力,从而保证在高负载情况下的稳定性和响应速度。
HTAP支持
现代企业不仅需要处理事务性数据,还需要对数据进行实时分析。TiDB支持HTAP,能够同时处理事务型和分析型工作负载,这对于我们来说是一个重要的需求点,因为它可以减少数据在不同系统间的迁移,降低延迟,提高效率。
弹性灵活的扩缩容
业务需求的不断变化要求数据库能够快速响应扩缩容的需求。TiDB的在线弹性扩缩容能力使得我们可以根据业务需求灵活调整资源,而无需担心服务中断或性能下降。
多AZ部署
为了提高业务的可用性和容灾能力,我们需要在多个可用区(AZ)中部署数据库。TiDB支持多AZ部署,增强了数据的可靠性和系统的容灾能力。
兼容MySQL协议/语法
TiDB兼容MySQL协议和SQL语法,这使得我们可以无缝迁移现有的MySQL业务到TiDB,减少了迁移成本和技术改造的复杂性。
开源产品与活跃社区
TiDB是一个开源产品,拥有活跃的社区支持。这意味着我们可以依赖社区的力量来解决使用过程中遇到的问题,同时也能够根据需要对产品进行定制化开发。
周边生态与迁移/改造成本
TiDB拥有成熟的周边生态,提供了丰富的工具和集成选项。同时,相比于其他分布式数据库,TiDB在迁移和改造成本上具有优势,这对于我们来说是一个重要的考量点。
四、TiDB当前规模与收益
当前规模
- 节点数量:我们的TiDB集群已经扩展到142个节点,这显示了TiDB在水平扩展方面的强大能力,以及我们业务的快速增长。
- 集群数量:拥有12套集群,这表明我们能够根据业务需求对数据库资源进行有效的逻辑分割和隔离,增强了系统的稳定性和可管理性。
- 数据量:最大的集群数据量接近100TB,这一数据量在分布式数据库领域中属于较高水平,充分展示了TiDB处理大规模数据的能力。
运维侧收益
- 云原生:TiDB的云原生特性使得我们能够更加灵活地在云环境中部署和运维数据库,降低了对物理硬件的依赖,提高了资源利用率和系统可维护性。
- MySQL生态:TiDB兼容MySQL协议和SQL语法,使得我们能够无缝迁移现有的MySQL业务,同时享受到TiDB作为分布式数据库带来的优势,而无需对现有的技术栈做出较大改动。
- 可靠性:分布式架构和多副本机制增强了数据的可靠性,减少了单点故障的风险。
- 存储成本:TiDB的数据压缩和存储优化技术有助于降低存储成本,尤其是在处理大规模数据集时,这一优势尤为明显。
研发侧收益
- 架构简单:TiDB的分布式设计简化了数据库架构,使得研发团队可以更专注于业务逻辑的实现,而不是数据库的维护和管理。
- 数据实时性:TiDB的HTAP能力保证了数据的实时性,对于需要快速响应的业务场景尤为重要。
- 业务创新:研发团队可以将更多的精力投入到业务创新上,而不是数据库的运维和调优,从而加快产品的迭代速度和市场响应。
五、遇到的问题
在使用TiDB的过程中,我们遇到了一些问题,未来希望能有更优的方案:
- 版本升级:TiDB版本升级不可逆,高版本BR恢复至低版本存在限制,gc长时间关闭对集群性能造成影响。
- 多AZ改造:在进行多AZ改造时,数据重平衡的周期较长,重平衡期间参数设置容易出现不合理情况,导致业务延迟和超时的现象出现。
六、未来展望
我们对TiDB的未来应用和发展方向也提出了展望,包括:
- TiKV支持S3存储(Serverless):期望TiDB能够支持S3接口的存储,进一步降低存储成本并提高数据管理的灵活性。
- 多租户资源隔离:希望TiDB能够提供更好的多租户资源隔离功能,使得更多的小型业务能够高效地共享数据库资源,同时保证各业务间的数据隔离和安全性。
- 可视化管理平台:期望TiDB能够提供更为成熟和易用的可视化管理平台,以简化数据库的运维管理工作,提高运维效率。
七、结语
我们的实践表明,TiDB作为一个NewSQL分布式数据库,不仅能够满足现代企业对数据库系统的高标准要求,而且在处理海量数据、高并发以及HTAP等方面展现出了显著的优势。尽管在实施过程中遇到了一些挑战,但我们通过不断的探索和优化,成功地克服了这些问题,并对未来的发展方向提出了具有前瞻性的展望。随着技术的不断进步和产品的迭代更新,我们有理由相信,TiDB将继续在分布式数据库领域发挥重要作用,助力更多企业实现数字化转型。