tidb之初认识

146 阅读3分钟

简介

TiDB 是 开源分布式关系型 数据库在线事务处理,在线分析处理 融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

特性

  1. 分布式关系型数据,解决单机性能瓶颈的问题。
  2. 同时支持关系型数据库(事务,联表)和非关系型数据库(水平扩展,灵活,高性能)。
  3. 分布式事务的支持。
  4. 兼容myql的协议,支持几乎所有mysql sql语法,学习成本低。
  5. 分区非常方便,支持hash和range分区,使用起来和操作单表一样。
  6. 官方工具丰富,支持通过binlog的数据同步与mysql互为主从。
  7. 生态比较丰富,tiflash支持列式存储,tispark可以使用tidb作为存储引擎同时使用spark作为计算引擎。

架构

image.png

组件
组件名称组件作用作用
tidb连接层负责与客户端的连接,sql的词法解析,逻辑层物理层优化,与pd进行交互获取数据可能在哪些region以及这些region分布在哪里tikv node上,与tikv交互区获取数据
tikv存储层负责数据存储,最小存储单元为region,采用rocksdb作为存储。
PD调度器1 负责region信息的存储,数据副本的维护,在同一个region上key是顺序存在的,每一个 Region 都可以用 [StartKey,EndKey) 这样一个左闭右开区间来描述,,通过range的方式维护在PD中。2 分布式事务id的生成等作用。
tiflash列式存储非阻塞式负责同步tikv的数据,tidb可以自动选择行存储还是列存储,也可以使用hint注解现实选择
与mysql对比

image.png

mysqltidb备注
架构单机分布式tidb的sql layer在tidb层完成了sql语法解析,逻辑和物理层的优化,生成执行计划,通过分布式协调器请求tikv获取数据,并最终通过执行器进行数据的合并,排序,分页,聚合运算等操作,将数据返回。
存储单机分布式tikv的mvcc版本控制,在开启事务会从tidb获取一个全局唯一的ts作为版本号。
索引b+treeRocksdb 分布式leveldb lsmtidb中使用kv作为存储:主键索引和数据的存储:PK 具有唯一性,所以我们可以用 t + Table ID + PK =Data 来唯一表示一行数据唯一索引的存储: i + Index ID = PK,通过pk从主键索引中寻找数据。
事物MVCC通过undolog,redulog实现分布式事务

使用特点

语法

兼容mysql大部分语法,业务上增删拆改基本没有区别

优势

分布式数据库,发挥集群性能,支持异地多活,不用代码支持分表逻辑

管理与监控

  1. grafana 监控集群性能,磁盘,内存,cpu,tps,qps等等
  2. 支持TiUniManager用于集群的管理
  3. 支持dashboard用于监控管理