专栏首页zhangdd.comTidb 简介与应用实践

Tidb 简介与应用实践

背景

当 mysql 的一个大表总数达上亿时,mysql 性能变的很差,且新增或修改字段、索引也需要花费很长时间,至少十几个小时。这种情况,一般的做法是分库分表,这种方法需要业务层根据规则,物理分库分表,比如按照时间分表,业务代码需要兼容。Tidb 是分布式 newsql 数据库,兼容了大部分 mysql 协议和操作,业务不需要调整,数据库性能也能保证。

Tidb 介绍

1.开源分布式的关系型数据库

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

2.整体架构

要深入了解 TiDB 的水平扩展和高可用特点,需要了解 TiDB 的整体架构。TiDB 集群主要包括三个核心组件:TiDB Server,PD Server 和 TiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件。

2.1.TiDB Server TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址。

2.2.PD Server Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。 PD 通过 Raft 协议保证数据的安全性。Raft 的 leader server 负责处理所有操作,其余的 PD server 仅用于保证高可用。建议部署奇数个 PD 节点。

2.3.TiKV Server TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。

2.4.TiSpark TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。

3.环境部署

Linux 操作系统平台建议为 CentOS7.3 及以上,同时也支持其他主流的 Linux 操作系统环境。 硬盘至少是 SSD 的机器,SAS 盘不行,推荐 pcie。 部署一套集群至少需要 5 台机器,2TiDB,3TikV,PD 可以和 TiDB 部署在同服务器上。

Tidb 优势

1.水平弹性无限制扩展

分布式的 TiDB 可随着你的数据增长而无缝地水平扩展,只需要通过增加更多的机器来满足业务增长需要,应用层可以不用关心存储的容量和吞吐。对比 mysql,需要 lvm 辅助磁盘扩容。

2.故障自恢复及异地多活

TiDB 使用多副本进行数据存储,并依赖业界最先进的 Raft 多数派选举算法确保数据 100% 强一致性和高可用。副本可跨地域部署在不同的数据中心,主副本故障时自动切换,无需人工介入,自动保障业务的连续性,实现真正意义上的异地多活。

3.一致性的分布式事务

可以把 TiDB 想象成一个单机的 RDBMS,ACID 事务可以在多节点间进行,无需担心一致性问题。 TiDB 对业务没有任何侵入性,是传统的数据库中间件、数据库分库分表等优雅的替换方案。

4.高度兼容 MySQL,零成本迁移

TiDB 的通讯协议与 MySQL 高度兼容,你可以轻松地像使用单机数据库一样,用 TiDB 替换 MySQL 来支持你的业务,而几乎无需修改代码。 MySQL 的客户端管理工具及社区所有的周边工具都可直接接入,极大降低学习和使用成本。 总之,迁移方便,不用分库分表,逻辑不用做兼容处理,程序调用也无需处理,mysql 的客户端工具正常使用。

5.更优的性能优势

TiDB 根据存储、网络、距离等因素,动态进行负载均衡调整,以保证更优的读写性能。TiDB 在大数据量下复杂查询方面,相比 MySQL 有绝对的性能优势。 5.1 大表建立索引快 5.2 大表修改列表快,比如加列,修改列属性 Mysql 大表建立索引和修改表需要花费大量的时间。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TiDB 在 58 集团的应用与实践

    58 集团业务种类繁多,目前包括的业务有 58 同城、赶集网、安居客、58 金融公司、中华英才网、驾校一点通等,数据库种类包括 MySQL、Redis、Mong...

    PingCAP
  • macOS 应用注入开发简介与实践

    本文主要介绍的是动态链接库注入的相关实践,这不仅仅局限于macOS,同时对iOS应用也具有相同的效果,希望大家可以借鉴使用.

    代码行者
  • 当 TiDB 与 Flink 相结合:高效、易用的实时数仓

    随着互联网飞速发展,企业业务种类会越来越多,业务数据量会越来越大,当发展到一定规模时,传统的数据存储结构逐渐无法满足企业需求,实时数据仓库就变成了一个必要的基础...

    PingCAP
  • TiDB 在马上消费金融核心账务系统归档及跑批业务下的实践

    马上消费金融于 2015 年 6 月营业,截止到 2020 年 1 月,历经 4 年多风雨,总注册用户数 8000 万,活跃用户数 2500 万,累计放贷 29...

    PingCAP
  • Flink 与 TiDB 构建高效易用的实时数仓

    随着互联网飞速发展,企业业务种类会越来越多,业务数据量会越来越大,当发展到一定规模时,传统的数据存储结构逐渐无法满足企业需求,实时数据仓库就变成了一个必要的基础...

    zhisheng
  • TiDB 最佳实践系列(三)乐观锁事务

    在前两篇的文章中,我们分别介绍了 TiDB 高并发写入常见热点问题及规避方法 和 PD 调度策略最佳实践,本文我们将深入浅出介绍 TiDB 乐观事务原理,并给出...

    PingCAP
  • TiDB 在网易游戏的应用实践

    作者介绍: 李文杰,网易互娱高级数据库工程师,TUG 2019 年度和 2020 年度 MVA。主要负责大数据研发和数据分析工作,为产品提供精细化运营指导;同时...

    PingCAP
  • TiDB 在小米的应用实践

    MIUI 是小米公司旗下基于 Android 系统深度优化、定制、开发的第三方手机操作系统,也是小米的第一个产品。MIUI 在 Android 系统基础上,针对...

    PingCAP
  • TiDB 4.0 在 VIPKID 的应用实践

    本文主要分享 TiDB 4.0 版本在 VIPKID 的一个应用实践。主要涉及两个部分,第一部分是现在 TiDB 在 VIPKID 的一些应用场景,第二部分是介...

    PingCAP
  • 高效编排有状态应用——TiDB 的云原生实践与思考

    云原生时代以降,无状态应用以其天生的可替换性率先成为各类编排系统的宠儿。以 Kubernetes 为代表的编排系统能够充分利用云上的可编程基础设施,实现无状态应...

    PingCAP
  • TiDB x 微众银行 | 耗时降低 58%,分布式架构助力实现普惠金融

    「我们已经用起来了」,是我们最喜欢听到的话,简简单单几个字的背后代表着沉甸甸的信任和托付。从今天开始,我们将通过「相信开放的力量」系列深度案例分享,从业务的角度...

    PingCAP
  • TiDB 在 U-Next ARM 平台上的应用与实践

    U-Next 是日本领先的视频点播服务公司,类似于国内的爱奇艺、国外的 Netflix。近几年 U-Next 的整体业务保持高速成长的势头,原先的基础架构已经无...

    PingCAP
  • ​TiDB DevCon 2019 报名开启:年度最高规格的 TiDB 技术大会

    1970 年关系模型的提出,在数据库领域如同打开了一扇创世之门,近半个世纪以来相关产品迅速迭代,新旧共生,我们试图洞悉其中规律,寻求一个问题的答案:什么是未来的...

    PingCAP
  • TiDB Operator + Amazon Web Service,探索云原生数据库的最佳实践

    如今数据库上云这一话题受到越来越多的关注,数据库作为重要的基础软件,在云原生时代将面临怎样的变革?当数据库遇上云原生,又将碰撞出什么火花?近日,在亚马逊云开发者...

    PingCAP
  • 微众银行数据库架构演进及 TiDB 实践经验

    本文将介绍微众银行的数据库架构演进过程,并分享 TiDB 在微众银行实践经验和部分业务案例。

    PingCAP
  • TiDB on Kubernetes最佳实践

    随着 Kubernetes(K8s) 的全面成熟,越来越多的组织开始大规模地基于 K8s 构建基础设施层。然而,考虑到数据库在架构中的核心地位与 K8s 在有状...

    CNCF
  • TiDB on Kubernetes 最佳实践

    随着 Kubernetes(K8s) 的全面成熟,越来越多的组织开始大规模地基于 K8s 构建基础设施层。然而,考虑到数据库在架构中的核心地位与 K8s 在有状...

    PingCAP
  • TiDB 社区成长足迹与小红花 | TiDB DevCon 2019

    2018 年 TiDB 产品变得更加成熟和稳定,同时 TiDB 社区力量也在发展壮大。在 TiDB DevCon 2019 上,我司联合创始人崔秋带大家一起回顾...

    PingCAP
  • 从零部署TiDB集群

    朋友圈,关注的公众号经常出现各个公司开始用TiDB的案例和各种技术分享。对TiDB蛮有兴趣,这几天终于可以尝试接触 TiDB,第一步当然是安装和部署。过程还是蛮...

    用户1278550

扫码关注云+社区

领取腾讯云代金券