Bootstrap

TiDB架构分析

TiDB有三部分组成:
存储层:TiKV
计算层:TiDB
调度层:PD(PlaceDriver)存储元数据

存储层TiKV
1)通过range分区算法将数据分成一个个region;
2)每个region默认有3个副本,一个leader 副本和两个follower 副本,这些副本分布在不同节点上,通过raft协议保证数据一致性;
3)如果副本数量发生了变化,pd会及时感知,做出应对措施;

计算层TiDB
将SQL请求映射成对TiKV的请求
1)一个表有元数据、行数据、索引数据 三种数据,都是通过底层的kv来存储的;
行数据:key=表id_行id,value=[col1,col2,col3,…]
唯一二级索引:key=表id_索引id_索引值,value=行id
普通二级索引:key=表id_索引id_索引值_行id,value=null

比如现在有一个普通二级索引name,一个SQL
select * from table where name=‘xxx’,这样组成的key=t1_i1_xxx???,但是不知道具体的行id,猜想会将t1_i1_xxx进行编码,前缀相同的都会逻辑存储在一起。

调度层PD
管理元数据

;