TiDB 数据库架构概述

news/2024/5/19 14:50:59 标签: tidb, 数据库架构, 数据库

TiDB 数据库架构>数据库架构概述

TiDB体系架构

  • 水平扩容或者缩容
  • 金融级高可用
  • 实时HTAP
  • 云原生的分布式数据
  • 兼容MYSQL5.7

Region:存储单位,96~144MB之间,分布式存储在TiKV中

TiKV:默认三副本,将分布式数据存储,并进行存储副本。分布式事务,MCC原理。可以通过添加TIKV的节点数量进行扩容。

PD:集群的大脑,SQL执行 要到PD去查询我的数据region在两个或者三个TiKV当中。 查询sql的开始时间,以标识(TSO)时间戳来标识。开始TSO和结束TSOPD提供。

TiDB Server

  • 处理客户端的连接
  • SQL语句的解析和编译,生成执行语句,如果是INSERT,将数据转成键值对,存成region到TiKV当中
  • 关系型数据库与KV的转化
  • SQL语句的执行
  • 执行online DDL,(建表,建索引等操作)
  • 垃圾回收,GC机制:默认十分钟回收

TiKV

  • 数据持久化,内部使用rocksDB数据库进行数据持久化。单机引擎
  • 副本的强一致性和高可用性 Raft协议
  • MVCC(多版本并发控制)
  • 分布式事务支持,Transaction
  • Coprocessor(算子下推),投影、聚合,分布式计算的一个模型

单机:

rocksdbraft:存储指令,将所有指令先存储到这里。

rocksdbkv:存储键值对

由这两个做到数据持久化。OLTP业务。

image-20221115113057068

三个副本有一个leader角色,只有leader副本才能够进行修改。通过Raft协议,子副本和leader同步数据。

PD

  • 整个集群TiKV的元数据存储
  • 分配全局ID和事务的ID
  • 生成全局的时间戳TSO
  • 手机群信息进行调度,TiKV及时上报
  • 提供TiDB Dashboard服务

TiFlash

image-20221115113828640

和TiKV是实时一致的。

  • 异步复制
  • 一致性
  • 列式存储提高分析查询效率
  • 业务隔离
  • 智能选择

承载OLAP分析型业务。

HTAP=OLAP+OLTP


http://www.niftyadmin.cn/n/8954.html

相关文章

vue项目中实际构建echarts拓扑关系图业务

vue项目中实际构建echarts拓扑关系图业务前言一、关系拓扑是什么?二、需求梳理三、封装关系图组件1.父组件引用2.测试数据引入3.封装关系子组件4.关系组件完整代码总结前言 由于现在echarts的利用率增强,需要用到拓扑图的设计,如果单纯针对e…

C++之函数模板、类模板、模板的特化

1.什么是模板? 模板是c的一种特性,允许函数或者类(对象)通过泛型(generic types)的形式表现或者运行模板可以使得函数或类在对应不同的类型(types)的时候正常工作,而无需…

基于matlab城市空中交通场景中的激光雷达与雷达融合仿真(附源码)

目录 一、创建城市空中交通方案 二、定义无人机传感器套件 三、定义跟踪系统 3.1 激光雷达点云处理 3.2 激光雷达跟踪器 3.3 雷达跟踪器 3.4 轨道融合 四、可视化 五、模拟场景 六、跟踪指标 七、总结 八、程序​ 此示例演示如何使用多对象跟踪器跟踪城市环境中的各…

go微服务框架Kratos简单使用总结

Kratos是B站开源的一款go的微服务框架,最近PS5上的 战神诸神黄昏比较火,主角就是奎托斯。这个框架的名字就取自他。 在进行框架选型时,对比了目前主流的很多go微服务框架,如Zero,最后对比之下,选择了Krato…

【单片机基础】单片机中断和定时

中断什么是中断?中断IE寄存器中断查询次序例程定时器/计数器实现定时的方法?定时计数的概念什么是单片机定时器/计数器?定时器/计数器内部结构定时器的相关寄存器51单片机定时器初值计算方法详解例程中断 什么是中断? 中断是为使…

C++17:static_assert实现

引言 static_assert是从C0x开始引入的关键字,static_assert可让编译器在编译时进行断言检查。static_assert的语法格式: static_assert( constant-expression, string-literal ); // C11 static_assert( constant-expression ); // C17constant-expre…

拿到大厂前端offer的前端开发是怎么回答面试题的

强类型语言和弱类型语言的区别 强类型语言:强类型语言也称为强类型定义语言,是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。Java和C等语言都是强制类型定义的,也就是说&am…

面试总结1

用时:45min 1、事务的隔离级别、事务的特征 2、redis的延迟双删策略 3、Spring的生命周期 4、简单的描述一下 Gateway、Feign、Ribbon 5、你使用的配置中心nacos,为什么不用eureka 6、简单的说一下HashMap底层原理吧、负载因子是什么 7、介绍一下Concurr…