1. kudu:面向结构化数据的开源的table存储引擎,支持低延迟的随机存取以及高效的分析处理
2. kudu的内部实现原理如图所示:
3. kudu通过水平分区来实现数据的分布式存储,存储以每个partition即tablet为单位,并基于raft协议解决多个partition副本的一致性问题
4. kudu表会指定其所有column的一个有序子集为primary key,作为在update和delete时的索引并用于分区,具有唯一性,并不能通过alter来drop这些primary key
5. kudu目前不支持除primary key以外的二级索引和唯一性限制
6. kudu使用scan算子来查询table中的数据,scan使用projection来选择columns并支持两种类型的谓词来filter,一个是column与常量的对比,另一个是primary key的范围
7. kudu提供了API用于将数据存放在指定的tablet server上面
8. kudu集群包含一个master节点和多个tablet server节点,分别存储元数据和实际的数据
9. kudu对table进行横向分区,单个row将会基于其primary key分到特定的分区中,每个分区称为一个tablet,因此,单个insert或者update操作只会影响单个tablet
10. 在创建kudu表时必须指定分区模式,分区的原理:根据指定的分区模式计算出primary key对应的binary partition k

本文深入解析Kudu的内部机制,包括作为表存储引擎的特点,数据的分布式存储通过水平分区和Raft协议实现一致性,以及Kudu的主键、索引、Scan操作、数据存储结构(memrowset、diskrowset)和 compaction 过程。此外,还介绍了Kudu的Master节点如何管理元数据和集群协调。
最低0.47元/天 解锁文章
1981





