1 .一种OpenGauss哈希连接中哈希表的访问方法,其特征在于,所述方法包括:
S1 .构建哈希表,完成对哈希桶数组与哈希冲突数组的填充;
S2 .从哈希桶数组下标为0的位置开始对哈希桶数组进行遍历,探测存储在该位置的数
据是否发生了哈希冲突;
S3 .根据步骤S2的探测结果,利用哈希桶数组与哈希冲突数组中存储的原始数据在原
始数据数组中的位置信息的空余空间,填充提示信息;
S4 .重复步骤S2和步骤S3直至完成对哈希桶数组的探测。
2.根据权利要求1所述的OpenGauss哈希连接中哈希表的访问方法,其特征在于,步骤
S1中所述哈希桶数组与哈希冲突数组中存储的是原始数据在原始数据数组中的位置信息,
所述位置信息由一个整形数据表示,采用int类型或long类型。
3 .根据权利要求1所述的OpenGauss哈希连接中哈希表的访问方法,其特征在于,步骤
S1中所述构建哈希表,包括:
S11 .从数据源获得M个数据,将其放入原始数据数组中;
S12.根据M值计算N值,N为从M开始的下一个以2为底次幂值;
S13 .遍历原始数据数组,计算每一个数据的哈希值H;
S14 .根据每个数据的哈希值H对N进行取模,通过取模结果计算出其在哈希桶数组中的
下标,并将该新数据在原始数据数组中的位置存储在哈希桶数组中;
S15 .重复步骤S13和步骤S14,直到将所有数据都存储在哈希桶数组与哈希冲突数组
中。
4 .根据权利要求3所述的OpenGauss哈希连接中哈希表的访问方法,其特征在于,S13中
所述计算每一个数据的哈希值H,当数据为整形数据时,计算哈希值H的方式是使用数据本
身的值。
5 .根据权利要求3所述的OpenGauss哈希连接中哈希表的访问方法,其特征在于,步骤
S14中所述将该数据在原始数据数组中的位置存储在哈希桶数组中,包括:
(1)当哈希桶数组中对应下标的存储位置空间没有被使用时,将新数据在原始数据数
组中的位置直接存储在该存储位置;
(2)当哈希桶数组中对应下标的存储位置空间已经被使用时,则先将其中的数据取出,
并根据该数据中的位置信息,将其存储到对应位置的哈希冲突数组中,然后将新数据在原
始数据数组中的位置存储在该存储位置。
6 .根据权利要求1所述的OpenGauss哈希连接中哈希表的访问方法,其特征在于,当所
述哈希桶数组与哈希冲突数组中存储的原始数据在原始数据数组中的位置信息为int类型
整形数据时,步骤S3中所述根据步骤S2的探测结果,利用哈希桶数组与哈希冲突数组中存
储的原始数据在原始数据数组中的位置信息的空余空间,填充提示信息,包括:
(1)数据间未发生哈希冲突,则在int类型的低位30bit填充原来的位置信息,在最高位
2bit填充提示信息01;
(2)数据间发生了哈希冲突,并且哈希桶数组中当前下标+1的空间被使用了,则在int
类型的低位30bit填充原来的位置信息,在最高位2bit填充提示信息11;
(3)数据间发生了哈希冲突,并且哈希桶数组中当前下标+1的空间未被使用,则在int
类型的低位30bit填充原来的位置信息,在最高位2bit填充提示信息10,并将本应存储在哈
权 利 要 求 书
1/2 页
2
相关文档
评论