(二)Hyper如何对DataBlock中的数据进行索引


上图中展示了一个4byte的列的索引在hyper中的PSMA怎么工作的。按照Hyper的索引方式,lookuptable的有4byte*2^8= 2^1024个entry。

其中,重要的的就是,如何将min和max之间的数据用这1024个entry表示。

那么entry的计算方式是:其中,r是byteofdelta中除开第一个非0 的byte后剩余的byte数量。

我们现在来验证可行性,假设这个列是4byte,min是0,max是2^32,那么如果我们探测2^32,得到的 i = 2 ^ 8 + 3 * 2^8 ,这个时候,依然会将index锁定在lookup table里面。

从上面的图片中可以看出来,对于数据小的部分,索引是更加精确的。所以,为了稍微平衡这种情况,Hyper中才会用数值与min之差作为delta,这样可以让更多的数据能够被映射到数据值小的对应的entry上面(数据值小的entry里面含有的数据量是更小的)。

不过这样带来的好处就是可以通过值找到相应的范围。而不需要遍历所有的元数据的范围信息再找到值在哪里(比如我们的系统)。

建立lookuptable过程,就是个scan列数据的过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值