• TiDB数据库01Tidb体系架构01


    1.我们到底需要一个什么样的数据库

    1.1 需要的数据库特性

    • 扩展性
    • 强一致性、高可用性
    • 支持SQL,ACID事务。
    • 云原生
    • HTAP
    • 兼容主流生态和协议

    1.1.1 扩展性

    Scale out也就是我们经常听到的弹性横向扩展。一是从弹性的角度看,颗粒度越小越好,常见的颗粒度有Cluster、Database、Schema、表、分表或者分区。二是数据库写入是昂贵资源,我们一定要面向写入能力的线性扩展机制。

    1.1.2 强一致性、高可用性

    CAP的强一致指的是理论的一致性,也就是副本一致性,也就是每一份新增数据都会在多个物理节点保存,节点数量和网络延迟是正向关系,理论上保存的节点越多,写入延迟就越高,所以在分布式系统里,普遍采用了多数派强一致。

    这个强一致属性对于我们比较核心的业务,比如金融类场景,能做到更好的数据容灾。

    强一致与高可用这两个概念,等价过来,就是实现RPO=0,RTO足够小,

    数据库事务的特性(ACID):

    1.2.数据技术栈常见的基础因素

     1.3.计算与存储分离

    1.4 Tidb高度分层架构

    TiDB是一个计算与存储分离的架构,它的存储引擎叫TiKV。

    TiDB在2015立项,弹性是整个架构设计的核心考量点,所以选择了更为未来的计算与存储分离的架构,从逻辑上看,主要分为三层:

    1.4.1. 支持标准SQL的计算引擎TiDB-Server

    这里面有一个概念,大家可能会混淆。TiDB是整个数据库的名称,同时有一个兼容MySQL的计算引擎 TiDB-Server(https://github.com/pingcap/tidb),
    兼容以MySQL 5.7为主,在逐步兼容MySQL 8.
    TiDB Server 支持 MySQL 的协议,语法,方言语法,DDL/DML,系统变量,内置功能,SQL Mode 以及类型推导等等。

    1.4.2. 分布式存储引擎 TiKV

    TiDB Server 本身并不存储数据,只是进行计算,实际的数据存储在存储层,也就是 TiKV(https://github.com/pingcap/tikv),目前这个项目已经捐献给 CNCF,属于 CNCF 的毕业项目。

    1.4.3. 负责元信息管理与调度的,调度引擎 Placement Driver

    Placement Driver (pd-server,简称 PD,https://github.com/pingcap/pd),PD 主要有几个功能:

    PD是整个集群的大脑,为了保持全局高可用,PD也至少三个节点,通过Raft进行三副本复制。

    1.4.4 架构图

     1.5 小结

    2.如何构建一个分布式存储系统

    2.1 需要什么样的存储引擎

     2.2 数据库核心:数据结构

     

     2.3 选择数据副本

     2.4 如何扩展

    扩展是基于分片实现的。分片分为预先分片(静态)和自动分片(动态)。

    常见的分片算法有哈希hash、范围range、列表list

    注意:一个Region默认是96MB

     

     

     2.5 TiKV整体架构

     2.6 多版本控制MVCC

     2.7 分布式事务模型

     2.8 小结

     

    如何构建一个分布式 SQL 引擎

    tidb-server的功能:

    3.1 sql引擎过程

     3.2 关键算子分布式化

     3.3 如何构建一个online的DDL算法

     3.4 如何连接到Tidb-server

     3.5 小结

    基于分布式架构的 HTAP 数据库

    2005年,Gartner提出了HTAP(Hybrid transactional/analytical processing,在线事务处理/在线分析处理数据库)这一概念,并在2014 年,Gartner 对 HTAP 数据库给出了明确的定义,HTAP 数据库需要同时支持 OLTP 和OLAP 场景。

    4.1 HTAP发展的必然性

     

     4.2 Tidb被用于数据中台

    Tidb可以看作大号的Mysql. 

    4.3 物理隔离是最好的资源隔离

     4.4 行列数据同步,Raft-base最佳方案

     5 Tidb关键技术创新

    5.1 三个分布式系统

    5.2 自动分片技术是更细维度弹性的基础

     

     5.3 弹性的分片构成了动态的系统

     5.4 Multi-Raft将复制组更离散

     5.5 基于Multi-Raft实现写入的线性扩展

    5.6 去中心化的分布式事务

    6.TiDB 典型应用场景及用户案例

    6.1 OLTP Scale

     (1)为什么分表

     (2)为什么分库

     中间件方案:

     6.2 数据架构选型

     

     

     

     

  • 相关阅读:
    selenium-使用xpath结合text内容定位元素
    pip 安装第三方库报错解决方法
    本地使用git拉取远程指定分支代码
    Python之字符串格式化(format)
    Python之字符串format格式化
    Python中的eval()函数
    用PIL实现滤镜(一)——素描、铅笔画效果
    python勾画图片轮廓
    用python读取带密码的excel文件中的数据
    python中的列表与列表推导式
  • 原文地址:https://www.cnblogs.com/luckyplj/p/15704371.html
Copyright © 2020-2023  润新知