学习目标

  • 题解数据库整体架构
  • 了解 TiDB ServerTiKVTiFlash、和 PD 的主要功能

文章末尾获取笔记、视频资料,持续更新

体系架构

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

TiDB 体系架构图

组件

TiDB Server

TiDB Server 是 TiDB 分布式数据库的 SQL 层,是整个系统的入口。

功能

  • 处理客户端的连接

  • SQL语句的解析、编译、生成执行计划

    生成sql语句,然后在TiKV 或者 TiFLASH上执行

  • 关系型数据与 KV 的转化

    TiKV 存的数据是键值对,将数据表转换为 KV 键值对

  • SQL语句执行(DDL语句)

  • 执行 online DDL

  • 垃圾回收(默认时间10分钟)

TiDB Server 

工作流程

客户端请求 -> 
    协议解析 -> 
        SQL 解析 -> 
            查询优化 -> 
                生成执行计划 -> 
                    分布式执行 -> 
                        返回结果

TiKV

TiKV是TiDB 分布式数据库的存储层

存储结构

Region (数据分片)
    ├── Leader
    └── Followers (多个副本)
        ├── Follower 1
        └── Follower 2

功能

  • 数据持久化
  • 副本的强一致性和高可用性
  • MVCC (多版本并发控制)
  • 分布式事务支持
  • Coprocessor (算子下推)
TiKV 技术架构图

核心组件

如上图所示
RocksDB:底层存储引擎
Raft:分布式一致性协议实现
MVCC:多版本并发控制
Transaction:分布式事务处理

关键特性

  1. 数据分片 (Region)
    1. 按 Key Range 进行数据分片
    2. 每个 Region 默认大小约 96MB到140MB
    3. 超过阈值会自动分裂(Split)
    4. 负载均衡时会自动调度
  2. 复制与一致性
    1. 采用 Multi-Raft 模型
    2. 通常采用 3 副本或 5 副本
    3. 强一致性保证
    4. 自动故障转移

TiFlash

它是 TiDB 的列式存储引擎,专门用于 OLAP 分析场景

功能

  • 异步复制

  • 一致性

  • 列式存储提高分析查询效率

  • 业务隔离

  • 智能选择

    也可以手动指定sql选择 TiKV 或者 TiFlash

TiFlash 架构图

PD

功能

  • 整个集群TiKV的元数据存储
  • 分配全局ID和事务ID
  • 生成全局时间戳TSO
  • 收集集群信息进行调度
  • 提供 TiDB Dashboard 服务
PD 技术架构图

测试

答案:

  1. B、F
  2. C

公众号回复 TIDB 获得笔记、视频

TIDB 数据库架构概述的更多相关文章

  1. asp.net core系列 30 EF管理数据库架构--必备知识 迁移

    一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为 ...

  2. 【MySQL】MySQL无基础学习和入门之一:数据库基础概述和实验环境搭建

    数据库基础概述  大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以 ...

  3. 大型互联网架构概述 关于架构的架构目标 典型实现 DNS CDN LB WEB APP SOA MQ CACHE STORAGE

    大型互联网架构概述 目录 架构目标 典型实现 DNS CDN LB WEB APP SOA MQ CACHE STORAGE 本文旨在简单介绍大型互联网的架构和核心组件实现原理. 理论上讲,从安装配置 ...

  4. 1.1-1.5 flume架构概述及安装使用

    一.flume架构概述 1.flume简介 Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据.它具有基于流数据流的简单灵活的架构.它具有可靠的可靠性机制和许多故障转移和 ...

  5. Java生鲜电商平台-微服务架构概述

    Java生鲜电商平台-微服务架构概述 单体架构存在的问题 在传统的软件技术架构系统中,基本上将业务功能集中在单一应用内,或者是单一进程中.尽管现代化的软件架构理论以及设计原则已推广多年,但实际技术衍化 ...

  6. Httpd服务进阶知识-LAMP架构概述

    Httpd服务进阶知识-LAMP架构概述  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.LAMP架构概述 1>.什么是LAM(M)P架构 L: linux A: apa ...

  7. Mycat分布式数据库架构解决方案--Mycat的介绍

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 如果我 ...

  8. HDFS(Hadoop Distributed File System)的组件架构概述

    1.hadoop1.x和hadoop2.x区别 2.组件介绍 HDFS架构概述1)NameNode(nn): 存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个 ...

  9. VS2012中数据库架构的比较

    在进行项目进行开发或维护时,经常会改动使用的数据库,或增加.修改字段,或加表,改存储过程等,而且会出现多个类似的数据库同时在用(比如过个类似的项目,要使用稍有不同的数据库),这个时候就可能需要进行数据 ...

  10. SQL 修改数据库架构名

    SQl 修改数据库架构名 declare @name sysname declare csr1 cursor for select TABLE_NAME from INFORMATION_SCHEMA ...

随机推荐

  1. 【前端】CSS实现图片文字对齐 并随着设备尺寸改变而改变大小

    效果预览 HTML源码 点击查看HTML代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <me ...

  2. Http2服务调用排坑记

    原文作者:陈友行原文链接:https://www.nginx.org.cn/article/detail/89转载来源:NGINX开源社区著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  3. Idea如何关闭单词拼写检查

    打开Intellij Idea,在代码中输入lisi或zhangsan单词,可见这两个单词下面出现了绿色波浪线,表明词库中找不到这两个单词 2 鼠标移到波浪线上,可以看到如下提示信息,点击[more] ...

  4. getway网关跨域问题记录

    一.问题产生环境 1.1 为什么会产生跨域问题? 跨域不一定都会有跨域题. 因为跨域问题是浏览器对于ajax请求的一种安全限制: 一个页面发起的 ajax请求,只能是与当前页域名相同的路径,这能有效的 ...

  5. Qt编写安防视频监控系统40-onvif线程处理

    一.前言 整个onvif模块大部分的功能都有了以后,除了在demo上点点按钮可以执行获取结果显示外,最终还是要应用到视频监控中,在按钮上点点和系统中后台自动运行是两码事,比如onvif校时和事件订阅, ...

  6. Git Permission denied

    问题现象 家里电脑 git pull 项目时,提示:Permission denied,ssh -T 测试又是正常的,如下图 同样配置和密钥,在公司电脑就可以正常 pull .push . 问题原因 ...

  7. vue基础2

    1.表单 表单里面有单选框,多选框,下拉框,文本域 vue单页应用 SPA:signal page application(单页应用) 多页面:1个url->1个html文件 多个url-> ...

  8. 《C++并发编程实战》读书笔记(3):并发操作的同步

    1.条件变量 当线程需要等待特定事件发生.或是某个条件成立时,可以使用条件变量std::condition_variable,它在标准库头文件<condition_variable>内声明 ...

  9. 深入理解 RESTful Api 架构-copy

    深入理解 RESTful Api 架构 周梦康 发表于 2016-01-03 分类于 笔记 61818 次浏览 标签 : REST   一些常见的误解 不要以为 RESTful Api  就是设计得像 ...

  10. ThreadPoolExecutor详解及线程池优化

    前言ThreadPoolExecutor在concurrent包下,是我们最常用的类之一.无论是做大数据的,还是写业务开发,对其透彻的理解以及如何发挥更好的性能,成为了我们在更好的coding道路上必 ...