开发者学堂课程【NoSQL 数据库 Kudu 教程:了解读写数据流程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/723/detail/12914
了解读写数据流程
内容介绍:
一、 Kudu 写流程
二、 Kudu 读流程
三、 Kudu 更新流程
一、 Kudu 写流程
当 Client 请求写数据时,先根据主键从 Master Server 中获取要访问的目标Tablets ,然后到依次对应的 Tablet 获取数据。要注意, kudu 中需要设定主键,所以它存在主键约束,判断主键是否存在将会显得非常重要,如果一个主键已经存在,当再插入一个相同主键后,就会报错。一个 Tablet 中存在很多个 RowSets ,为了提升性能,要尽可能地减少要扫描的 RowSets 数量。
首先,我们先通过每个 RowSet 中记录的主键的(最大最小)范围,过滤掉一批不存在日标主键的RowSets ,然后在根据 Row Set 中的布隆过滤器,过滤掉确定不存在目标主键的 RowSets ,最后再通过 RowSets 中的 B ﹣树索引,精确定位目标主键是否存在。
如果主健己经存在,则报错(主键重复),否则就进行写数据(写 MemRowSet )。
二、 Kudu 读流程
数据读取过程大致如下:先根据要扫描数据的主键范围,定位到目标的 Tablets ,然后读取 Tablets 中的 RowSets 。
在读取每个 RowSet 时,先根据主键过滤要 scan 范围,然后加载范用内的 base data , 再找到对应的 delta stores ,应用所有变更,最后 union 上 MemRowSet 中的内容,返回数据给 Client 。
三、 kudu 更新流程
数据更新的核心是定位到待更新数据的位置,这块与写入的时候类似,等定位到具体位置后,然后将变更写到对应的 doltn store 中。