kudu中关于分区的概念有三个:partition,tablet,bucket。
概念:
「partition」类似hbase中的「region」也就是将整张表来分片存储管理,是一个逻辑上的概念。
「tablet」是分区中存储数据的最小单位,是物理概念,也就是数据在寻找存储位置的时候最终会落到一个确定的「tablet」中。
「bucket」这个概念是比较容易混淆的,「bucket」是在hash partitioning分区策略中才会出现的,是一个逻辑上的概念,其实一个「bucket」对应一个具体的「tablet」。
举例:
- 一张hash分区表中以host进行hash分区,那么我们描述的时候可以是host1会落在bucket1中,bucket1在物理存储上对应tablet1.这个例子是一维分区,「bucket」与「tablet」是简单的bucket1 --> tablet1对应关系
- 一张hash分区表中以host,metric进行分区,那么我们描述的时候可以说host1,metric1会落在bucket(host1,metric1)中,bucket(host1,metric1)在物理存储上对应tablet1.这个例子是二维分区也就是分区键有两个column组成,在寻找数据所在tablet的时候需要两次查找「bucket」才能找到对应的「tablet」
相关资料:kudu schema design