TiDB-万亿条数据查询如何做到毫秒级响应?

时间:2024-05-19 11:56:17

由于目前的项目计划把MySQL换成TiDB,所以特意来了解下TiDB。其实也不能说换,由于TiDB和MySQL几乎完全兼容,所以我们的程序可以没有任何改动就完成数据库从MySQL到TiDB的转换。接下来了解一下TiDB,为将来的技术选型做个准备。

一、TiDB介绍

TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP(Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

TiDB 是一个分布式 NewSQL SQL 、 NoSQL 和 NewSQL 的优缺点比较 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。

架构图:

TiDB-万亿条数据查询如何做到毫秒级响应?

二、TiDB的特点

TiDB 的典型的应用场景是:

  1. 原业务的 MySQL 的业务遇到单机容量或者性能瓶颈时,可以考虑使用 TiDB 无缝替换 MySQL。TiDB 可以提供如下特性:
    1. 吞吐量、存储和计算能力的水平扩展
    2. 水平伸缩时不停服务
    3. 强一致性分布式 ACID 事务
  2. 大数据量下,MySQL 复杂查询很慢。
  3. 大数据量下,数据增长很快,接近单机处理的极限,不想分库分表或者使用数据库中间件等对业务侵入性较大、对业务有约束的 Sharding 方案。
  4. 大数据量下,有高并发实时写入、实时查询、实时统计分析的需求。
  5.  有分布式事务、多数据中心的数据 100% 强一致性、auto-failover 的高可用的需求。

TiDB 不适合的场景:

  1. 单机 MySQL 能满足的场景也用不到 TiDB。
  2. 数据条数少于 5000w 的场景下通常用不到 TiDB,TiDB 是为大规模的数据场景设计的。
  3. 如果你的应用数据量小(所有数据千万级别行以下),且没有高可用、强一致性或者多数据中心复制等要求,那么就不适合使用 TiDB。

三、需要注意的事情

大家要注意,目前TiDB还不是一个SQL功能像传统数据库一样完备的数据库,他也不是解决所有问题的灵丹妙药。要结合你的应用情况,对于新开发的面向互联网业务的应用场景可能是比较合适的;对于已有应用系统的数据库迁移到TiDB这类情况,可能会涉及到应用改造,需要综合评估考虑。

四、TiDB的使用

TiDB的安装部署相对比较麻烦,公司如果没有专业的运维,那就可能需要开发人员花费比较多的时间去部署。在使用上来讲,跟MySQL几乎是一样的,无缝切换。下面是GItHub地址,感兴趣的朋友可以去尝试本地部署一下。

把TiDB称作下一代数据库也不为过,现在项目非常活跃,社区对TiDB的讨论相当热烈,如果贵公司满足我上面提出的应用场景,并且也有痛点,那可以考虑使用。


我的微信公众号:架构真经(id:gentoo666),分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。每日更新哦!

TiDB-万亿条数据查询如何做到毫秒级响应?

参考资料:

  1. https://blog.****.net/u011782423/article/details/80940766
  2. https://www.jianshu.com/p/f076eab48a3a
  3. https://www.jianshu.com/p/f772412b87b8