阅读官方文档画如下路线图:数据库
储存:数据结构
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更新.
待继续..