TiDB基础介绍、应用场景及架构

1. 什么是newsql

       NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。

       NewSQL是指这样一类新式的关系型数据库管理系统,针对OLTP(读-写)工作负载,追求提供和NoSQL系统相同的扩展性能,且仍然保持ACID和SQL等特性(scalable and ACID and (relational and/or sql -access))。

      NewSQL比较流量的几种:cockroachDB,tidb,yugabyteDB等 这些都是参考了google spanner论文的开源实现。

2.TiDB介绍

    TiDB是一个开源的NewSQL数据库,支持HTAP(Hybrid Transactional and Analytical Processing),既支持事务型操作,也支持数据分析。同时TiDB和MySQL的大多数协议都是兼容的。支持水平扩展,强一致性和高可用。

     TiDB的目标是提供一个一站式数据库解决方案。包括OLTP(Online Transactional Processing), OLAP (Online Analytical Processing), and HTAP services。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

3. TiDB的应用场景

       TiDB 的应用场景是典型的 OLTP 场景,它的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,同时还提供 TiSpark 项目以完成更复杂的 OLAP 分析。

     替代 MySQL

       传统的 MySQL 数据库在数据量急速增长后,使用分库分表的技术来对数据库进行扩展,在分布式数据库系统中也是使用分片技术,但是这些技术不管在维护成本或开发成本上都很高。

      而 TiDB 提供了一个可弹性的横向扩展的分布式数据库,并且具有高可用性,它兼容 MySQL 协议和绝大多数的 MySQL 语法,在通常情况下,用户无须修改代码就可以将 MySQL 无缝迁移到 TiDB。

     替代 NoSQL 数据库

     NoSQL 数据库拥有弹性的伸缩能力,具有实时并发写入能力,但是 NoSQL 数据库不支持 SQL,也不支持事务的 ACID 特性,NoSQL 无法满足某些强一致性的场景下的需求。

     TiDB 具备 SQL 所有的特性,同时满足数据的在线扩展。在线旅行网站“去哪儿”目前使用了几个 TiDB 集群来替代 MySQL 和 HBase,如机票离线集群、金融支付集群等。

     集群用来存储支付信息表和订单信息表,这些信息严格支持事务 ACID 特性,因此可以将原来存储于 MySQL 中的数据同步到 TiDB 中,然后,运营或开发人员可以在 TiDB 上进行 merge 单表查询或 OLAP 分析。

    实时数据仓库

     目前企业大多数的数据分析场景的解决方案都是围绕着 Hadoop 生态系统展开的,包括 HDFS、Hive、Spark 等。但是单纯使用 Hadoop 已经无法满足一些实时的 OLTP 和复杂的 OLAP 需求。

       随着 TiDB 的子项目 TiSpark 的发布,可以在拥有关系数据库的事务写入能力同时进行复杂的分析。

4. TiDB架构

       在内核设计上,TiDB 分布式数据库将整体架构拆分成了多个模块,各模块之间互相通信,组成完整的 TiDB 系统。对应的架构图如下:

TiDB Server:SQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,实践中可以启动多个 TiDB 实例,通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只是解析 SQL,将实际的数据读取请求转发给底层的存储节点 TiKV(或 TiFlash)。

PD (Placement Driver) Server:整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。建议部署奇数个 PD 节点。

存储节点

TiKV Server:负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 的 API 在 KV 键值对层面提供对分布式事务的原生支持,默认提供了 SI (Snapshot Isolation) 的隔离级别,这也是 TiDB 在 SQL 层面支持分布式事务的核心。TiDB 的 SQL 层做完 SQL 解析后,会将 SQL 的执行计划转换为对 TiKV API 的实际调用。所以,数据都存储在 TiKV 中。另外,TiKV 中的数据都会自动维护多副本(默认为三副本),天然支持高可用和自动故障转移。

TiFlashTiFlash 是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>