Linear Hashing
- 使用同一个hash 函数,但是根据该函数定义很多小函数
- 在小函数中使用mod函数,得到hash的值在每一位上的位置。
- 一个hi+1的值的值域范围是hi的2倍
- 按照固定的规则进行splitting,按照一轮一轮的顺序,所以需要处理bucket的overflow的情况。
每一轮都分为3个部分
- Split Pages: 对应从0到next
- To be split:对应从next pointer
- Split images: 对应从 2 i − 1 2^i - 1 2i−1到 2 i + 1 − 1 2^{i+1}-1 2i+1−1
- 使用一堆hash functions
- hi(k) 对应2
如果hi(k) < reference的话,则表示hi(k)的值所对应的bucket值已经被split,(一个bucket(桶)如果已经被split,则会根据二进制中最后的i+1位来辨别在哪个桶),那么我们则使用hi+1(k) 这个函数来判断其属于哪个bucket,如果hi(k)