TiDB初步概念

阅读官方文档画如下路线图:数据库

储存:数据结构

rockDB用于单机数据固化:彻底理解分布式

raft用于分布式数据同步:彻底理解设计

最终对外展现一整个彻底有序的Key-Value序列:彻底理解索引

重点:有序,就能够随机访问了,事关查询速度.文档

  Key-Value :在这里K-V并非死板的KV,因为有序的概念在里面,同时KV都是byte的数据结构,故逻辑上的键通常存在KEY里,但逻辑上的值也可能存在KEY里.字符串

整个储存是为了快速定位而设计的.同步

计算:next

就是如何利用超大有序K-V结构来实现关系数据库,很重点.数据

  行储存:Key:表前缀_行前缀_表ID_行ID Value: 字符串化的一行数据:彻底理解

      这个储存能够直接找到行,在有序的状况下也能够快速全表扫描.

  索引:Key:表前缀_索引前缀_表ID_索引ID_(列名值)  Value: rowID, 彻底理解

      能够经过列名+值直接找到rowID,在惟一索引状况下,复杂度恒为常数.

    Key:表前缀_索引前缀_表ID_索引ID_列名值_主键 Value: NULL, 敲黑板

      用于非惟一索引,在查询给定(列名值)的状况下,能够把范围缩小到全部主键所在的逻辑连续区域.

      但具体怎么缩小,还没想通,估计是首先定位第一个索引,而后next读取完,

      目前不理解如何定位到第一个索引,直接构造Key明显行不通,但随意猜想主键也挺扯淡,

      又多是查询KEY的分区记录,能够找到符合构造前缀的第一个KEY,而后复杂度就是N(索引数)了

  略过了:分布式schema更新.

待继续..

相关文章
相关标签/搜索